Python 如何使用sklearn从单列热编码标签返回到单列?

Python 如何使用sklearn从单列热编码标签返回到单列?,python,scikit-learn,one-hot-encoding,Python,Scikit Learn,One Hot Encoding,我用模型预测了一些数据,得到了这样的结果 [[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']=l

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

[[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_变换(df.candidate)
候选者_ohe=OneHotEncoder()
Y=candidate_ohe.fit_transform(df.candidate_encoded.values.reforme(-1,1)).toarray()

使用
标签编码器
OneHotEncoder的
逆变换

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

s = pd.Series(['a', 'b', 'c'])
le = LabelEncoder()
ohe = OneHotEncoder(sparse=False)
s1 = le.fit_transform(s)
s2 = ohe.fit_transform(s.to_numpy().reshape(-1, 1))
你所拥有的:

# s1 from LabelEncoder
array([0, 1, 2])

# s2 from OneHotEncoder
array([[1., 0., 0.],
       [0., 1., 0.],
       [0., 0., 1.]])
你应该做什么:

inv_s1 = le.inverse_transform(s1)
inv_s2 = ohe.inverse_transform(s2).ravel()
输出:

# inv_s1 == inv_s2 == s
array(['a', 'b', 'c'], dtype=object)

尝试
np.argmax(results,axis=-1)
返回单个列。谢谢,这正是我需要的!!