如何获取sklearn.cross_validation.cross_val_score内部分区的折叠本身?

时间:2014-07-08 07:37:20

标签: python scikit-learn cross-validation

我正在使用:

  

sklearn.cross_validation.cross_val_score

进行交叉验证并获得每次运行的结果。

此功能的输出是分数。

是否有一种方法来获取cross_val_score函数内部分区的折叠(分区)本身?

2 个答案:

答案 0 :(得分:2)

cross_val_score的默认交叉验证器是StratifiedKFold,K = 3用于分类。您可以通过使用StratifiedKFold并循环遍历拆分来获得交叉验证迭代器,如示例所示。

答案 1 :(得分:2)

没有办法提取cross_val_score中使用的内部交叉验证分割,因为此函数不会暴露任何关于它的状态。如documentation中所述,将使用带有k=3的k折叠或分层k折叠。

但是,如果您需要跟踪所使用的交叉验证拆分,则可以通过创建自己的cross validation iterators明确传递cv cross_val_score参数:

from sklearn.cross_validation import KFold, cross_val_score
from sklearn.datasets import load_iris
from sklearn.svm import SVC

iris = load_iris()
kf = KFold(len(iris.target), 5, random_state=0)
clf = SVC(kernel='linear', C=1)
scores = cross_val_score(clf, iris.data, iris.target, cv=kf)

这样它就可以使用你指定的分割而不是自己滚动。