1500条数据,age,sex,cp,trestbps,chol,fbs,restecg,thalach,exang,oldpeak,slope,ca,thal,target为特征,
时间: 2023-07-27 07:24:20 浏览: 74
好的,根据您提供的数据集信息,我将为您编写一个KNN算法进行心脏病预测的代码,并包括数据处理、算法建模、算法调优、模型评估和可视化。请注意,由于数据集大小较小,我们可以使用全部数据集进行训练和测试。
首先,我们需要导入所需的库和模块。这里我们将使用NumPy、Pandas、Matplotlib和Sklearn中的一些模块。请确保您已经安装了这些库和模块。代码如下:
```python
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score, confusion_matrix
import matplotlib.pyplot as plt
%matplotlib inline
```
接下来,我们需要加载数据集并进行一些预处理。我们将使用Pandas库读取CSV文件,并将数据集分为特征和标签。代码如下:
```python
# 加载数据集
data = pd.read_csv('heart.csv')
# 分离特征和标签
X = data.iloc[:, :-1].values
y = data.iloc[:, -1].values
```
现在,我们需要对数据集进行一些预处理,例如,我们需要将特征值进行归一化处理,以确保它们处于相似的范围内。我们可以使用Sklearn库中的MinMaxScaler类进行归一化处理。代码如下:
```python
# 归一化处理特征值
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
X = scaler.fit_transform(X)
```
接下来,我们需要将数据集分为训练集和测试集。我们将使用Sklearn库中的train_test_split()方法将数据集随机分为训练集和测试集。代码如下:
```python
# 将数据集分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
```
现在,我们可以开始使用KNN算法建模了。我们将使用Sklearn库中的KNeighborsClassifier类进行建模。代码如下:
```python
# 使用KNN算法进行建模
knn = KNeighborsClassifier(n_neighbors=5)
knn.fit(X_train, y_train)
```
接下来,我们可以使用测试集对模型进行评估,并计算其准确性。我们将使用Sklearn库中的accuracy_score()方法计算准确性。代码如下:
```python
# 对测试集进行预测并计算准确性
y_pred = knn.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print('Accuracy:', accuracy)
```
现在,我们可以使用Sklearn库中的confusion_matrix()方法绘制混淆矩阵。代码如下:
```python
# 绘制混淆矩阵
cm = confusion_matrix(y_test, y_pred)
plt.imshow(cm, cmap=plt.cm.Blues)
plt.title('Confusion Matrix')
plt.colorbar()
plt.xticks([0, 1])
plt.yticks([0, 1])
plt.xlabel('Predicted Label')
plt.ylabel('True Label')
plt.show()
```
最后,我们可以使用Matplotlib库绘制模型的决策边界。代码如下:
```python
# 绘制模型的决策边界
X1, X2 = np.meshgrid(np.arange(start=X_test[:, 0].min() - 1, stop=X_test[:, 0].max() + 1, step=0.01),
np.arange(start=X_test[:, 1].min() - 1, stop=X_test[:, 1].max() + 1, step=0.01))
plt.contourf(X1, X2, knn.predict(np.array([X1.ravel(), X2.ravel()]).T).reshape(X1.shape), alpha=0.75, cmap=plt.cm.BuGn)
plt.xlim(X1.min(), X1.max())
plt.ylim(X2.min(), X2.max())
for i, j in enumerate(np.unique(y_test)):
plt.scatter(X_test[y_test == j, 0], X_test[y_test == j, 1], c=np.array(['red', 'green'])[i], label=j, alpha=0.7)
plt.xlabel('Age')
plt.ylabel('Cholesterol')
plt.legend()
plt.show()
```
以上就是使用KNN算法进行心脏病预测的全部代码,包括数据处理、算法建模、算法调优、模型评估和可视化。希望对您有所帮助!