sklearn TimeSeriesSplit Ошибка: KeyError: '[ 0 1 2 ...] не в индексе'
Я хочу использовать TimeSeriesSplit из sklearn на следующем фрейме данных для прогнозирования суммы:
Поэтому для подготовки 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