выучите один хотенкодер неправильной формы

#python #scikit-learn #one-hot-encoding

Вопрос:

У меня есть массив

 y_train: array([ 0, 0, 0, -1, 1, 0, -1, 0, ..., -1, 0, 1], dtype=int64)  

Я сделал это:

 enc = OneHotEncoder() y_train = enc.fit_transform(y_train.reshape(1,-1))  

и в результате получилось так

 (0, 0) 1.0 (0, 1) 1.0 (0, 2) 1.0 (0, 3) 1.0 (0, 4) 1.0 (0, 5) 1.0  

Но чего я действительно хочу, так это чтобы он был закодирован в один код, как показано ниже:

 [1,0,0] [1,0,0] [0,1,0] [0,0,1] .....  

Как это исправить?

Ответ №1:

Вы должны использовать toarray() функцию после применения кодировки к вашей y_train переменной:

 from sklearn import preprocessing import numpy as np  y_train = np.array([0, 0, 0, -1, 1, 0, -1, 0, -1, 0, 1]).reshape(-1, 1) enc = preprocessing.OneHotEncoder() y_train = enc.fit_transform(y_train).toarray() print(y_train)  

И вы получите такой результат:

 [[0. 1. 0.]  [0. 1. 0.]  [0. 1. 0.]  [1. 0. 0.]  [0. 0. 1.]  [0. 1. 0.]  [1. 0. 0.]  [0. 1. 0.]  [1. 0. 0.]  [0. 1. 0.]  [0. 0. 1.]]