决策树 爱被打了一巴掌 2022-12-29 04:46 28阅读 0赞 ### 决策树 ### * 认识决策树 * 决策树分类原理详解 * * 原理 * 信息论基础 * 信息適的定义 * 决策树的划分依据之— —— 信息增益 * 决策树API * 决策树预测鸢尾花数据集 * 决策树可视化 * * 保存树的结构到dot文件 * 网站显示结构 * 决策树总结 # 认识决策树 # 决策树思想的来源非常朴素,程序设计中的条件分支结构就是`if-else`结构,最早的决策树就是利用这类结构分割数据的一种分类学习方法 怎么理解这句话?通过一个对话例子 比如:你母亲要给你介绍男朋友,是这么来对话的: * 女儿:多大年纪了? * 母亲:26。 * 女儿:长的帅不帅? * 母亲:挺帅的。 * 女儿:收入高不? * 母亲:不算很高,中等情况。 * 女儿:是公务员不? * 母亲:是,在税务局上班呢。 * 女儿:那好,我去见见。 **想一想这个女生为什么把年龄放在最上面判断!!!!!!!!!!!!!!** \*\*决策树的思想:\*\*如何高效的进行决策?——特征的先后顺序 那么如何确定特效的先后顺序呢? # 决策树分类原理详解 # ## 原理 ## 信息煽、信息增益等 **需要用到信息论的知识!!!** ## 信息论基础 ## * 信息 * 消除随机不确定性的的东西 * 例如:小明的年龄 * ”我今年18岁“ —— 信息 * ”我明年19岁“ —— 不是信息 * 信息的衡量 —— 信息量 —— 信息熵 ## 信息適的定义 ## * H的专业术语称之为信息炯,单位为比特(bit)。 \[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-asCysUwX-1608431730837)(C:\\Users\\ASUS\\AppData\\Roaming\\Typora\\typora-user-images\\image-20201219232312280.png)\] ## 决策树的划分依据之— —— 信息增益 ## * 定义与公式 特征A对训练数据集D的信息增益g(D,A),定义为集合D的信息煽H(D)与特征A给定条件下D的信息条件煽H(D|A)之差 公式为:`g(D,A) = H(D) - H(D|A)` **信息熵计算:** ![img][] **条件熵的计算:** ![img][img 1] **注**: * Ck 表示某个样本类别的样本数 * 信息增益表示得知特征X的信息而息的不确定性减少的程度使得类Y的信息熵减少程度 当然决策树的原理不止信息增益这一种,还有其他方法。但是原理都类似,我们就不去举例计算。 * ID3 * 信息增益 最大的准则 * C4.5 * 信息增益比 最大的准则 * CART * 分类树:基尼系数 最小的准则在`sklearn`中可以选择划分的默认原则 * 优势:划分更加细致(从后面例子的树显示来理解) # 决策树API # * `class sklearn.tree.DecisionTreeClassifier(criterion='gini', max_depth=None,random_state=None)` * 决策树分类器 * `criterion:`决策树的划分依据,默认是`gini`系数,也可以选择信息增益的熵`entropy`。 * `max_depth:`树的深度大小,不设置的话数据量过大,使得决策树划分太细,泛化能力差,可能训练数据效果好,测试数据就不好了 * `random_state:`随机数种子 # 决策树预测鸢尾花数据集 # from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.tree import DecisionTreeClassifier if __name__ == '__main__': # 获取数据 iris = load_iris() # 划分数据集 x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target, random_state=4) # 决策树 算法预估器 estimator = DecisionTreeClassifier(criterion='entropy') estimator.fit(x_train, y_train) # 模型评估 # 方法一:直接对比真实值和预测值 y_predict = estimator.predict(x_test) print('y_predict:\n', y_predict) print('直接对比真实值和预测值:\n', y_test == y_predict) # 方法二:计算准确率 score = estimator.score(x_test, y_test) print('准确率:\n', score) # 决策树可视化 # ## 保存树的结构到dot文件 ## * `sklearn.tree.export_graphviz()`该函数能够导出`DOT`格式 * `tree.export_graphviz(estimator,out_file='tree.dot',feature_names=[])` dot 文件当中内容如下: digraph Tree { node [shape=box] ; 0 [label="petal width (cm) <= 0.8\nentropy = 1.576\nsamples = 112\nvalue = [32, 42, 38]"] ; 1 [label="entropy = 0.0\nsamples = 32\nvalue = [32, 0, 0]"] ; 0 -> 1 [labeldistance=2.5, labelangle=45, headlabel="True"] ; 2 [label="petal width (cm) <= 1.75\nentropy = 0.998\nsamples = 80\nvalue = [0, 42, 38]"] ; 0 -> 2 [labeldistance=2.5, labelangle=-45, headlabel="False"] ; 3 [label="petal length (cm) <= 4.95\nentropy = 0.433\nsamples = 45\nvalue = [0, 41, 4]"] ; 2 -> 3 ; 4 [label="petal width (cm) <= 1.65\nentropy = 0.165\nsamples = 41\nvalue = [0, 40, 1]"] ; 3 -> 4 ; 5 [label="entropy = 0.0\nsamples = 40\nvalue = [0, 40, 0]"] ; 4 -> 5 ; 6 [label="entropy = 0.0\nsamples = 1\nvalue = [0, 0, 1]"] ; 4 -> 6 ; 7 [label="petal width (cm) <= 1.65\nentropy = 0.811\nsamples = 4\nvalue = [0, 1, 3]"] ; 3 -> 7 ; 8 [label="entropy = 0.0\nsamples = 3\nvalue = [0, 0, 3]"] ; 7 -> 8 ; 9 [label="entropy = 0.0\nsamples = 1\nvalue = [0, 1, 0]"] ; 7 -> 9 ; 10 [label="petal length (cm) <= 4.85\nentropy = 0.187\nsamples = 35\nvalue = [0, 1, 34]"] ; 2 -> 10 ; 11 [label="sepal length (cm) <= 5.95\nentropy = 0.918\nsamples = 3\nvalue = [0, 1, 2]"] ; 10 -> 11 ; 12 [label="entropy = 0.0\nsamples = 1\nvalue = [0, 1, 0]"] ; 11 -> 12 ; 13 [label="entropy = 0.0\nsamples = 2\nvalue = [0, 0, 2]"] ; 11 -> 13 ; 14 [label="entropy = 0.0\nsamples = 32\nvalue = [0, 0, 32]"] ; 10 -> 14 ; } ## 网站显示结构 ## http://webgraphviz.com/ # 决策树总结 # * 优点: * 简单的理解和解释,树木可视化。 * 缺点: * 决策树学习者可以创建不能很好地推广数据的过于复杂的树,这被称为过拟合 * 改进: * 减枝`cart`算法(决策树`API`当中已经实现,`随机森林`参数调优有相关介绍)。 * 随机森林 **注:企业重要决策,由于决策树很好的分析能力,在决策过程应用较多, 可以选择特征** [img]: /images/20221120/0c26b3d8337f4051b5037db9e73b3962.png [img 1]: /images/20221120/deb57c985a6646c2a94ce7f01faca028.png
相关 决策树 [https://www.cnblogs.com/lovephysics/p/7231294.html][https_www.cnblogs.com_lovephysics_p 今天药忘吃喽~/ 2022年12月20日 02:22/ 0 赞/ 28 阅读
相关 决策树 1 决策树学习是以实例为基础的归纳学习算法,是应用最广泛的逻辑方法。 2 典型的决策树学习系统采用自顶向下的方法,在部分搜索空间中搜索解决方案。它可以确保求出一个简单的决策树 桃扇骨/ 2022年06月14日 04:27/ 0 赞/ 292 阅读
相关 决策树 决策树是基于树结构来进行决策,这恰是人类在面临决策问题时一种很自然的处理机制。例如,我们要对“这是好瓜吗?”这样的问题进行决策时,通常会进行一系列的判断或“子决策”:我们先看“ 旧城等待,/ 2022年05月25日 05:39/ 0 赞/ 363 阅读
相关 决策树 一、 决策树简介 决策树是一种特殊的树形结构,一般由节点和有向边组成。其中,节点表示特征、属性或者一个类。而有向边包含有判断条件。如图所示,决策树从根节点开始延伸,经过不 骑猪看日落/ 2022年05月17日 00:55/ 0 赞/ 324 阅读
相关 决策树 决策树:决策树是一个树形结构,每个非叶节点表示一个特征树形的测试,每个分支代表这个特征属性在某个值域上的输出,而叶节点存放一个类别。 使用决策树进行决策的原理就是: 从根 淩亂°似流年/ 2022年05月13日 08:50/ 0 赞/ 265 阅读
相关 决策树 1 认识决策树 如何高效的进行决策? 特征的先后顺序(哪个特征先看,哪个特征后看) 2 决策树分类原理详解(看哪个特征能筛掉更多的数据,尽可能通过少 小咪咪/ 2022年04月23日 01:16/ 0 赞/ 253 阅读
相关 决策树 决策树 声明 本文是来自网络文档和书本(周老师)的结合。 概述 决策树(Decision Tree)是在已知各种情况发生概率的[基础][Link 1]上,通 青旅半醒/ 2022年01月30日 06:49/ 0 赞/ 496 阅读
相关 决策树 决策树对实例进行分类的树形结构,由节点和有向边组成。其实很像平时画的流程图。 学习决策树之前要搞懂几个概念: 熵:表示随机变量不确定性的度量,定义:H(p)=-![1409 冷不防/ 2021年09月30日 04:16/ 0 赞/ 525 阅读
相关 决策树 熵的定义 ![5057999-5702853710d12e87.png][] 计算给定数据集的熵 def calcShannonEnt(dataSet): 客官°小女子只卖身不卖艺/ 2021年09月15日 06:34/ 0 赞/ 475 阅读
还没有评论,来说两句吧...