【发布时间】:2014-07-08 07:37:19
【问题描述】:
我正在使用:
sklearn.cross_validation.cross_val_score
进行交叉验证并获取每次运行的结果。
这个函数的输出是分数。
有没有一种方法可以获取在 cross_val_score 函数内部分区的折叠(分区)本身?
【问题讨论】:
标签: python scikit-learn cross-validation
我正在使用:
sklearn.cross_validation.cross_val_score
进行交叉验证并获取每次运行的结果。
这个函数的输出是分数。
有没有一种方法可以获取在 cross_val_score 函数内部分区的折叠(分区)本身?
【问题讨论】:
标签: python scikit-learn cross-validation
没有办法提取cross_val_score 中使用的内部交叉验证拆分,因为此函数不会公开任何有关它的状态。如documentation 中所述,将使用带有k=3 的k-fold 或分层k-fold。
但是,如果您需要跟踪使用的交叉验证拆分,您可以通过创建自己的 cross validation iterators 来显式传入 cross_val_score 的 cv 参数:
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)
以便它使用您指定的拆分而不是滚动它自己的拆分。
【讨论】:
random_state 控制的分割存在随机性。如果您不指定,将使用numpy 的内部随机状态,并且多次运行的结果可能不同。对于KFold 的情况,随机性仅适用于shuffle=True。
cross_val_score 的默认交叉验证器是 StratifiedKFold,K=3 用于分类。您可以通过使用StratifiedKFold 并循环拆分如示例中所示来获得交叉验证迭代器。
【讨论】: