Ошибка метода OneHotEncoding в sklearn - PullRequest
0 голосов
/ 02 мая 2018

У меня есть фрейм данных, который я пока обозначу df, и я получаю ndarray следующим образом

Х = df.iloc [:, 5:]. Значения

который я хочу использовать для модели машинного обучения. Мне нужно горячо закодировать 12-й столбец X.

Используя sklearn, я сначала кодировал его следующим образом

from sklearn.preprocessing import LabelEncoder,OneHotEncoder
labelencoder_x=LabelEncoder()
df[:,12]=labelencoder_x.fit_transform(df[:,12])

и это прекрасно работает.

Далее я пробую горячее кодирование следующим образом

onehotencoder=OneHotEncoder(categorical_features=[12])
X=onehotencoder.fit_transform(X).toarray()

и я получаю следующую ошибку

ValueError: Input contains NaN, infinity or a value too large for 
dtype('float64').

Может ли кто-нибудь помочь мне в этом, я новичок в программировании на python и хочу узнать, что не так с тем, что я сделал, и как я могу это исправить. Я попытался выполнить некоторую отладку, посмотрев, есть ли np.nan в 12-м столбце, и я получил False, я также проверил тип каждого элемента в 12-м столбце, и это int.

1 Ответ

0 голосов
/ 02 мая 2018

Если у вас есть только один столбец как категориальный и вы хотите, чтобы он был в горячем виде. Стоит попробовать get_dummies(), который должен дать ожидаемый результат. Pandas Docs

...