Como posso obter os nomes dos recursos de um OneHotEncoder incorporado em um ColumnTransformer?
O seguinte trecho de código:
import pandas as pd
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder
df = pd.DataFrame(data = [[1],[2]], columns = ['C'])
ohe = OneHotEncoder(sparse_output = False)
transformer = ColumnTransformer(transformers = [('encoder', ohe, ['C'])])
transformer.fit_transform(df)
ohe.get_feature_names_out()
resulta na seguinte mensagem de erro:
NotFittedError Traceback (most recent call last)
<ipython-input-1-46f41a3cf71a> in <cell line: 10>()
8 transformer = ColumnTransformer(transformers = [('encoder', ohe, ['C'])])
9 transformer.fit_transform(df)
---> 10 ohe.get_feature_names_out()
1 frames
/usr/local/lib/python3.10/dist-packages/sklearn/utils/validation.py in check_is_fitted(estimator, attributes, msg, all_or_any)
1388
1389 if not fitted:
-> 1390 raise NotFittedError(msg % {"name": type(estimator).__name__})
1391
1392
NotFittedError: This OneHotEncoder instance is not fitted yet. Call 'fit' with appropriate arguments before using this estimator.
Por que?
ColumnTransformer
clona seus transformadores, então o seuohe
realmente permanece inapto. Você pode acessar os componentes (instalados) de duas maneiras, por exemploObserve também que o
ColumnTransformer
próprio possui umget_feature_names_out
método.