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

看板Python作者 (我不玩了)時間7年前 (2018/03/28 22:36), 7年前編輯推噓4(4017)
留言21則, 5人參與, 7年前最新討論串1/1
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嗎 或這是該如何做呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 175.181.213.249 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1522247781.A.6A5.html ※ 編輯: ms0344303 (175.181.213.249), 03/28/2018 22:41:57

03/28 23:27, 7年前 , 1F
像 More than 1000 那種要自己轉成數字吧?
03/28 23:27, 1F

03/29 00:33, 7年前 , 2F
都用 labelencoder 他會把類別都變成大於小於 感覺就沒
03/29 00:33, 2F

03/29 00:33, 7年前 , 3F
有二分法的存在了 都變成連續
03/29 00:33, 3F

03/29 00:33, 7年前 , 4F
我不知道該如何繼續
03/29 00:33, 4F

03/29 00:34, 7年前 , 5F
另外想more than 1000 其實我還是把他當一種離散rank
03/29 00:34, 5F

03/29 00:34, 7年前 , 6F
所以轉不轉應該還好
03/29 00:34, 6F

03/29 00:48, 7年前 , 7F
one hot encoding?
03/29 00:48, 7F

03/29 01:25, 7年前 , 8F
應該就你training data沒做labelencoder吧?
03/29 01:25, 8F

03/29 01:26, 7年前 , 9F
記得scikit-learn的tree只吃數值 而且也只處理數值
03/29 01:26, 9F

03/29 01:26, 7年前 , 10F
所以你做完labelencoder後他會把你的categorical看成
03/29 01:26, 10F

03/29 01:27, 7年前 , 11F
數字 這應該不是你要的 所以就如gigayaya說的做OHE
03/29 01:27, 11F

03/29 01:32, 7年前 , 12F
像no_employees可以轉 因為有順序上的關係
03/29 01:32, 12F

03/29 01:32, 7年前 , 13F
但像country就要用one-hot 因為彼此間沒大小關係
03/29 01:32, 13F

03/29 01:36, 7年前 , 14F
github.com/scikit-learn/scikit-learn/pull/4899
03/29 01:36, 14F

03/29 01:38, 7年前 , 15F
可以看下這邊 反正結論就是目前沒這功能的樣子
03/29 01:38, 15F

03/29 08:08, 7年前 , 16F
sklearn 最大敗筆,就是不支援category...看過R的DT
03/29 08:08, 16F

03/29 08:10, 7年前 , 17F
再來看sklearn的DT真的會吐血,R是內建factor處理分類型態.
03/29 08:10, 17F

03/29 08:11, 7年前 , 18F
python則無內建分類型態,而所有科學套件基礎numpy也沒有.
03/29 08:11, 18F

03/29 08:12, 7年前 , 19F
所以造成這個問題,但同樣延伸numpy的pandas及statsmodels
03/29 08:12, 19F

03/29 08:13, 7年前 , 20F
都可以支援category..sklearn小組要不要考慮直接連結
03/29 08:13, 20F

03/29 08:13, 7年前 , 21F
pandas來解決這問題..
03/29 08:13, 21F
文章代碼(AID): #1QkwXbQb (Python)
文章代碼(AID): #1QkwXbQb (Python)