首页 > 解决方案 > sklearn cross_val_score如何使用kfold?

问题描述

我是机器学习的新手,我试图了解cross_val_score使用 Kfold 将数据拆分为 k 折。

kf = KFold(n_splits=2)
cv_results =cross_val_score(model, X_train, Y_train, cv=kf)

我知道kfold拆分数据,但我尝试将其打印出来

dataset = [[1,1,1],[2,2,2],[3,3,3],[4,4,4],[5,5,5],[6,6,6],[7,7,7],[8,8,8]]
kf =  KFold(n_splits=2)
print kf

>>> KFold(n_splits=2, random_state=None, shuffle=False)

它没有显示 k 折叠,但是如何cross_val_score获得所有折叠?

标签: pythonpython-2.7scikit-learncross-validation

解决方案


您需要调用 Kf.split(dataset)以实际拆分数据。单击此处查看 KFold 的工作原理

只是为了说清楚,KFold是一个类而不是一个函数。

kf = KFold(n_splits=2)创建一个 KFold 对象。并且print kf只会打印出类对象。

当您调用时,cross_val_score(model, X_train, Y_train, cv=kf)您将对象传递kf给 cross_val_score 函数,该函数kf.split(X_train)将被调用以拆分X_train 为 2 折。Y_train也会被类似地拆分。


推荐阅读