scikit-learn - AttributeError:“OrdinalEncoder”对象没有属性“category_mapping”
问题描述
当我使用以下功能时,我得到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
解决方案
如果它没有出现在列表中,您能否检查是否category_mapping
在运行时dir(encoder)
显示,您可能使用的是编码器的 sklearn 版本而不是 scikit-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
推荐阅读
- python - 如何根据作为值列表的列值扩展熊猫数据框
- algorithm - 我试图找到以下算法的复杂性:
- html - HTML div 重叠
- django - Heroku Django App 部署缺少一些 CSS
- javascript - 添加活动类 On react with out state 并使用 JS dom 切换
- web - 使用 Clojure,如果前端使用的端口与我的后端不同,如何将会话 cookie 发送到我的前端?
- java - 最大和子数组,使得开始值和结束值相同
- c++ - 更改 {} 的 Clang 格式并访问修饰符
- json - Power BI:将来自无序 JSON 对象的查找值放在正确的列中
- flutter - Flutter getx:当我不使用导航器时,将每个绑定分隔在自己的绑定中