sklearn实现五折交叉验证
时间: 2024-04-29 09:22:16 浏览: 201
使用sklearn的cross_val_score进行交叉验证实例
Scikit-learn提供了KFold类来实现K折交叉验证,其中K是指将数据集分成K份,其中一份作为验证集,剩下的K-1份作为训练集,这样就可以进行K次训练和验证,最后将K次的验证结果取平均值作为模型的性能评估结果。
以下是一个使用KFold实现五折交叉验证的示例代码:
```python
from sklearn.model_selection import KFold
from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
# 加载鸢尾花数据集
iris = load_iris()
X, y = iris.data, iris.target
# 创建五折交叉验证器
kf = KFold(n_splits=5, shuffle=True, random_state=42)
# 定义逻辑回归模型
model = LogisticRegression()
# 进行五折交叉验证
for i, (train_index, val_index) in enumerate(kf.split(X, y)):
print(f"Fold {i+1}")
# 获取训练集和验证集
X_train, X_val = X[train_index], X[val_index]
y_train, y_val = y[train_index], y[val_index]
# 训练模型
model.fit(X_train, y_train)
# 预测验证集
y_pred = model.predict(X_val)
# 计算准确率
acc = accuracy_score(y_val, y_pred)
print(f"Accuracy: {acc:.4f}")
```
在以上代码中,我们首先加载鸢尾花数据集,并创建了一个五折交叉验证器。然后,我们定义了一个逻辑回归模型,并使用KFold的split方法将数据集分成训练集和验证集。在每个折叠中,我们训练模型,预测验证集,计算准确率并输出。
阅读全文