When I use the following function, I get the AttributeError
.
from category_encoders import OrdinalEncoder
def label_encode(input_data, col):
name = col +'_encoded'
encoder = OrdinalEncoder(return_df=True, handle_unknown='ignore')
input_data[name] = encoder.fit_transform(input_data[col].values).values - 1
encoder = dict(encoder.category_mapping[0]['mapping'])
return input_data, encoder, name
Could you check if category_mapping
shows up when you run dir(encoder)
if it does not appears in the list you might be using the sklearn version of the encoder instead of the scikit-learn-contrib OrdinalEncoder.
When I run the dir(encoder)
command the category_mapping attribute appears:
[ ...
'category_mapping',
'cols',
'drop_cols',
'drop_invariant',
'feature_names',
'fit',
'fit_transform',
'get_feature_names',
'get_params',
'handle_missing',
'handle_unknown',
'inverse_transform',
'mapping',
'ordinal_encoding',
'return_df',
'set_params',
'transform',
'verbose']
If you run this snippet it should display the mapping:
from category_encoders import *
import pandas as pd
from sklearn.datasets import load_boston
bunch = load_boston()
y = bunch.target
X = pd.DataFrame(bunch.data, columns=bunch.feature_names)
enc = OrdinalEncoder(cols=['CHAS', 'RAD']).fit(X, y)
numeric_dataset = enc.transform(X)
enc.category_mapping[0]['mapping']
0.0 1
1.0 2
NaN -2
dtype: int64