十折交叉验证python
时间: 2023-06-21 07:07:06 浏览: 95
十折交叉验证是一种常用的机器学习模型评估方法,它将数据集划分为10个等份(或称为“折”),每次使用其中一份作为测试集,剩下的九份作为训练集进行模型训练和评估。这样可以保证每个数据点都被用于测试和训练,并且可以减小数据集划分的随机性对结果的影响。
下面是一个使用Python实现十折交叉验证的示例代码:
```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
# 创建一个10折交叉验证器
kf = KFold(n_splits=10, shuffle=True)
# 创建一个逻辑回归模型
model = LogisticRegression()
# 进行10折交叉验证并输出平均准确率
accuracies = []
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.fit(X_train, y_train)
accuracy = model.score(X_test, y_test)
accuracies.append(accuracy)
average_accuracy = sum(accuracies) / len(accuracies)
print("平均准确率:", average_accuracy)
```
在上面的代码中,我们首先加载了一个经典的数据集iris,然后创建了一个包含10个折的交叉验证器。接着,我们创建了一个逻辑回归模型,并使用交叉验证器进行10折交叉验证,将每次测试的准确率保存在一个列表中,最后计算平均准确率并输出。
需要注意的是,KFold类的shuffle参数默认为False,即不进行随机划分,如果希望每次划分的数据集不同,需要将该参数设置为True。
阅读全文