id3:无法直接处理数值型数据,可以通过量化方法将数值型数据处理成标称型数据,但涉及太多特征划分,不建议

决策树:的最大优点在于可以给出数据的内在含义,数据形式非常容易理解;

决策树介绍:决策树分类器是带有种植的流程图,终止块表示分类结果

  优点:计算复杂度不高,输出结果易于理解,对中间值的缺失不明感,可以处理不相关的数据;可以将此分类器存储于硬盘上,是个持久化的分类器

  缺点:可能会发生过度匹配问题

  使用数据类型:数值型和标称型

knn:不便于展现数据的内在含义;每用一次都要学习,不是持久化分类器

概念介绍:

信息增益、熵:

信息的定义:

  熵的定义:熵是信息增益的期望值之和=获得的最大信息增益,熵是数据的不一致性的表现

  *(扩展阅读)基尼不纯度:从数据集中随机选取项,度量其被错误分配到其他组的概率

决策树流程

  1、收集数据:可使用任何方法

  2、准备数据:构造算法只适用于标称型数据,因此数值型数据需要离散

  3、分析数据:可以使用任何方法,构造书完成后,我们应该检查图形是否符合预期

··数据集划分:

  度量数据集的无需程度,度量划分数据集的熵,判断当前数据集划分是否正确,想象成二位的空间散点图,应用直线进行划分

    划分操作:创建新的list对象,将符合要求的数据,抽取出来

··选择最好的数据集:

  *创建唯一的分类标签列表

  *计算每种划分方式的信息熵

  *计算最好的信息增益

··递归决策树:

  *循环调用划分函数

  *制定终止点:制定可划分的最大分组数目;自动循环到组数不变状态;如果还出现不停,就采用多数表决的方法确定叶子节点的分类

    类别完全相同;变脸完所有特征时返回次数最多的;得到列表包含所有属性

  *调用matplob构造图(箭头翻转,数据点数字显示,着色)

    定义文本框和箭头格式

    回执带箭头的注释

  *构造注解树

    *测试节点的数据类型字典

    *在父子节点间填充文本你信息

    *计算宽和高

    *标记子节点属性值

    *减少y偏移

  4、测试算法:使用经验数计算准确率

     测试和存储分类器

       *测试算法:使用决策树执行分类:将标签字符串转换为索引

       *便利地柜整棵树,比较变量中的值与树节点的值,如果达到叶节点,则返回当前分类标签

  5、使用算法:决策树存储(此步骤可以适用于任何监督学习算法,而是使用决策树可以更好地理解数据的内在含义)

      

决策树伪代码:

创建分支的伪代码函数creatbranch()

  检测数据集中的每个子项是否属于同一分类

    if so return 类标签;

    else

      寻找划分数据集的最好特征

      划分数据集

      创建分支节点

        for 每个划分的子集

          调用函数creatbranch并增加返回结果到分支节点中

        return 分支节点

示例:使用决策树预测隐形眼镜类型

  1、收集数据:提供的文本文件

  2、准备数据:解析tab键分割的数据行

  3、分析数据:快速检查数据,确保正确的解析数据内容,使用createplot()函数回执最终的树形图

  4 、训练算法:使用createtree函数

  5、测试算法:编写测试函数验证决策树可以正确的分类给定的数据实例

  6、使用算法:存储数据结构,以便下次无需重构决策树

决策树-ID3的更多相关文章

  1. 数据挖掘之决策树ID3算法(C#实现)

    决策树是一种非常经典的分类器,它的作用原理有点类似于我们玩的猜谜游戏.比如猜一个动物: 问:这个动物是陆生动物吗? 答:是的. 问:这个动物有鳃吗? 答:没有. 这样的两个问题顺序就有些颠倒,因为一般 ...

  2. 决策树ID3算法[分类算法]

    ID3分类算法的编码实现 <?php /* *决策树ID3算法(分类算法的实现) */ /* *求信息增益Grain(S1,S2) */ //-------------------------- ...

  3. javascript实现朴素贝叶斯分类与决策树ID3分类

    今年毕业时的毕设是有关大数据及机器学习的题目.因为那个时间已经步入前端的行业自然选择使用JavaScript来实现其中具体的算法.虽然JavaScript不是做大数据处理的最佳语言,相比还没有优势,但 ...

  4. 决策树--ID3 算法(一)

    Contents      1. 决策树的基本认识      2. ID3算法介绍      3. 信息熵与信息增益      4. ID3算法的C++实现 1. 决策树的基本认识    决策树是一种 ...

  5. 决策树(ID3、C4.5、CART)

    ID3决策树 ID3决策树分类的根据是样本集分类前后的信息增益. 假设我们有一个样本集,里面每个样本都有自己的分类结果. 而信息熵可以理解为:“样本集中分类结果的平均不确定性”,俗称信息的纯度. 即熵 ...

  6. 决策树---ID3算法(介绍及Python实现)

    决策树---ID3算法   决策树: 以天气数据库的训练数据为例. Outlook Temperature Humidity Windy PlayGolf? sunny 85 85 FALSE no ...

  7. 机器学习实战 -- 决策树(ID3)

    机器学习实战 -- 决策树(ID3)   ID3是什么我也不知道,不急,知道他是干什么的就行   ID3是最经典最基础的一种决策树算法,他会将每一个特征都设为决策节点,有时候,一个数据集中,某些特征属 ...

  8. 决策树ID3原理及R语言python代码实现(西瓜书)

    决策树ID3原理及R语言python代码实现(西瓜书) 摘要: 决策树是机器学习中一种非常常见的分类与回归方法,可以认为是if-else结构的规则.分类决策树是由节点和有向边组成的树形结构,节点表示特 ...

  9. 02-21 决策树ID3算法

    目录 决策树ID3算法 一.决策树ID3算法学习目标 二.决策树引入 三.决策树ID3算法详解 3.1 if-else和决策树 3.2 信息增益 四.决策树ID3算法流程 4.1 输入 4.2 输出 ...

  10. 决策树——ID3

    参考网址:https://www.cnblogs.com/further-further-further/p/9429257.html ID3算法 最优决策树生成 -- coding: utf-8 - ...

随机推荐

  1. c# float显示时保存一位小数

    UI显示时候,需求保留一位小数 //保留一位小数 参考: http://blog.sina.com.cn/s/blog_620531730100kfz6.html float ff = 1.01f; ...

  2. [LeetCode] Find Median from Data Stream 找出数据流的中位数

    Median is the middle value in an ordered integer list. If the size of the list is even, there is no ...

  3. [LeetCode] Department Highest Salary 系里最高薪水

    The Employee table holds all employees. Every employee has an Id, a salary, and there is also a colu ...

  4. [Java]使用HttpClient实现一个简单爬虫,抓取煎蛋妹子图

    第一篇文章,就从一个简单爬虫开始吧. 这只虫子的功能很简单,抓取到”煎蛋网xxoo”网页(http://jandan.net/ooxx/page-1537),解析出其中的妹子图,保存至本地. 先放结果 ...

  5. AppBoxPro - 细粒度通用权限管理框架(可控制表格行内按钮)源码提供下载

    特别声明: 提供的源代码已经包含了 AppBoxPro 的全部源代码,用 VS2012 打开项目后,直接 Ctrl+F5 可以运行起来(默认使用VS自带的LocalDB数据库). FineUIPro是 ...

  6. 第五次团队作业——第一次项目冲刺——Alpha版本

    Deadline:2016-11-19    8:00am 本次团队作业将持续三周时间,完成项目Alpha版本,在2016.11.19 的实践课上进行演示操作. 阅读或再次阅读<构建之法> ...

  7. 关于若干php 表单 的重新审视

    对于表单验证来说 应该在任何可能的时候对用户输入进行验证(通过客户端脚本).浏览器验证速度更快,并且可以减轻服务器的负载. 如果用户输入需要插入数据库,您应该考虑使用服务器验证.在服务器验证表单的一种 ...

  8. 用上了ReSharper

    用上了ReSharper,发现很爽1.使用var2.去掉无用的using3.将foreach改为linq let4.字符串为cost5.作用域与变量名适配6.文件夹与namespace不匹配7.去掉为 ...

  9. C++:通过gethostbyname函数,根据服务器的域名,获取服务器IP

    本代码的编译环境为MAC,系统版本为10.11.6: #include <string.h> #include <netdb.h> #include <stdio.h&g ...

  10. Bzoj1305 [CQOI2009]dance跳舞

    Time Limit: 5 Sec  Memory Limit: 162 MBSubmit: 2925  Solved: 1221 Description 一次舞会有n个男孩和n个女孩.每首曲子开始时 ...