我已经使用模型预测了一些数据并获得了这种结果
[[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]]
基本上是目标列的一键编码标签。 现在,我想以某种方式返回到原始值的单个列。 我使用这些行进行编码。 我该如何回到单栏?
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()
答案 0 :(得分:5)
使用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)