1
resposta

ERRO: Object has no attribute get_feature_names_out

Gente,

eu rodei o código abaixo e apareceu um erro:

dados_musicas_dummies = pd.concat([dados2, pd.DataFrame(colunas_ohe, columns=ohe.get_feature_names_out(['artists']))], axis=1)
dados_musicas_dummies

AttributeError: 'OneHotEncoder' object has no attribute 'get_feature_names_out'

O que estou fazendo de errado?

1 resposta

Oi Ana,

pelo que entendi pode ser um problema de versão na sua biblioteca. Qual versão vc está usando?

Eu dei uma conferida nos changelogs lá da scikit-learn e eles estão implementando esse método get_feature_names_out nas classes, não vi nenhuma menção direta ao OneHotEncoder, mas tem a várias classes do mesmo pacote.

Também fiz um teste aqui no meu ambiente se conseguia ter esse mesmo tipo de erro, mas consegui executar. Minha versão é a estável mais atual. Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Para fazer um teste rápido usei apenas os dados de um artigo explicando sobre OneHotEncoder: Insira aqui a descrição dessa imagem para ajudar na acessibilidade

from sklearn.preprocessing import OneHotEncoder
import pandas as pd

ohe = OneHotEncoder()
# creating initial dataframe
bridge_types = ('Arch','Beam','Truss','Cantilever','Tied Arch','Suspension','Cable')
bridge_df = pd.DataFrame(bridge_types, columns=['Bridge_Types'])# converting type of columns to 'category'
bridge_df['Bridge_Types'] = bridge_df['Bridge_Types'].astype('category')# Assigning numerical values and storing in another column
bridge_df['Bridge_Types_Cat'] = bridge_df['Bridge_Types'].cat.codes

enc_df = pd.DataFrame(ohe.fit_transform(bridge_df[['Bridge_Types_Cat']]).toarray())
bridge_df = bridge_df.join(enc_df)
ohe.get_feature_names_out()

Link de onde peguei o exemplo: https://towardsdatascience.com/categorical-encoding-using-label-encoding-and-one-hot-encoder-911ef77fb5bd