再看《MATLAB数据分析与挖掘实战》,简单总结下今天看到的经典的决策树算法——ID3.

ID3:在决策树的各级节点上,使用信息增益的方法作为属性的选择标准,来帮助确定生成每个节点时所应采取的合适属性。

关于信息增益,知乎上这个回答也讲的很不错。信息增益=熵 - 条件熵,信息增益越大,说明该条件对事件确定性的影响越大。所以,在决策树中,我们将信息增益值作为测试属性。把测试属性取值相同的样本划为同一个子样本集。

基本流程:

·对当前样本,计算所有属性的信息增益,并将信息增益作为测试属性;

·若子样本集的类别属性只含有单个属性,则分支为叶子节点,判断其属性值并贴上相应的,然后返回调用处;否则对子样本集递归调用算法。

原理看起来有点复杂,其实用MATLAB实现起来及其简单:

%% 使用ID3决策树算法预测销量高低

clear;

% 参数初始化

inputfile = ‘F:\Techonolgoy\MATLAB\file\MTALAB数据分析与挖掘实战\Datasets\chapter5\chapter5\示例程序\data\sales_data.xls‘; % 销量及其他属性数据

%% 数据预处理

disp(‘正在进行数据预处理...‘);

[matrix,attributes_label,attributes] = id3_preprocess(inputfile);

%% 构造ID3决策树,其中id3()为自定义函数

disp(‘数据预处理完成,正在进行构造树...‘);

tree = id3(matrix,attributes_label,attributes);

%% 打印并画决策树

[nodeids,nodevalues] = print_tree(tree);

tree_plot(nodeids,nodevalues);

disp(‘ID3算法构建决策树完成!‘);

ID3缺点:

·偏向选择取值最多的即所谓的高度分支属性,不一定最优。

·只能处理离散属性。

原文:http://www.cnblogs.com/buzhizhitong/p/5880184.html

matlab实现id3,MATLAB简单实现ID3相关推荐

  1. matlab 2009a使用教程,实验一 安装MATLAB R2009a软件及其简单操作

    实验一安装MATLAB R2009a软件及其简单操作 一.实验目的 1.掌握MATLAB R2009a软件的安装. 2.熟悉启动和退出matlab的方法. 3.熟悉matlab命令窗口的组成. 4.掌 ...

  2. 2020-12-18 Matlab LQR 推导及简单应用

    Matlab LQR 推导及简单应用 本文主要介绍LQR的直观推导,说明LQR目标函数J选择的直观含义以及简单介绍矩阵Q,R的选取,最后总结LQR控制器的设计步奏,并将其应用在一个简单的倒立摆例子上. ...

  3. matlab 滤波_MATLAB之简单卡尔曼滤波

    卡尔曼滤波在控制中是一种常用的且非常有效的算法,前段时间在学习使用之后加深了对其的认识,滤波后的数据着实令我大吃一惊,今天我用MATLAB进行了一个简单的仿真,分享给大家一起来学习. 在这节教程中还包 ...

  4. MATLAB 数字图像处理---车牌简单识别【亲测有效】

    文章内容:利用 MATLAB 对图像进行简单处理,包括图像的模糊.锐化.和直方图均衡化:对图像进行边缘检测:并对利用 MATLAB 对图像中的数字提取识别. 目录 1 MATLAB 对图像进行简单处理 ...

  5. matlab程序 如何使用,如何使用MATLAB创建一个最简单的程序

    <如何使用MATLAB创建一个最简单的程序>由会员分享,可在线阅读,更多相关<如何使用MATLAB创建一个最简单的程序(4页珍藏版)>请在人人文库网上搜索. 1.如何使用MAT ...

  6. matlab实现的一个简单动画

    matlab实现的一个简单动画 全部代码 clc;%清屏 ysy=figure('name','猪猪女孩');%标题 axis([0 80 0 80]); hold on; axis off; set ...

  7. matlab 摄像头拍照,matlab摄像头拍照

    图像采集: 该单元是指道路上安装的摄像头在检测到有车辆通过的同时进行 拍照并...在 MATLAB 中我们可以调用 im2gray 函数对图像进行灰度化处理. 4.2.2图像的...... 2 车辆牌 ...

  8. 【 MATLAB 】使用 MATLAB 求由差分方程表示的滤波器的响应的两种方法

    例题: 一个3阶低通滤波器由下面差分方程描述: y(n) = 0.0181 x(n) + 0.0543 x(n-1) + 0.0543 x(n-2) + 0.0181 x(n-3) + 1.76 y( ...

  9. matlab模块 python,Matlab 和Python结合使用

    今天介绍的内容比较基础,希望能达到抛砖引玉的效果. Matlab 和 Python 结合使用无非分为两种情形: Matlab中使用Python包: Python中使用Matlab. 1. Matlab ...

最新文章

  1. Python元组与字典详解
  2. cobbler安装和基本配置
  3. keras 多个显卡
  4. larval+mysql+不等于_MySQL学习日记(19)比较运算符
  5. 工地上收到北大录取通知书,但他说的这句话更动人!
  6. ssis zip压缩文件_在SSIS中处理参差不齐的正确格式的文件
  7. Map,List,Queue,Set和Stack的区别
  8. 深入理解Java虚拟机--笔记1
  9. 求当前月的第一天和最后一天
  10. windows使用放大镜快速放大屏幕局部
  11. 红帽子linux 命令,红帽子_Linux_命令全解
  12. 7-14 然后是几点 (15 分)有时候人们用四位数字表示一个时间,比如 1106 表示 11 点零 6 分。现在,你的程序要根据起始时间和流逝的时间计算出终止时间。
  13. 王强 河南大学计算机学院,王强-河南大学生命科学学院
  14. php踩过的那些坑(2) strpos引发的血案
  15. 【转载】阿里面试回来,想和Java程序员谈一谈
  16. android 指南针 原理,手机指南针原理是什么?安卓/苹果手机指南针app工作原理介绍...
  17. TSINGSEE青犀视频开发安全帽智能检测识别经验分享
  18. 【StringUtils】
  19. java 网页 拒绝访问_ie浏览器拒绝访问如何解决
  20. Python青少年等级考试实操题(二级)

热门文章

  1. 面试高频题:springboot自动装配的原理你能说出来吗?
  2. python调用cmd命令释放端口_Python——cmd调用(os.system阻塞处理)(多条命令执行)...
  3. xss挖掘思路分享_新手指南 | permeate靶场漏洞挖掘思路分享
  4. Java File类详解
  5. 符江职高计算机教什么,高县符江职高具体地址
  6. java json u0026_特殊字符的json序列化
  7. netbeans java9_Java 开发新选择?Apache NetBeans IDE 9.0 备受好评
  8. Python数模笔记-NetworkX(2)最短路径
  9. 计算机病毒的危害主要体现于对计算机系统的信息破坏和,2014年中央电大专科信息技术应用理论题.doc...
  10. php pc_base,phpcms二次开发之base.php的桥梁作用_PHP教程