K-кратная перекрестная проверка с RandomForest - PullRequest
0 голосов
/ 09 октября 2019

В настоящее время я пытаюсь использовать RandomForest, чтобы предсказать что-то, а также использовать перекрестную проверку в k-кратном порядке, чтобы минимизировать ошибку перекрестной проверки для min_samples_leaf. В настоящее время у меня возникают проблемы с настройкой моего кода, потому что я продолжаю сталкиваться с ошибкой, когда добираюсь до train_x = x[train_index]. Полученная ошибка отображается ниже.

from sklearn import model_selection
kf = model_selection.KFold(n_splits=5)

x = train
y = test

for m in range(0, 10): # vary min_samples_leaf

    dtr = ensemble.RandomForestRegressor(n_estimators = 15, min_samples_leaf = m, max_features = 10, criterion = 'mse')

    for train_index, test_index in kf.split(x):
        print("TRAIN:", train_index, "TEST:", test_index)
        train_x = x[train_index]
        train_y = y[test_index]
        regr = dtr.fit(train_x, train_y)

KeyError:

None of [Int64Index([15546, 15547, 15548, 15549, 15550, 15551, 15552, 15553, 15554,\n            15555,\n            ...\n            77718, 77719, 77720, 77721, 77722, 77723, 77724, 77725, 77726,\n            77727],\n           dtype='int64', length=62182)] are in the [columns]

1 Ответ

0 голосов
/ 09 октября 2019

У вас есть целая куча значений, извлеченных из kf.split (), и train_index, который вы должны вызвать x [train_index], находится не только в массиве x.

Код кажется правильным, поэтому я подозреваю, что формат данных в "train" (и, конечно, "x") что-то не так?

Ошибка говорит о том, что у вас есть тип Int64Index (тип панды для индекса IIRC) со значениями, которые больше, чем у x (максимальная длина 62182), поэтому определенно что-то пошло не так в ваших исходных данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...