Что именно делает 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]