cross_val_score和KFold的区别

3
我是一名学习机器学习的人,我有一个疑问。有谁能告诉我以下两者之间的区别:-
from sklearn.model_selection import cross_val_score

并且

from sklearn.model_selection import KFold

我认为两种方法都用于K折交叉验证,但我不确定为什么要使用两种不同的代码来执行相同的函数。 如果我有所遗漏,请告诉我。(如果可能,请解释这两种方法之间的区别)
谢谢。

1
请阅读ML标签的描述。 - molbdnilo
2个回答

3
  • 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())

0

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)

其中model是您要评估的模型, data是训练数据, target是目标变量, scoring参数控制应用于估计器的度量标准,cv是拆分次数。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接