Gáb*_*dős 7 python decision-tree scikit-learn
我正在使用scikit-learn python模块创建一个决策树,它的工作就像一个魅力.我想再做一件事.使树仅在属性上拆分一次.
这背后的原因是因为我非常奇怪的数据集.我使用嘈杂的数据集,我对噪音也很感兴趣.我的课程结果是二进制的,比如[+, - ].我有一堆属性,数字大多在(0,1)范围内.
当scikit-learn创建树时,它会多次分割属性,以使树"更好".我知道通过这种方式叶子节点变得更纯净,但事实并非如此.
我所做的是通过计算不同截止值中的信息增益并选择最大值来定义每个属性的截止值.通过这种方式,使用"leave-one-out"和"1/3-2/3"交叉验证技术,我获得了比原始树更好的结果.
问题是,当我尝试自动化这个时,我遇到了一个围绕下限和上限的问题,例如大约0和1,因为大多数元素将在/上面,并且我得到非常高的信息增益,导致其中一个集合是纯粹的,即使它只包含1-2%的完整数据.
总而言之,我想做一些事情来制作scikit - 学习只拆分属性一次.
如果无法做到,你们有什么建议如何以一种很好的方式产生这些截止点?
非常感谢!
小智 0
我没有给出直接处理阻止分类器多次使用某个功能的方法。(尽管您可以通过定义自己的分离器并将其连接起来来完成,但这需要大量工作。)
我建议您首先确保平衡您的课程,查看参数class_weight以了解详细信息。这对你的问题应该有很大帮助。但如果这不起作用,您仍然可以使用maxymoomin_weight_fraction_leaf建议的或类似参数来强制不存在重量太小的叶子。