Как сделать inverse_transform в OneHotEncoder и LabelEncoder? - PullRequest
1 голос
/ 02 мая 2020

Я проверил, что OneHotEncoder не имеет inverse_transform() метода. Как вернуть значения путем обратного преобразования?

Код:

from sklearn.preprocessing import LabelEncoder, OneHotEncoder
from sklearn.compose import ColumnTransformer


base = pd.read_csv(caminho + "risco_credito.csv")

previsores = base.loc[:,["historia","divida","garantias","renda"]].values

classe = base.loc[:,"risco"].values


labelencorder_classe = LabelEncoder()
classe_enc = labelencorder_classe.fit_transform(classe)


onehotencorder = ColumnTransformer(transformers=[("OneHot", OneHotEncoder(), [0,1,2,3])],remainder='passthrough')

previsores_enc = onehotencorder.fit_transform(previsores)

Например: Classe_enc и previsores_enc, как выполнить обратное преобразование, то есть получить значения обратно путем преобразования?

Ответы [ 2 ]

1 голос
/ 02 мая 2020

Возможно, вы ссылаетесь на неправильную документацию. inverse_transform доступно для OneHotEncoder и ordinalEncoder.

См. здесь

>>> import numpy as np
>>> from sklearn.preprocessing import OneHotEncoder
>>> from sklearn.compose import ColumnTransformer
>>> x = np.random.choice(['orange','apple', 'mango'],size=(3,1))
>>> ct = ColumnTransformer(transformers=[("OneHot", OneHotEncoder(sparse=False), [0])],
                           remainder='passthrough')

>>> x_trans_ = ct.fit_transform(x)
>>> ct.named_transformers_['OneHot'].inverse_transform(x_trans_)
array([['orange'],
       ['orange'],
       ['apple']], dtype='<U6')

Аналогично, вы можете сделать это для ordinalEncoder, см. здесь

1 голос
/ 02 мая 2020

Вы можете использовать функцию argmax из numpy, чтобы получить индекс элемента массива с максимальным значением (это будет индекс элемента, который равен 1, так как другие значения должны быть 0). Затем вы можете использовать словарь, чтобы связать этот индекс с меткой класса, если это необходимо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...