#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.]]