我用模型预测了一些数据,得到了这样的结果

[[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()

最佳答案

使用inverse_transformLabelEncoderOneHotEncoder

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)

关于python - 如何使用sklearn从ONE-HOT-ENCODED标签返回单列?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56266011/

10-12 23:14