sklearn TimeSeriesSplit Ошибка: KeyError: '[ 0 1 2 ...] не в индексе'

Я хочу использовать TimeSeriesSplit из sklearn на следующем фрейме данных для прогнозирования суммы: dataframe

Поэтому для подготовки X и Y я делаю следующее:

X = df.drop(['sum'],axis=1)
y = df['sum']

а затем накормить этих двоих, чтобы:

for train_index, test_index in tscv.split(X):
X_train01, X_test01 = X[train_index], X[test_index]
y_train01, y_test01 = y[train_index], y[test_index]

при этом я получаю следующую ошибку:

KeyError: '[ 0  1  2 ...] not in index'

Здесь X - это фрейм данных, и, очевидно, это вызывает ошибку, потому что, если я преобразую X в массив следующим образом:

X = X.values

Тогда это будет работать. Однако для более поздней оценки модели мне понадобится X в качестве кадра данных. Есть ли способ сохранить X как фрейм данных и передать его в tscv без преобразования в массив?

1 ответ

Как правильно сказал @Jarad, если вы обновили версию pandas, она не будет автоматически переключаться на целочисленную индексацию, как это было возможно в предыдущих версиях. Вам нужно явно использовать .iloc для целочисленной нарезки.

for train_index, test_index in tscv.split(X):
    X_train01, X_test01 = X.iloc[train_index], X.iloc[test_index]
    y_train01, y_test01 = y.iloc[train_index], y.iloc[test_index]

См. https://pandas.pydata.org/pandas-docs/stable/indexing.html

Другие вопросы по тегам