python k折交叉验证_机器学习之K折交叉验证
时间: 2023-07-26 07:10:18 浏览: 75
K折交叉验证是机器学习中常用的一种交叉验证方法,它可以有效地评估模型的泛化能力。在K折交叉验证中,数据集被分成K个大小相似的互斥子集,每次使用其中的K-1个子集作为训练集,剩下的一个子集作为测试集,重复进行K次,每次选取不同的测试集,并且将K次的测试结果平均。
Python中的sklearn库提供了K折交叉验证的API,可以方便地进行实现。以下是一个简单的示例代码:
```python
from sklearn.model_selection import KFold
from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression
iris = load_iris()
X, y = iris.data, iris.target
kf = KFold(n_splits=5, shuffle=True, random_state=42)
for train_index, test_index in kf.split(X):
X_train, X_test = X[train_index], X[test_index]
y_train, y_test = y[train_index], y[test_index]
model = LogisticRegression()
model.fit(X_train, y_train)
score = model.score(X_test, y_test)
print("Accuracy:", score)
```
在这个示例代码中,我们使用了鸢尾花数据集(iris),将数据集分成5份,每一份都轮流作为测试集进行训练和预测,最终输出每次的准确率。
需要注意的是,在K折交叉验证中,数据集的分割方式可能会影响到最终的评估结果,因此我们可以通过设置随机种子(random_state)来控制数据集的分割方式,以保证评估结果的稳定性。
阅读全文