决策树(CART)

决策树(CART)

CART算法全称是分类回归算法,(Classification And Regression Tree),他与ID3、C4.5的不同在于:

1、既可以处理分类问题又可以处理回归问题

2、使用基尼系数作为分类依据,比起使用熵计算简单

3、使用的是二分递归分割的技术,生成二叉树

 

原理不在赘述,基尼系数计算公式:

<span>决策树(CART)</span>

其中,A表示某一属性,C表示这个属性下共C种特征,Pi表示第i个特征发生的概率

当然,对于公式解释的有点乱,很容易搞混,下面结合实例介绍如何计算:

<span>决策树(CART)</span>

对于上面的属性,基尼系数计算如上所示。

对于信息增益的计算为:Gain(house) = Entropy(S) – 3/10*Entropy(has)-7/10*Entropy(nothas)

Entropy(S)  = -3/10*log(3/10)-7/10*log(7/10)

Entropy(has) = 0

Entropy(nothas) = -3/7*log(3/7)-4/7*log(4/7)

 

说白了,基尼系数和熵一样,也是衡量一个事件的不确定度。

故节点选择小的基尼系数的属性

 

对于Python代码,利用sklearn模块通常可以实现,

#   这里不写输入X和Y了,对应的例子有问题,待解决
from sklearn import tree
from sklearn.externals.six import StringIO
import pydotplus


clf = tree.DecisionTreeClassifier(criterion = 'gini')#算法模型

clf = clf.fit(X, Y)#模型训练
dot_data = StringIO()
tree.export_graphviz(clf, out_file=dot_data)
graph = pydotplus.graph_from_dot_data(dot_data.getvalue())
graph.write_pdf("test.pdf")#写入pdf

  基本的程序如上,但是对于CART算法,输入的特征需要是实数,在这里需要进一步研究,有问题,待解决!!!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/119482.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • yiq颜色模型应用于_如果rgb色彩模式中

    yiq颜色模型应用于_如果rgb色彩模式中00.目录文章目录00.目录01.YIQ模式概述02.NTSC制式03.YIQ模式优势04.RGB转YIQ05.附录01.YIQ模式概述YIQ,是NTSC(NationalTelevisionStandardsCommittee)电视系统标准。Y是提供黑白电视及彩色电视的亮度信号(Luminance),即亮度(Brightness),I代表In-phase,色彩从橙色到青色,Q代表Quadrature-phase,色彩从紫色到黄绿色。02.NTSC制式NTSC制式,又简称

    2022年10月24日
  • 毕业一年

    又到毕业季,一年就这么过来了,这一年独自在北京,过的单调但也充实,就做了两件事,减肥和学习。减肥在校期间不怎么运动,偶尔跑步但抵不过吃的多,永远是饭桌上吃到最后的人,肉不停的长,最胖时90kg。去年年底的时候,有一天照镜子,捏着肚子上的肉实在看不下去,下决心减肥。左图87kg到右图71kg,体脂从25降到18左右。 减肥的过程是痛苦的,但是成就感爆棚,让人更加自信,也更加相信付出会有回报。学习看

  • RelativeLayout.LayoutParams

    RelativeLayout.LayoutParams通过id设置相对兄弟元素对齐。<RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android&qu

  • ssis 数据转换_SSIS数据类型:高级编辑器的更改与数据转换的转换

    ssis 数据转换_SSIS数据类型:高级编辑器的更改与数据转换的转换ssis数据转换Inthisarticle,IwillfirstgiveanoverviewofSSISdatatypesanddatatypesconversionmethodsandthenIwillillustratethedifferencebetweenchangingthecolumnsdatatypesfrom…

  • Python中的多线程「建议收藏」

    Python中的多线程「建议收藏」什么是多线程:进程:正在运行的程序,QQ360……线程:就是进程中一条执行程序的执行路径,一个程序至少有一条执行路径。(360中的杀毒电脑体检电脑清理同时运行的话就需要开启多条路

  • 使用试验和数据创新并构建客户真正使用的产品

    使用试验和数据创新并构建客户真正使用的产品

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号