Я пытался создать сценарий для вашей ситуации.
Я создал следующий фрейм данных:
col1 col2 col3
0 1 2 1
1 3 4 0
2 5 6 1
3 7 8 0
4 9 10 1
5 11 12 0
6 13 14 1
7 15 16 0
8 17 18 1
9 19 20 0
10 21 22 1
11 23 24 0
12 25 26 1
13 27 28 0
14 29 30 1
Я установил col1
и col2
для X и col3
для тебя. После этого я преобразовал X в массив numpy следующим образом. Разница лишь в том, что я использовал shuffle
в KFold
.
X = df[['col1', 'col2']]
y = df['col3']
X = np.array(X)
kf = KFold(n_splits=3, shuffle=True)
for train_index, test_index in kf.split(X):
X_train, y_train = X[train_index], y[train_index]
И это сработало хорошо. Поэтому, пожалуйста, проверьте мой код и ваш код и уточните его, если я что-то пропустил.
Обновление
Я предполагаю, что y2 - это y. Таким образом, у типа по-прежнему Series
, вам нужно использовать .iloc
для него. Следующий код работал хорошо.
data = {'col1':[30.5,45,1,99,6,5,4,2,5,7,7,3], 'col2':[99.5, 98, 95, 90,1,5,6,7,4,4,3,3],'col3':[23, 23.6, 3, 90,1,9,60,9,7,2,2,1]}
df = pd.DataFrame(data)
train, test = train_test_split(df, test_size=0.10)
X = train[['col1', 'col2']]
y = train['col3']
X = np.array(X)
kf = KFold(n_splits=3, shuffle=True)
for train_index, test_index in kf.split(X):
X_train, y_train = X[train_index], y.iloc[train_index]