cross_val_score与KFold的差异



我正在学习机器学习,我有这个疑问。谁能告诉我这两者的区别:-

from sklearn.model_selection import cross_val_score

from sklearn.model_selection import KFold

我认为两者都用于k折交叉验证,但我不确定为什么要为相同的功能使用两种不同的代码。如果有什么我错过了,请让我知道。(如果可能,请说明这两种方法的区别)

谢谢,

  • cross_val_score是一个计算数据并返回分数的函数。

  • 另一方面,KFold是一个类,它允许您将数据拆分为K折叠。

所以,它们是完全不同的。你可以制作K折的数据,并像这样在交叉验证中使用它:

# create a splitter object
kfold = KFold(n_splits = 10)       
# define your model (any model)
model = XGBRegressor(**params)     
# pass your model and KFold object to cross_val_score
# to fit and get the mse of each fold of data
cv_score = cross_val_score(model,
X, y, 
cv=kfold, 
scoring='neg_root_mean_squared_error')
print(cv_score.mean(), cv_score.std())

cross_val_score通过随机将训练集分成不同的子集(称为折叠),使用交叉验证来评估分数,然后在折叠上训练和评估模型,每次选择一个不同的折叠进行评估,并在其他折叠上进行训练。

cv_score = cross_val_score(model, data, target, scoring, cv)

KFold程序将有限的数据集划分为k个不重叠的折叠。k个折叠中的每一个都有机会被用作保留测试集,而所有其他折叠一起被用作训练数据集。总共k个模型在k个保留测试集上进行拟合和评估,并报告平均性能。

cv = KFold(n_splits=10, random_state=1, shuffle=True)
cv_score = cross_val_score(model, data, target, scoring, cv=cv)

,是你想要评估的模型,是训练数据,是目标变量,得分参数控制应用于估计器的度量和cv是分割的数目。

相关内容

  • 没有找到相关文章

最新更新