горячее кодирование некоторых целых чисел в библиотеке sci-kit - PullRequest
1 голос
/ 17 марта 2020

enter image description here

Я пытаюсь выполнить однократное кодирование первого столбца с помощью следующего кода:

from sklearn.preprocessing import OneHotEncoder
enc = OneHotEncoder(categories = 'auto',sparse = False)
X[:,0] = enc.fit_transform(X[:,0]).toarray()

Но я получаю ошибку, которая говорит, что я должен изменить свои данные. Как можно в одно касание кодировать первый столбец, а затем добавить его ко всем данным?

1 Ответ

1 голос
/ 17 марта 2020

Ваша проблема в том, что вы передаете OHE массив 1d. Изменение формы как 2d, и вы в порядке go.

Доказательство

Предположим, у нас есть некоторые данные, которые похожи на ваши:

np.random.seed(42)
X = np.c_[np.random.randint(0,3,10),np.random.randn(10),np.random.randn(10)]
X
array([[ 2.        ,  1.57921282, -1.01283112],
       [ 0.        ,  0.76743473,  0.31424733],
       [ 2.        , -0.46947439, -0.90802408],
       [ 2.        ,  0.54256004, -1.4123037 ],
       [ 0.        , -0.46341769,  1.46564877],
       [ 0.        , -0.46572975, -0.2257763 ],
       [ 2.        ,  0.24196227,  0.0675282 ],
       [ 1.        , -1.91328024, -1.42474819],
       [ 2.        , -1.72491783, -0.54438272],
       [ 2.        , -0.56228753,  0.11092259]])

Тогда мы можем действовать следующим образом:

from sklearn.preprocessing import OneHotEncoder
oho = OneHotEncoder(sparse = False)
oho_enc = oho.fit_transform(X[:,0].reshape(-1,1)) # <--- you have a problem here
res = np.c_[oho_enc, X[:,1:]]
res
matrix([[ 0.        ,  0.        ,  1.        ,  1.57921282, -1.01283112],
        [ 1.        ,  0.        ,  0.        ,  0.76743473,  0.31424733],
        [ 0.        ,  0.        ,  1.        , -0.46947439, -0.90802408],
        [ 0.        ,  0.        ,  1.        ,  0.54256004, -1.4123037 ],
        [ 1.        ,  0.        ,  0.        , -0.46341769,  1.46564877],
        [ 1.        ,  0.        ,  0.        , -0.46572975, -0.2257763 ],
        [ 0.        ,  0.        ,  1.        ,  0.24196227,  0.0675282 ],
        [ 0.        ,  1.        ,  0.        , -1.91328024, -1.42474819],
        [ 0.        ,  0.        ,  1.        , -1.72491783, -0.54438272],
        [ 0.        ,  0.        ,  1.        , -0.56228753,  0.11092259]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...