cross_val_score的交叉验证



在python中拟合数据时,我通常这样做:

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

我将我的数据分成两个块:一个用于训练,另一个用于测试。

之后我用:

拟合我的数据
model.fit(X_train,y_train)
y_pred = model.predict(X_test,y_test)

,我可以得到精度:

accuracy_score(y_test,y_pred)

我明白这些步骤。但是sklearn.model_selection.cross_val_score发生了什么?例如:

cross_val_score(estimator= model, X= X_train,y=y_train,cv=10). 

它是否在做我之前做过的所有事情,只是做了10次?

我必须把数据分割成训练集、测试集吗?从我的理解来看,它将数据拆分,拟合,预测测试数据并获得准确性分数。10次。

但是我没有看到训练和测试集有多大。我可以手动设置吗?还有,它们每次都是相同的尺寸吗?

函数" train_testrongplit ";使用分割比率随机分割训练集和测试集。

而下面的"cross_val_score"函数进行10倍交叉验证。

cross_val_score(estimator= model, X= X_train,y=y_train,cv=10)

在这种情况下,主要区别在于10-Fold CV不会打乱数据,并且折叠按照与原始数据相同的顺序循环。如果数据的顺序对交叉验证很重要,您应该批判性地思考,这取决于您的特定应用程序。

选择使用哪个验证方法:https://stats.stackexchange.com/questions/103459/how-do-i-know-which-method-of-cross-validation-is-best

您可以在这里阅读有关K-Fold的文档:https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.KFold.html#sklearn.model_selection.KFold

根据我的理解,如果你设置cv=10,它会将你的数据集分成10个折叠。如果你有1000行数据,也就是说900行是训练数据,剩下的100行是测试数据。因此,您不需要像在train_test_split中那样设置任何test_size

相关内容

  • 没有找到相关文章

最新更新