如何获取在sklearn.cross_validation.cross_val_score中内部划分的折叠?

1 投票
2 回答
1552 浏览
提问于 2025-04-18 12:27

我正在使用:

sklearn.cross_validation.cross_val_score

来进行交叉验证,并获取每次运行的结果。

这个函数的输出是得分。

有没有办法获取在cross_val_score函数内部划分的那些折叠(分区)呢?

2 个回答

2

对于 cross_val_score 这个函数,默认的交叉验证方法是 StratifiedKFold,K 值为 3,适用于分类问题。你也可以使用 StratifiedKFold 来获取一个交叉验证的迭代器,然后按照示例中的方式循环处理这些数据分割。

2

在使用 cross_val_score 这个函数时,无法提取出内部的交叉验证分割,因为这个函数并没有提供相关的信息。正如在文档中提到的,它会使用 k 折交叉验证或者分层 k 折交叉验证,通常设置为 k=3

不过,如果你想要记录下使用的交叉验证分割,可以通过创建自己的交叉验证迭代器,然后在调用 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)

这样就能确保使用你指定的分割,而不是让它自己生成。

撰写回答