Vij*_*r J 6 python machine-learning python-3.x scikit-learn
sklearn DecisionTreeClassifier有一个名为"splitter"的属性,默认设置为"best",将其设置为"best"或"random"是什么?我从官方文档中找不到足够的信息.
小智 7
简短的回答:
RandomSplitter 对每个选定的特征发起**随机分割,而 BestSplitter 则对**每个选定的特征进行所有可能的分割**。
更长的解释:
当你浏览 _splitter.pyx 时,这一点很清楚。
如果选择/保持"最佳",则随机树将拆分最相关的特征.
如果选择"随机",树将采用随机特征并将其拆分.因此,您的树可能会以更深的深度或更低的精度结束.
您可以进行一些试验并生成graphviz以查看差异.例如,在下面的图片中,您将拆分X 1然后X [0].但是如果你反转它,你最终可能会被X [0]分割,然后是X 1并再次准确X [0]
编辑:例如,您可以考虑人的身高/体重.
让我们考虑一下人口高度平均为1m70,女性通常为1m65,男性为1m75.两个重新分配都是重叠的.对于体重,它更加分离,女性约为65公斤,男性为85公斤(曲线从不重叠).
如果您随机分割,则可以从要素高度开始.这意味着你将分裂高度> 1m70.你将最终得到两组男女.所以你必须按重量分开来说出它是男人还是女人.
如果您使用最好,您可以直接根据重量进行分类.
编辑2:如果您有一个具有百分之一功能的数据集,"最佳"也将采用最相关的功能.想象一下,您仍然希望对男性和女性进行分类,并且您的数据集中还有眼睛颜色,瞳孔大小等......这些并不是很相关,使用随机可能会先选择它们.
对我来说,只有当你知道你所有的特征都是相同的强度并且你想节省一些计算时间(在某些情况下找到最好的分割可能需要时间)时,这个选项才有意义.
我希望它有所帮助,
| 归档时间: |
|
| 查看次数: |
2362 次 |
| 最近记录: |