2011-11-26 20 views
5

ÈConvalida incrociata 10 * 10 volte in scikit-learn?

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

la strada giusta per il 10 * 10fold CV in scikit-learn? (Cambiando il random_state a 10 numeri diversi)

Perché non ho trovato alcun random_state parametro Stratified K-Fold o K-Fold e separato dal K-Fold sono sempre identici per gli stessi dati.

Se ShuffleSplit è il diritto, una preoccupazione è che essa è indicata

Nota: contrariamente ad altre strategie di cross-validazione, spaccature casuali non garanzia che tutte le pieghe sarà diverso, anche se questo è ancora molto probabile per dataset di dimensioni considerevoli

È sempre il caso per 10 * 10 volte CV?

risposta

9

Non sono sicuro di cosa intendi con convalida incrociata 10 * 10. La configurazione ShuffleSplit che fornisci ti farà chiamare il metodo di adattamento dello stimatore 10 volte. Se si chiama questo 10 volte in modo esplicito utilizzando un ciclo esterno o direttamente chiamare 100 volte con il 10% dei dati riservati per le prove in un unico ciclo, se si utilizza invece:

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

Se si vuole fare 10 corse di StratifiedKFold con k = 10 si può mischiare il set di dati tra le piste (che porterebbe a un totale di 100 chiamate al metodo in forma con un test treno/10% diviso 90% per ogni chiamata per adattarsi):

>>> 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) 
+0

Grazie, è esattamente quello che stavo cercando. A proposito, ho visto 42 molte volte in esempi sulla pagina web, qualche storia per quello? – Flake

+4

Stai facendo la domanda sbagliata :) 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 – ogrisel

+0

Lo sapevo! Ma ho dimenticato 42 è quello ... – Flake