AttributeError: у объекта 'OrdinalEncoder' нет атрибута 'category_mapping' - PullRequest
0 голосов
/ 08 октября 2019

Когда я использую следующую функцию, я получаю 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

1 Ответ

1 голос
/ 08 октября 2019

Не могли бы вы проверить, появляется ли category_mapping при запуске dir(encoder), если его нет в списке, возможно, вы используете версию кодера sklearn вместо Scdit-Learn-contrib OrdinalEncoder.

Когда я запускаю команду dir(encoder), появляется атрибут category_mapping:

[ ...
 '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']

Если вы запустите этот фрагмент, он должен отобразить отображение:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...