2016-03-17 33 views
5

Patrzę na ten samouczek: https://www.dataquest.io/mission/74/getting-started-with-kaggleCo dokładnie robi program KFold w python?

Mam do części 9, dzięki czemu prognozy. Tam nie ma pewnych danych w dataframe nazwie Titanic, który jest następnie dzielona w fałdach używając:

# Generate cross validation folds for the titanic dataset. It return the row indices corresponding to train and test. 
# We set random_state to ensure we get the same splits every time we run this. 
kf = KFold(titanic.shape[0], n_folds=3, random_state=1) 

Nie jestem pewien, co to jest dokładnie to, co robi i rodzaj obiektu kf jest. Próbowałem czytać dokumentację, ale to nie pomogło. Ponadto są trzy fałdy (n_folds = 3), dlaczego w tym wierszu dostęp do pociągu i testu (a skąd wiem, że są one nazywane pociągiem i testem)?

for train, test in kf: 

Odpowiedz

4

KFold dostarczy wskaźniki pociągu/testu do podziału danych w pociągu i zestawy testów. Spowoduje to podzielenie zestawu danych na kolejnych zagięć (bez domyślnego tasowania). Każde kolejne fałdowanie jest następnie używane do sprawdzenia poprawności raz, podczas gdy pozostałe składanki k - 1 tworzą zbiór treningowy ().

Powiedzmy, masz jakieś indeksy danych od 1 do 10. W przypadku korzystania n_fold=k, w pierwszej iteracji otrzymasz i „th (i<=k) krotnie jako indeksów testowych i pozostały (k-1) fałdy (bez tego i” th krotnie) razem jako indeksy pociągów.

Przykład

import numpy as np 
from sklearn.cross_validation import KFold 

x = [1,2,3,4,5,6,7,8,9,10,12] 
kf = KFold(12, n_folds=3) 

for train_index, test_index in kf: 
    print (train_index, test_index) 

wyjściowy

składany 1 [4 5 6 7 8 9 10 11] [0 1 2 3]

Fold 2 [0 1 2 3 8 9 10 11] [4 5 6 7]

złóż 3 [0 1 2 3 4 5 6 7] [8 9 10 11]

+0

Rozumiem. Niezależnie od tego, czym jest n_folds, wciąż kończy się testowanie i zestaw treningowy. Jeśli n_folds wynosi 2, po prostu używasz połowę danych do szkolenia, a druga połowa do testowania, a następnie zamieniasz je. Czy rozumiem to poprawnie? – user

+1

Tak. Otrzymasz fałd i'th (1 <= i <= n_fold) jako test, a pozostałe fałdy jako trening. – qmaruf

Powiązane problemy