pandas categorical https://pandas.pydata.org/pandas-docs/stable/categorical.html如何处理新的和看不见的关卡?我正在考虑一个类似 scikit-learn 的设置。目前,我有类似的东西: https ://gist.github.com/geoHeil/5caff5236b4850d673b2c9b0799dc2ce
def: fit()
for each column:
fit a label encoder:
def: transform()
for each column:
check if column was unseen
yes(unseen) replace
no: label encode
但这很慢。
显然,像 xgboost 或 lightbm 这样的决策树可以直接处理分类数据,即不需要手动处理这种缓慢的转换。但是当查看他们的代码
https://github.com/Microsoft/LightGBM/blob/master/python-package/lightgbm/sklearn.py#L532时,他们似乎使用LGBMLabelEncoder
的是标准的 scikit-learn LabelEncoder
。
我想知道如何处理看不见的数据。
如果需要手动转换,pandas.Categorical 是否允许更快的转换——即使新数据中有未见过的级别?
编辑
请参阅https://github.com/geoHeil/pythonQuestions/blob/master/categorical-encoding.ipynb了解我如何无法让 scikit-learn 的常见嫌疑人工作的概述。仍在寻找比我的解决方案更高效的东西。lightGBM https://github.com/Microsoft/LightGBM/issues/789还建议使用自定义编码策略。