交叉验证的基本概念
交叉验证通常用于评估机器学习模型在未知数据上的性能。它将数据集分成k个不同的子集,然后进行k次训练和验证。在每次迭代中,选择一个子集作为测试集,其余的子集作为训练集。这样,每个子集都用作过测试集,因此可以得到k个不同的模型性能评估结果。
K折交叉验证
K折交叉验证是一种最常用的交叉验证方法。它将数据集分成k个相同的子集,然后依次选择一个子集作为测试集,其余的子集作为训练集。这个过程重复k次,每次选择不同的子集作为测试集。最后,我们可以得到k个不同的准确率或其他评估指标,并可以计算它们的平均值来评估模型的性能。
Python代码示例
下面是一个使用scikit-learn库进行K折交叉验证的Python代码示例:
from sklearn.model_selection import KFold, cross_val_score
from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression
# 加载数据集
iris = load_iris()
X = iris.data
y = iris.target
# 创建KFold对象,设置k=5
kf = KFold(n_splits=5, shuffle=True, random_state=42)
# 创建逻辑回归模型
model = LogisticRegression()
# 使用K折交叉验证评估模型性能
scores = cross_val_score(model, X, y, cv=kf)
# 输出每次迭代的评估结果和平均值
print("Scores: ", scores)
print("Mean score: ", scores.mean())