python - 无法使用 category_encoders 的 fit_transform 对我的数据进行序数编码
问题描述
我正在尝试 fit_transformOrdinalEncoder
到我的datacategory_encoders
列之一。
我尝试查看的文档是:
import category_encoders as ce
# here i'm defining mapping for OrdinalEncoder
property_ordinal_mapping_1 = [{"col":"property_type", "mapping": [('Apartment', 1),('House', 2),('Condominium', 3),
('Townhouse', 4),('Loft', 5),('Other', 6),
('Guesthouse', 7),('Bed & Breakfast', 8),
('Bungalow', 9),('Villa', 10),('Dorm', 11),
('Guest suite', 12),('Camper/RV', 13),
('Timeshare', 14),('Cabin', 15),('In-law', 16),
('Hostel', 17),('Boutique hotel', 18),('Boat', 19),
('Serviced apartment', 20),('Tent', 21),('Castle', 22),
('Vacation home', 23),('Yurt', 24),('Hut', 25),
('Treehouse', 26),('Chalet', 27),('Earth House', 28),
('Tipi', 29),('Train', 30),('Cave', 31),
('Casa particular', 32),('Parking Space', 33),
('Lighthouse', 34),('Island', 35)
]
},
]
# preparing the OrdinalEncoder for fitting and transforming
property_encoder_1 = ce.OrdinalEncoder(mapping = property_ordinal_mapping_1, return_df = True, cols=["property_type"])
当我尝试时出现的问题fit_transfom
是:
df_train = property_encoder_1.fit_transform(air_cat_2)
错误:
TypeError Traceback (most recent call last)
<ipython-input-96-9cea1713182c> in <module>()
----> 1 df_train = property_encoder_1.fit_transform(air_cat_2)
/usr/local/lib/python3.6/dist-packages/sklearn/base.py in fit_transform(self, X, y, **fit_params)
551 if y is None:
552 # fit method of arity 1 (unsupervised transformation)
--> 553 return self.fit(X, **fit_params).transform(X)
554 else:
555 # fit method of arity 2 (supervised transformation)
/usr/local/lib/python3.6/dist-packages/category_encoders/ordinal.py in fit(self, X, y, **kwargs)
139 cols=self.cols,
140 handle_unknown=self.handle_unknown,
--> 141 handle_missing=self.handle_missing
142 )
143 self.mapping = categories
/usr/local/lib/python3.6/dist-packages/category_encoders/ordinal.py in ordinal_encoding(X_in, mapping, cols, handle_unknown, handle_missing)
288 for switch in mapping:
289 column = switch.get('col')
--> 290 X[column] = X[column].map(switch['mapping'])
291
292 try:
/usr/local/lib/python3.6/dist-packages/pandas/core/series.py in map(self, arg, na_action)
3380 """
3381 new_values = super(Series, self)._map_values(
-> 3382 arg, na_action=na_action)
3383 return self._constructor(new_values,
3384 index=self.index).__finalize__(self)
/usr/local/lib/python3.6/dist-packages/pandas/core/base.py in _map_values(self, mapper, na_action)
1216
1217 # mapper is a function
-> 1218 new_values = map_f(values, mapper)
1219
1220 return new_values
pandas/_libs/lib.pyx in pandas._libs.lib.map_infer()
TypeError: 'list' object is not callable
sklearn.preprocessing.OrdinalEncoder
有类似的错误。
我做错了什么以及如何解决这个问题。我仔细检查了我的专栏的类名并重写了整个代码,但似乎没有任何帮助;或者有没有其他方法可以做到这一点。
请不要将我的问题标记为重复。
解决方案
文档不正确。mapping
for现在的语法不同了。见这里:https ://github.com/scikit-learn-contrib/categorical-encoding/issues/193
推荐阅读
- java - 将 Toothpick DI 框架与 Java(仅限)项目一起使用
- r - 使用 dplyr 的组的不同过滤规则
- haskell - 为什么要加入。(flip fmap) 有类型 ((A -> B) -> A) -> (A -> B) -> B?
- javascript - 收集深度嵌套数据的平面数组
- docker - NiFi - 自动配置最大线程
- node.js - 如何从节点脚本获取 Microsoft Graph API 访问令牌?
- instagram-api - 如何阅读更高清的 instagram 头像图像?
- c - C 程序在使用 scanf 而不是 var=0 后停止工作
- kotlin - Kotlin - 删除片段的重复方法调用
- regex - Regx 查找以 word 开头并以 ?/end of line 结尾但不包含特定单词的字符串