程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

在python的scikit-learn决策树中仅使用一个属性一次

发布于2019-10-05 18:09     阅读(1094)     评论(0)     点赞(16)     收藏(4)


我正在使用scikit-learn python模块来创建决策树,它的运行就像一个魅力。我想再做一件事。使树仅在属性上分裂一次。

其背后的原因是由于我的数据集非常奇怪。我使用嘈杂的数据集,我也对噪声非常感兴趣。我的全班成绩都是二元的,可以说[+,-]。我有一堆属性,其数字大多在(0,1)范围内。

scikit-learn创建树时,它将多次拆分属性,以使树“更好”。我知道,通过这种方式,叶节点变得更加纯净,但事实并非如此。

我所做的是通过计算不同截止值的信息增益并选择最大值来定义每个属性的截止值。通过这种“留一法”和“ 1 / 3-2 / 3”交叉验证技术,我得到了比原始树更好的结果。

问题是,当我尝试自动执行此操作时,我遇到了一个上下限问题,例如0和1左右,因为大多数元素都低于/高于该上限,并且我获得了很高的信息增益,导致其中之一集合是纯的,即使它仅包含全部数据的1-2%。

总而言之,我想做些什么使scikit-learn只在一个属性上拆分一次。

如果无法完成,你们对如何以一种很好的方式产生临界值有什么建议吗?

非常感谢!


解决方案


我没有提供直接处理阻止分类器多次使用功能的方法。(尽管您可以通过定义自己的分离器并进行连接来完成此工作,但这是很多工作。)

我建议您首先确保平衡您的类,然后查看class_weight参数以了解详细信息。那应该对您的问题有很大帮助。但是,如果那行不通,您仍然可以使用maxymoomin_weight_fraction_leaf所建议或类似参数来强制要求没有叶子的权重太小



所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:https://www.pythonheidong.com/blog/article/131063/a0b1b59164a5919e5f74/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

16 0
收藏该文
已收藏

评论内容:(最多支持255个字符)