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#L532LGBMLabelEncoder
を見ると、標準の scikit-learnを使用しているようですLabelEncoder
。
目に見えないデータをどのように処理できるのだろうか。
手動変換が必要な場合、 pandas.Categorical を使用すると、新しいデータに見えないレベルがある場合でも、より迅速に変換できますか?
編集
scikit-learn の通常の容疑者を機能させることができなかった方法の概要については、https://github.com/geoHeil/pythonQuestions/blob/master/categorical-encoding.ipynbを参照してください。私のソリューションよりもパフォーマンスの高いものをまだ探しています。また、lightGBM https://github.com/Microsoft/LightGBM/issues/789は、カスタム エンコーディング戦略を使用することを提案しています。