决策树-ID3
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的更多相关文章
- 数据挖掘之决策树ID3算法(C#实现)
决策树是一种非常经典的分类器,它的作用原理有点类似于我们玩的猜谜游戏.比如猜一个动物: 问:这个动物是陆生动物吗? 答:是的. 问:这个动物有鳃吗? 答:没有. 这样的两个问题顺序就有些颠倒,因为一般 ...
- 决策树ID3算法[分类算法]
ID3分类算法的编码实现 <?php /* *决策树ID3算法(分类算法的实现) */ /* *求信息增益Grain(S1,S2) */ //-------------------------- ...
- javascript实现朴素贝叶斯分类与决策树ID3分类
今年毕业时的毕设是有关大数据及机器学习的题目.因为那个时间已经步入前端的行业自然选择使用JavaScript来实现其中具体的算法.虽然JavaScript不是做大数据处理的最佳语言,相比还没有优势,但 ...
- 决策树--ID3 算法(一)
Contents 1. 决策树的基本认识 2. ID3算法介绍 3. 信息熵与信息增益 4. ID3算法的C++实现 1. 决策树的基本认识 决策树是一种 ...
- 决策树(ID3、C4.5、CART)
ID3决策树 ID3决策树分类的根据是样本集分类前后的信息增益. 假设我们有一个样本集,里面每个样本都有自己的分类结果. 而信息熵可以理解为:“样本集中分类结果的平均不确定性”,俗称信息的纯度. 即熵 ...
- 决策树---ID3算法(介绍及Python实现)
决策树---ID3算法 决策树: 以天气数据库的训练数据为例. Outlook Temperature Humidity Windy PlayGolf? sunny 85 85 FALSE no ...
- 机器学习实战 -- 决策树(ID3)
机器学习实战 -- 决策树(ID3) ID3是什么我也不知道,不急,知道他是干什么的就行 ID3是最经典最基础的一种决策树算法,他会将每一个特征都设为决策节点,有时候,一个数据集中,某些特征属 ...
- 决策树ID3原理及R语言python代码实现(西瓜书)
决策树ID3原理及R语言python代码实现(西瓜书) 摘要: 决策树是机器学习中一种非常常见的分类与回归方法,可以认为是if-else结构的规则.分类决策树是由节点和有向边组成的树形结构,节点表示特 ...
- 02-21 决策树ID3算法
目录 决策树ID3算法 一.决策树ID3算法学习目标 二.决策树引入 三.决策树ID3算法详解 3.1 if-else和决策树 3.2 信息增益 四.决策树ID3算法流程 4.1 输入 4.2 输出 ...
- 决策树——ID3
参考网址:https://www.cnblogs.com/further-further-further/p/9429257.html ID3算法 最优决策树生成 -- coding: utf-8 - ...
随机推荐
- 烂泥:学习centos之快速搭建LNMP环境
本文由秀依林枫提供友情赞助,首发于烂泥行天下 以前在centos下安装软件都是喜欢源码安装,不过昨天因为一个事情需要一个centos 下的LNMP环境.反倒不会搞了,今天特意记录下,以备后续使用. 一 ...
- 关于Retinex图像增强算法的一些新学习。
最近再次看了一下IPOL网站,有一篇最近发表的文章,名字就是Multiscale Retinex,感觉自己对这个已经基本了解了,但还是进去看了看,也有一些收获,于是抽空把他们稍微整理了下,原始文章及其 ...
- mysql 基础 增删改查语句
MySQL:众多关系型数据库中的一种仓库 --数据库箱子 --表数据库:进入mysql 命令行: mysql -uroot -p查看所有数据库: show databases;创建数据库: creat ...
- [No000091]SVN学习笔记2-TortoiseSVN Client初级操作update(获取)、commit(提交)
SVN简介: 为什么要使用SVN? 程序员在编写程序的过程中,每个程序员都会生成很多不同的版本,这就需要程序员有效的管理代码,在需要的时候可以迅速,准确取出相应的版本. Subversion是什么? ...
- struts2中各个jar包作用
Struts2.3.4 所需的Jar包及介绍 Jar包的分类 jar包名称 jar包版本 jar包 文件名 jar包 的作用 jar包内包含的主要包路径及主要类 依赖的自有jar包名称 依赖的第三方j ...
- 侯捷老师C++大系之C++面向对象开发:(一)不带指针的类:Complex复数类的实现过程
一.笔记1.C++编程简介 2.头文件与类的声明 防卫式声明#ifndef __COMPLEX__#define __COMPLEX__ …… #endif头文件的布局模板简介template< ...
- .NET跨平台之旅:生产环境中第2个跑在Linux上的ASP.NET Core站点
今天我们在生产环境中上线了第2个跑在Linux上的ASP.NET Core站点.这是一个简单的Web API站点,通过命令行的方式调用安装在Linux服务器上的程序完成操作.之前用的是nodejs,现 ...
- Linux常用获取进程占用资源情况手段
测试环境:Ubuntu14.04 1. 获取进程ID号 ps -aux | grep your_process_name 例如: xxx@xxx:~$ ps -e |grep Midlet|awk ...
- AngularJS模型
1. AngularJS模型主要就是使用的AngularJS的ng-model指令. ng-model指令可以将输入域的值与 AngularJS 创建的变量绑定. <!DOCTYPE html& ...
- Activity详解生命周期(Android)
Activity是Android组件中最基本也是最为常见用的四大组件(Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器)之 ...