Из того, что я вижу, индекс вашего фрейма данных начинается с 10, а не с 0, и, как вы сказали, для разделения от sklearn используется индекс, начинающийся с 0. Одним из решений является сброс индекса вашего фрейма данных с помощью:
df = df.reset_index(drop=True)
Другое решение - использовать .iloc на вашем фрейме данных, чтобы он выглядел следующим образом (Предполагая, что y является массивом, если это фрейм данных, вам также придется использовать .iloc там).
for train_index, test_index in kf.split(X_train, y_train):
model.fit(X.iloc[train_index], y[train_index])
y_pred = model.predict(X.iloc[test_index])
Третье решение - преобразовать ваш фрейм данных в массив.
for train_index, test_index in kf.split(X_train, y_train):
model.fit(X.values[train_index], y[train_index])
y_pred = model.predict(X.values[test_index])
Редактировать: я даже вижу 4-е решение, которое может быть тем, которое вам нужно.Вы можете просто сделать df.index.values [train_index], чтобы получить массив индексов в наборе поездов.