是
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_state
或 Stratified 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/