在scikit-learn中进行10*10倍交叉验证?

Fla*_*ake 7 python machine-learning scikits scikit-learn

class sklearn.cross_validation.ShuffleSplit(
    n, 
    n_iterations=10, 
    test_fraction=0.10000000000000001, 
    indices=True, 
    random_state=None
)
Run Code Online (Sandbox Code Playgroud)

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

因为我没有发现任何random_state参数Stratified K-FoldK-Fold从单独的K-Fold,始终是相同的数据相同.

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

注意:与其他交叉验证策略相反,随机拆分并不能保证所有折叠都不同,尽管这对于相当大的数据集来说仍然很可能

这总是10*10倍CV的情况?

ogr*_*sel 10

我不确定10*10交叉验证是什么意思.您提供的ShuffleSplit配置将使您调用估算器的拟合方法10次.如果你通过显式使用外部循环调用10次,或者直接调用它100次,其中10%的数据保留用于在单个循环中进行测试,如果你使用的话:

>>> ss = ShuffleSplit(X.shape[0], n_iterations=100, test_fraction=0.1,
...     random_state=42)
Run Code Online (Sandbox Code Playgroud)

如果你想在k = 10的情况下进行10次StratifiedKFold运行,你可以在运行之间对数据集进行混洗(这将导致100次调用fit方法,每次调用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)
Run Code Online (Sandbox Code Playgroud)

  • 你问的是错误的问题:) http://en.wikipedia.org/wiki/42_(Hitchhiker%27s_Guide_to_the_Galaxy)#Answer_to_the_Ultimate_Question_of_Life.2C_the_Universe.2C_and_Everything_.2842.29 (4认同)
  • 更严重的是,在示例和测试中,我们希望具有可重现的结果,因此我们将PRNG种子固定为任意值.随意调整值,结果仍应"看起来不错"但有时略有不同(某些算法具有非凸的目标函数和几个良好的局部最优). (3认同)