[問題]請問關於Sklearn裡的決策樹所支援變數類型

作者: ms0344303 (我不玩了)   2018-03-28 22:36:19
https://i.imgur.com/9yCDPja.png
主要資料構成如圖
我目前用SKLEARN裡的TREE套件
他都會顯示沒辦法將文字轉換為FLOAT
程式碼如下
x =rawdata.drop('treatment',axis =1)
y = rawdata['treatment']
clf = tree.DecisionTreeClassifier()
clf = clf.fit(x,y)
treatment 即是 Y label
要Encoding的話,有些類別太多,就直接套用encoding 函數下去作01dummy嗎
或這是該如何做呢?
作者: Panthalassa   2018-03-28 23:27:00
像 More than 1000 那種要自己轉成數字吧?
作者: ms0344303 (我不玩了)   2018-03-29 00:33:00
都用 labelencoder 他會把類別都變成大於小於 感覺就沒有二分法的存在了 都變成連續我不知道該如何繼續另外想more than 1000 其實我還是把他當一種離散rank所以轉不轉應該還好
作者: gigayaya (gigayaya)   2018-03-29 00:48:00
one hot encoding?
作者: goldflower (金色小黃花)   2018-03-29 01:25:00
應該就你training data沒做labelencoder吧?記得scikit-learn的tree只吃數值 而且也只處理數值所以你做完labelencoder後他會把你的categorical看成數字 這應該不是你要的 所以就如gigayaya說的做OHE像no_employees可以轉 因為有順序上的關係但像country就要用one-hot 因為彼此間沒大小關係github.com/scikit-learn/scikit-learn/pull/4899可以看下這邊 反正結論就是目前沒這功能的樣子
作者: vfgce (小兵)   2018-03-29 08:08:00
sklearn 最大敗筆,就是不支援category...看過R的DT再來看sklearn的DT真的會吐血,R是內建factor處理分類型態.python則無內建分類型態,而所有科學套件基礎numpy也沒有.所以造成這個問題,但同樣延伸numpy的pandas及statsmodels都可以支援category..sklearn小組要不要考慮直接連結pandas來解決這問題..

Links booklink

Contact Us: admin [ a t ] ucptt.com