class sklearn.cross_validation.ShuffleSplit(
    n,
    n_iterations=10,
    test_fraction=0.10000000000000001,
    indices=True,
    random_state=None
)

scikit-learn 中 10*10fold CV 的正确方法? (通过将 random_state 更改为 10 个不同的数字)

因为我没有在 random_stateStratified K-Fold 中找到任何 K-Fold 参数,并且与 K-Fold 的分离对于相同的数据总是相同的。

如果 ShuffleSplit 是正确的,一个问题是它被提及



10*10 倍的 CV 总是如此吗?

最佳答案

我不确定您所说的 10*10 交叉验证是什么意思。您提供的 ShuffleSplit 配置将使您调用 estimator 的 fit 方法 10 次。如果您通过显式使用外部循环调用它 10 次,或者直接调用它 100 次并在单个循环中保留 10% 的数据用于测试,如果您改为使用:

>>> ss = ShuffleSplit(X.shape[0], n_iterations=100, test_fraction=0.1,
...     random_state=42)

如果您想在 k=10 的情况下执行 10 次 StratifiedKFold 运行,您可以在两次运行之间对数据集进行洗牌(这将导致对 fit 方法的总共 100 次调用,每次调用拟合时使用 90% 训练/10% 测试拆分) :
>>> from sklearn.utils import shuffle
>>> from sklearn.cross_validation import StratifiedKFold, cross_val_score
>>> for i in range(10):
...    X, y = shuffle(X_orig, y_orig, random_state=i)
...    skf = StratifiedKFold(y, 10)
...    print cross_val_score(clf, X, y, cv=skf)

关于python - scikit-learn 中的 10*10 折交叉验证?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8281034/

10-09 20:15
查看更多