2015-09-16 11 views
7

Jako przykład krzyżowej walidacji bez wstępnego przetwarzania, mogę zrobić coś takiego:Jak używać wstępnego przetwarzania/normalizacji scikita wraz z walidacją krzyżową?

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) 

Chciałbym Preprocesuj moich danych przy użyciu coś jak

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

Ale to nie byłoby dobry pomysł, aby to zrobić przed ustaleniem walidacji krzyżowej, ponieważ wtedy zestawy szkoleniowe i testowe będą znormalizowane razem. W jaki sposób skonfigurować sprawdzanie krzyżowe, aby osobno przy każdym uruchomieniu wstępnie przetworzyć odpowiednie zestawy treningowe i testowe?

Odpowiedz

5

Zgodnie z dokumentacją, jeśli zatrudniasz Pipeline, możesz to zrobić za Ciebie. Z docs, tuż powyżej sekcji 3.1.1.1, kopalnia nacisk:

Równie ważne jest, aby przetestować predyktorem na danych odstawianego od treningu przerób (takich jak normalizacja, selekcji cech, itp) podobnie podobne transformacje danych należy wyciągnąć z zestawu szkoleniowego i zastosować do przetrzymywanych danych do przewidywania. [...] Pipeline ułatwia komponowanie estymatorów, pod warunkiem, że to zachowanie będzie podlegać walidacji krzyżowej [.]

Więcej istotnych informacji na temat dostępnych rurociągów: here.

Powiązane problemy