Как вернуться от меток ONE-HOT-ENCODED к одной колонке, используя sklearn? - PullRequest
2 голосов

Я предсказал некоторые данные, используя модель и получая результаты такого типа

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

, которые в основном представляют собой метки с горячим кодированием целевого столбца.Теперь я хочу вернуться к одному столбцу исходных значений.Я использовал эти строки для кодирования.Как я могу вернуться к столбцу sinle?

le_candidate = LabelEncoder()
df['candidate_encoded'] = le_candidate.fit_transform(df.Candidate)
candidate_ohe = OneHotEncoder()
Y = candidate_ohe.fit_transform(df.candidate_encoded.values.reshape(-1, 1)).toarray()

1 Ответ

5 голосов
/ 23 мая 2019

Используйте inverse_transform из LabelEncoder и OneHotEncoder:

import pandas as pd
from sklearn.preprocessing import LabelEncoder, OneHotEncoder

s = pd.Series(['a', 'b', 'c'])
le = LabelEncoder()
ohe = OneHotEncoder(sparse=False)
s = le.fit_transform(s)
s = ohe.fit_transform(s.reshape(-1,1))
print(s)

Что у вас есть:

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

Что вы должны сделать:

inv_s = ohe.inverse_transform(s)
inv_s = le.inverse_transform(inv_s.astype(int).ravel())
inv_s

Вывод:

array(['a', 'b', 'c'], dtype=object)
...