对心脏病预测的案例进行交叉验证
时间: 2024-05-05 12:20:51 浏览: 6
好的,以下是使用交叉验证对心脏病预测的案例的示例代码:
```python
import pandas as pd
from sklearn.model_selection import StratifiedKFold
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
# 加载数据集
data = pd.read_csv('heart.csv')
# 分离特征和标签
X = data.drop('target', axis=1)
y = data['target']
# 标准化特征
scaler = StandardScaler()
X = scaler.fit_transform(X)
# 定义逻辑回归模型
clf = LogisticRegression()
# 定义 5 折分层交叉验证器
cv = StratifiedKFold(n_splits=5, shuffle=True, random_state=42)
# 定义空列表用于存储每个模型的准确度
accuracies = []
# 进行交叉验证
for train_index, test_index in cv.split(X, y):
# 将数据集分为训练集和测试集
X_train, X_test = X[train_index], X[test_index]
y_train, y_test = y[train_index], y[test_index]
# 训练模型
clf.fit(X_train, y_train)
# 预测测试集并计算准确度
y_pred = clf.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
# 将准确度添加到列表中
accuracies.append(accuracy)
# 打印每个模型的准确度和平均准确度
print('Accuracies:', accuracies)
print('Average accuracy:', sum(accuracies) / len(accuracies))
```
这段代码首先加载了心脏病数据集并将其分为特征和标签。然后,它使用 `StandardScaler` 对特征进行标准化,以确保每个特征的值都具有相似的范围。接下来,它定义了一个逻辑回归模型,并使用 `StratifiedKFold` 定义了一个 5 折分层交叉验证器。然后,它遍历每个交叉验证的折叠,并将数据集分为训练集和测试集。在每个折叠中,它使用训练集训练模型,并在测试集上进行预测以计算准确度。最后,它将每个模型的准确度存储在一个列表中,并计算平均准确度。
请注意,此示例仅使用了逻辑回归模型并使用了 5 折交叉验证。你可以使用不同的模型和不同的交叉验证策略,以找到最佳的预测模型。