knn算法预测心脏病数据集
时间: 2023-07-26 18:03:45 浏览: 153
KNN算法(K-Nearest Neighbors)是一种基于实例的学习(Instance-based Learning)方法,用于分类和回归。它的基本思想是:对于一个新的输入实例,根据其k个最近邻的训练样本的标签来预测其标签。在这里,我们使用KNN算法来预测心脏病数据集中是否患有心脏病。
首先,我们需要加载数据集并进行预处理。可以使用pandas库来读取CSV文件,然后使用train_test_split函数将数据集分为训练集和测试集。
```python
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score
# 读取数据集
data = pd.read_csv('heart.csv')
# 划分数据集
X = data.drop('target', axis=1)
y = data['target']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 数据归一化
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
```
接下来,我们创建一个KNN分类器,并使用训练集对其进行训练。然后,使用测试集来评估分类器的准确性。
```python
# 创建KNN分类器
knn = KNeighborsClassifier(n_neighbors=5)
# 训练分类器
knn.fit(X_train_scaled, y_train)
# 预测测试集
y_pred = knn.predict(X_test_scaled)
# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print('Accuracy:', accuracy)
```
最后,我们可以使用训练好的模型对新数据进行预测。
```python
# 预测新数据
new_data = pd.DataFrame([[63, 1, 3, 145, 233, 1, 0, 150, 0, 2.3, 0, 0, 1]],
columns=X.columns)
new_data_scaled = scaler.transform(new_data)
prediction = knn.predict(new_data_scaled)
print('Prediction:', prediction)
```
以上代码演示了如何使用KNN算法预测心脏病数据集。
阅读全文