Что именно делает KFold в python?

Я смотрю на этот учебник:https://www.dataquest.io/mission/74/getting-started-with-kaggle

я добрался до части 9, делать прогнозы. Там есть некоторые данные в фрейме данных под названием titanic, который затем делится на складки, используя:

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

Я не уверен, что именно он делает и какой объект kf. Я попытался прочитать документацию, но это не очень помогло. Кроме того, есть три складки (n_folds=3), Почему это только позже доступ к поезду и тесту (и как я знаю, что они называются поездом и тестом) в этой линии?

for train, test in kf:

1 ответов


KFold предоставит индексы поездов / тестов для разделения данных в поездах и тестовых наборах. Он разделит набор данных на k подряд складки (без перетасовки по умолчанию).Каждая складка затем используется набор проверки один раз в то время как k - 1 оставшиеся складки образуют тренировочный набор (источник).

допустим, у вас есть некоторые индексы данных от 1 до 10. Если вы используете n_fold=k в первой итерации вы получите i ' th (i<=k) сложить как тестовые индексы и оставшиеся (k-1) складки (без этого i'й раз) вместе, как железнодорожный индексы.

пример

import numpy as np
from sklearn.cross_validation import KFold

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

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

выход

фолд 1: [ 4 5 6 7 8 9 10 11] [0 1 2 3]

фолд 2: [ 0 1 2 3 8 9 10 11] [4 5 6 7]

фолд 3: [0 1 2 3 4 5 6 7] [ 8 9 10 11]