如何使用sklearn从ONE-HOT-ENCODED标签返回单列?

Юли*_*леб 2 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]]
Run Code Online (Sandbox Code Playgroud)

基本上是目标列的一键编码标签。现在,我想以某种方式返回到原始值的单个列。我使用这些行进行编码。我如何回到单柱?

[[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]]
Run Code Online (Sandbox Code Playgroud)

Chr*_*ris 5

使用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)
Run Code Online (Sandbox Code Playgroud)

你有什么:

[[1. 0. 0.]
 [0. 1. 0.]
 [0. 0. 1.]]
Run Code Online (Sandbox Code Playgroud)

您应该做什么:

inv_s = ohe.inverse_transform(s)
inv_s = le.inverse_transform(inv_s.astype(int).ravel())
inv_s
Run Code Online (Sandbox Code Playgroud)

输出:

array(['a', 'b', 'c'], dtype=object)
Run Code Online (Sandbox Code Playgroud)