熊貓分類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學習LabelEncoder
。
我想知道如何處理看不見的數據。
如果需要手動轉換,pandas.Categorical允許更快的轉換 - 即使新數據中有看不見的級別?
編輯
請參閱https://github.com/geoHeil/pythonQuestions/blob/master/categorical-encoding.ipynb的概述,我怎麼能不得到scikit學習的通常嫌疑人的工作。 仍在尋找比我的解決方案更高性能的產品。另外lightGBM https://github.com/Microsoft/LightGBM/issues/789建議使用自定義編碼策略。
Pandas.Categorical只是填補他們與南。 Scikit-learn也不處理新數據,它們很可能會被刪除或替換爲Nan。嘗試使用LabelEncoder與不可見的數據,你會得到'ValueError:y包含新標籤:'。 –
爲什麼這個問題downvoted ??我想一個小的可重複數據集和理想的人可以幫助更好地理解問題... – MaxU
@MaxU也許是因爲在我看來,它更多的是算法方法問題而不是編程問題。這是機器學習中關於如何處理不可見數據的常見問題,[交叉驗證](http://stats.stackexchange.com)是正確的地方。 –