2016-03-17 8 views
5

Ich schaue auf dieses Tutorial: https://www.dataquest.io/mission/74/getting-started-with-kaggleWas macht KFold in Python genau?

Ich habe zu Teil 9, Vorhersagen zu machen. Dort gibt es einige Daten in einem Datenrahmen genannt titanic, die dann in Falten oben mit unterteilt:

# 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) 

ich es genau tut und was Art nicht sicher bin, was ist der Gegenstand kf. Ich habe versucht, die Dokumentation zu lesen, aber es hat nicht viel geholfen. Auch gibt es drei Falten (n_falten = 3), warum ist es später nur Zugriff Zug und Test (und wie kann ich wissen, dass sie Zug und Test genannt werden) in dieser Linie?

for train, test in kf: 

Antwort

4

KFold wird Zug-/Testindizes bereitstellen, um Daten in Zug- und Testsätzen aufzuteilen. Es wird Datensatz in k aufeinander folgenden Falten (ohne Mischen standardmäßig) teilen. Jede Falte wird dann ein Validierungsset einmal verwendet, während die k - 1 verbleibenden Falten bilden das Trainingssatz (source).

Lassen Sie uns sagen, Sie einige Daten-Indizes von 1 bis 10 haben Wenn Sie n_fold=k verwenden, in der ersten Iteration Sie i 'th (i<=k) Falte als Testindizes und die verbleibenden (k-1) Falten (ohne dass i -te fach) erhalten wird zusammen Zugindizes.

Ein Beispiel

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) 

Output

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

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

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

+0

Ich verstehe es. Was auch immer n_folds ist, Sie haben immer noch nur ein Test- und ein Trainingset. Wenn n_folds 2 ist, dann verwenden Sie nur die Hälfte der Daten für das Training und die andere Hälfte für das Testen, und tauschen Sie sie dann aus. Verstehe ich das richtig? – user

+1

Ja. Sie erhalten die i'th (1 <= i <= n_fold) Falte als Test und verbleibende Falten als Training. – qmaruf