y
- ваша целевая переменная, то есть то, что вы пытаетесь предсказать. Это одномерный массив, и если вы позвоните y.shape
, вы получите
>>>y.shape
(10,)
Вот почему вы можете сделать ошибку индекса - y.shape[1]
выходит за пределы.
Вы не должны кодировать целевую переменную в горячем режиме - вместо этого целевое кодирование. То есть замените последнюю строку на:
y = pd.Categorical(y).codes
Тогда y
будет
array([0, 1, 0, 0, 1, 1, 0, 1, 0, 1], dtype=int8)
, где 0
соответствует «не купленному», а 1
- "купил"