Skip to content Skip to sidebar Skip to footer

How To Go Back From One-hot-encoded Labels To Single Column Using Sklearn?

I have predicted some data using model and getting this kind of results [[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

Solution 1:

Use inverse_transform of LabelEncoder and 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))

What you have:

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

# s2 from OneHotEncoder
array([[1., 0., 0.],
       [0., 1., 0.],
       [0., 0., 1.]])

What you should do:

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

Output:

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

Post a Comment for "How To Go Back From One-hot-encoded Labels To Single Column Using Sklearn?"