2014-07-08 27 views

回答

2

没有办法提取cross_val_score中使用的内部交叉验证拆分,因为此函数不公开任何关于它的状态。如documentation中所述,将使用具有k=3的k倍或k倍分层。

然而,如果你需要跟踪使用交叉验证分裂的,你可以明确的cross_val_scorecv参数传递通过创建自己的cross validation iterators

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) 

,以便它使用您指定的拆分而不是自己滚动。

+0

我想确定一些东西,在拆分分区时是否有任何随机性?或者为相同的kfold设置和目标标签生成相同的分区? – eman

+1

在由参数''random_state''控制的分割中存在随机性。如果你没有指定,将会使用''numpy''的内部随机状态,并且多次运行的结果可能会不同。对于''KFold''的情况,只有在''shuffle = True''时才会使用随机性。 StratifiedKFold中的 –

+0

没有名为“shuffle”或“random_state”的参数,那么情况如何? – eman

2

cross_val_score的默认交叉验证器是K = 3的分层KFold用于分类。您可以使用StratifiedKFold来代替交叉验证迭代器,并按照示例中所示循环遍历拆分。

+0

是的,我知道我可以做到这一点,但cross_val_score节省了很多努力,所以我正在寻找一种方法来提取褶皱,同时使用它。 – eman

+0

没有一个。 –