MATLAB简单实现ID3

  再看《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缺点:

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

  ·只能处理离散属性。

时间: 2024-08-06 11:58:06

MATLAB简单实现ID3的相关文章

Adaline神经网络简单介绍和MATLAB简单实现

Adaline神经网络 Adaline利用了最小二乘法的思想,相较于感知机神经网络,对于数据的线性可分的要求更低一些,可以允许一些异常数据. 上面描述了迭代求解的过程,但是在x0(k+1)这里没看懂,如果是更新θ应该是w0(k+1)才对.应该是PPT有错. 我们来说明下迭代求解需要注意的地方. 首先,将θ并入到w中去,因为θ前面的系数始终是1,所以x也多了一列,这一列都是1. x=[1,x1,x2,?,xn]Tw=[θ,w1,?,wn] 然后是迭代的结束条件.在代码实现中,是计算w(k?1)与w

Matlab简单快速读取nc文件

2012以上版本的Matlab都内含nc阅读组件 命令非常简单. 例如 nc的文件名是filename,其中有多个变量,其中data_001是你想要的数据标签. 第一步,查看nc内的所有信息 ncdisp('filename','/', 'full'); 第二步,调出来你想要的变量或者数据, ncread('filename','data_001'). 就是这么简单. 第一步可以用软件hdfexplore软件代替,看起来更舒服方便. ncdisp 得到的结果直接显示了command window

数字信号处理MATLAB简单序列

数字信号处理应用的几个基本序列: 1 单位样本序列 function mainImseq() clc clear disp('生成抽样序列'); y=imseq(1,1,5); %调用样本函数,此时序列下标以1开头(1~5之间5个数,下标为1的抽样值为1) %子函数imseq:抽样函数 function [x,n]=imseq(n0,n1,n2) n=[n1:n2]; x=[(n-n0) ==0 ] 2 单位阶越序列 产生u(n) function mainImseq() clc clear d

WPF调用Matlab函数方法

有的时候用C#写图像处理方法,比较费事,不如Matlab简单,但是Matlab又做不出WPF那样的好看界面,怎么办呢. 今天正好我要实现这个功能,就顺便写个小例子,给需要的人做个借鉴. 想要用WPF调用Matlab代码,就用到了Matlab生成.DLL文件的功能. 注:我的VS版本是2013,Matlab版本是2012a,两个软件不算新也不算老,应该是现在普遍用的版本 首先,生成Matlab的.DLL文件 在matlab的左下角选择start-matlab-NE-deploytool,或者直接在

Java遍历文件夹及图像缩放批处理

记得我以前写过图像处理的文章是用大学里教的数字图像处理来操作,用个Matlab,不过最近实习中和一妹纸起了一点小冲突,双方都没多少时间处理这些资源,然后我是静下心来去思考了,妹纸怎么会花这么多的时间在这一工作上. 然后跑过去沟通,了解她整个工作的流程,果然有所发现,她修改图片大小是用美图来一张一张改的,整个过程花了1个小时,心里灵机一动,批量处理肯定能写,以前做过类似的,但是妹纸没有Matlab.为了解放生产力,我还是晚上时间把东西赶了出来. 首先说一下文件的规定,有多个文件,每个文件有jpg和

kNN(K-Nearest Neighbor)最邻近规则分类

KNN最邻近规则,主要应用领域是对未知事物的识别,即判断未知事物属于哪一类,判断思想是,基于欧几里得定理,判断未知事物的特征和哪一类已知事物的的特征最接近: K最近邻(k-Nearest Neighbor,KNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一.该方法的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别.KNN算法中,所选择的邻居都是已经正确分类的对象.该方法在定类决策上只依据最邻近的一个或

机器学习算法---KNN

KNN最邻近规则,主要应用领域是对未知事物的识别,即判断未知事物属于哪一类,判断思想是,基于欧几里得定理,判断未知事物的特征和哪一类已知事物的的特征最接近: K最近邻(k-Nearest Neighbor,KNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一.该方法的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别.KNN算法中,所选择的邻居都是已经正确分类的对象.该方法在定类决策上只依据最邻近的一个或

Torch深度学习教程(一)

本博文目标是介绍Torch的入门使用 博主采用iTorch界面编写,以下以图片方式展示代码. 如果记不清哪个方法的名字了可以在iTorch里面点"Tab"键会有智能输入,类似matlab 简单地介绍String,numbers,tables 字符串的操作注意是单引号,然后第二行中的print()函数有点像c++里面的cout,即可以根据输入的要打印的类型不同而显示,这输入式字符串,后面还会输入其他数据格式的输入.由于torch是交互式的,跟matlab很像所以直接打a也能显示输出. b

决策树(三)分类算法小结

引言 本文主要是对分类型决策树的一个总结.在分类问题中,决策树可以被看做是if-then规则的结合,也可以认为是在特定特征空间与类空间上的条件概率分布.决策树学习主要分为三个步骤:特征选择.决策树的生成与剪枝操作.本文简单总结ID3和C4.5算法,之后是决策树的修剪. ID3算法 ID3算法和核心是:在决策树各级节点上选择属性时,用信息增益(information gain)作为属性的选择标准,具体做法是:检测所有的属性,选择信息增益最大的属性产生决策树节点,由该属性的不同取值建立分支,再对各分