2015-09-16 6 views
7

Come esempio di convalida incrociata senza alcuna pre-elaborazione, posso fare qualcosa di simile:Come utilizzare la preelaborazione/normalizzazione di scikit insieme alla convalida incrociata?

tuned_params = [{"penalty" : ["l2", "l1"]}] 
    from sklearn.linear_model import SGDClassifier 
    SGD = SGDClassifier() 
    from sklearn.grid_search import GridSearchCV 
    clf = GridSearchCV(myClassifier, params, verbose=5) 
    clf.fit(x_train, y_train) 

Vorrei pre-elaborare i miei dati utilizzando qualcosa di simile

from sklearn import preprocessing 
x_scaled = preprocessing.scale(x_train) 

Ma non sarebbe una buona idea di fare questo prima di impostare la convalida incrociata, perché quindi i set di allenamento e di test saranno normalizzati insieme. Come si configura la convalida incrociata per sottoporre a preprogrammazione i set di allenamento e test corrispondenti separatamente per ciascuna corsa?

risposta

5

Per la documentazione, se si impiega Pipeline, questo può essere fatto per voi. Dal docs, appena sopra la sezione 3.1.1.1, l'enfasi è mia:

Così come è importante testare un predittore su dati tenutasi-out dalla formazione, pre-elaborazione (come ad esempio la standardizzazione, la selezione funzione, etc.) e simili trasformazioni di dati simile dovrebbero essere apprese da un insieme di formazione e applicate a dati detenuti-out per la previsione [...] un oleodotto rende più facile comporre stimatori, fornendo questo comportamento sotto la convalida incrociata [.]

Ulteriori informazioni sulle tubazioni disponibili here.