[问题]请问关于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