简单易学的机器学习算法——决策树之ID3算法
一、决策树分类算法概述
二、ID3算法的概述
三、划分数据的依据
1、信息熵(Entropy)
2、信息增益(Information gain)
四、实验仿真
1、数据预处理
2、实验结果
%% Decision Tree
% ID3 %导入数据
%data = [1,1,1;1,1,1;1,0,0;0,1,0;0,1,0]; data = [0,2,0,0,0;
0,2,0,1,0;
1,2,0,0,1;
2,1,0,0,1;
2,0,1,0,1;
2,0,1,1,0;
1,0,1,1,1;
0,1,0,0,0;
0,0,1,0,1;
2,1,1,0,1;
0,1,1,1,1;
1,1,0,1,1;
1,2,1,0,1;
2,1,0,1,0]; % 生成决策树
createTree(data);
生成决策树
function [ output_args ] = createTree( data )
[m,n] = size(data);
disp('original data:');
disp(data);
classList = data(:,n);
classOne = 1;%记录第一个类的个数
for i = 2:m
if classList(i,:) == classList(1,:)
classOne = classOne+1;
end
end % 类别全相同
if classOne == m
disp('final data: ');
disp(data);
return;
end % 特征全部用完
if n == 1
disp('final data: ');
disp(data);
return;
end bestFeat = chooseBestFeature(data);
disp(['bestFeat: ', num2str(bestFeat)]);
featValues = unique(data(:,bestFeat));
numOfFeatValue = length(featValues); for i = 1:numOfFeatValue
createTree(splitData(data, bestFeat, featValues(i,:)));
disp('-------------------------');
end
end
选择信息增益最大的特征
%% 选择信息增益最大的特征
function [ bestFeature ] = chooseBestFeature( data )
[m,n] = size(data);% 得到数据集的大小 % 统计特征的个数
numOfFeatures = n-1;%最后一列是类别
% 原始的熵
baseEntropy = calEntropy(data); bestInfoGain = 0;%初始化信息增益
bestFeature = 0;% 初始化最佳的特征位 % 挑选最佳的特征位
for j = 1:numOfFeatures
featureTemp = unique(data(:,j));
numF = length(featureTemp);%属性的个数
newEntropy = 0;%划分之后的熵
for i = 1:numF
subSet = splitData(data, j, featureTemp(i,:));
[m_1, n_1] = size(subSet);
prob = m_1./m;
newEntropy = newEntropy + prob * calEntropy(subSet);
end %计算增益
infoGain = baseEntropy - newEntropy; if infoGain > bestInfoGain
bestInfoGain = infoGain;
bestFeature = j;
end
end
end
计算熵
划分数据
function [ subSet ] = splitData( data, axis, value )
[m,n] = size(data);%得到待划分数据的大小 subSet = data;
subSet(:,axis) = [];
k = 0;
for i = 1:m
if data(i,axis) ~= value
subSet(i-k,:) = [];
k = k+1;
end
end
end
简单易学的机器学习算法——决策树之ID3算法的更多相关文章
- 【Machine Learning·机器学习】决策树之ID3算法(Iterative Dichotomiser 3)
目录 1.什么是决策树 2.如何构造一棵决策树? 2.1.基本方法 2.2.评价标准是什么/如何量化评价一个特征的好坏? 2.3.信息熵.信息增益的计算 2.4.决策树构建方法 3.算法总结 @ 1. ...
- 机器学习之决策树(ID3 、C4.5算法)
声明:本篇博文是学习<机器学习实战>一书的方式路程,系原创,若转载请标明来源. 1 决策树的基础概念 决策树分为分类树和回归树两种,分类树对离散变量做决策树 ,回归树对连续变量做决策树.决 ...
- 机器学习之决策树(ID3)算法
最近刚把<机器学习实战>中的决策树过了一遍,接下来通过书中的实例,来温习决策树构造算法中的ID3算法. 海洋生物数据: 不浮出水面是否可以生存 是否有脚蹼 属于鱼类 1 是 是 是 2 ...
- 简单易学的机器学习算法——EM算法
简单易学的机器学习算法——EM算法 一.机器学习中的参数估计问题 在前面的博文中,如“简单易学的机器学习算法——Logistic回归”中,采用了极大似然函数对其模型中的参数进行估计,简单来讲即对于一系 ...
- 简单易学的机器学习算法—SVD奇异值分解
简单易学的机器学习算法-SVD奇异值分解 一.SVD奇异值分解的定义 假设M是一个的矩阵,如果存在一个分解: 其中的酉矩阵,的半正定对角矩阵,的共轭转置矩阵,且为的酉矩阵.这样的分解称为M的奇 ...
- 简单易学的机器学习算法—基于密度的聚类算法DBSCAN
简单易学的机器学习算法-基于密度的聚类算法DBSCAN 一.基于密度的聚类算法的概述 我想了解下基于密度的聚类算法,熟悉下基于密度的聚类算法与基于距离的聚类算法,如K-Means算法之间的区别. ...
- 决策树之ID3算法
一.决策树之ID3算法简述 1976年-1986年,J.R.Quinlan给出ID3算法原型并进行了总结,确定了决策树学习的理论.这可以看做是决策树算法的起点.1993,Quinlan将ID3算法改进 ...
- 【Machine Learning】决策树之ID3算法 (2)
决策树之ID3算法 Content 1.ID3概念 2.信息熵 3.信息增益 Information Gain 4. ID3 bias 5. Python算法实现(待定) 一.ID3概念 ID3算法最 ...
- 如何理解C4.5算法解决了ID3算法的偏向于选择取值较多的特征问题
如何理解C4.5算法解决了ID3算法的偏向于选择取值较多的特征问题 考虑一个极端情况,某个属性(特征)的取值很多,以至于每一个取值对应的类别只有一个.这样根据\[H(D) - H(D|A)\]可以得知 ...
随机推荐
- python中小整数对象池及intern机制
小整数对象池: Python为了优化速度,使用了小整数对象池,避免为整数频繁申请和销毁 Python 对小整数的定义是 [-5, 256] 这些整数对象是提前建立好的,不会被垃圾回收,所有位于这个范围 ...
- [ZJOI2006]碗的叠放
Description 小H有n个碗需要放进橱柜,她希望将他们叠起来放置.你知道每个碗都是规则的圆柱体,并且都是上宽下窄,你已经测量出了每个碗的两个半径及高,请你帮小H找出一种叠放顺序,使得叠放出来的 ...
- python 爬取网页简单数据---以及详细解释用法
一.准备工作(找到所需网站,获取请求头,并用到请求头) 找到所需爬取的网站(这里举拉勾网的一些静态数据的获取)----------- https://www.lagou.com/zhaopin/Pyt ...
- 分手是祝愿:dp
Description Zeit und Raum trennen dich und mich. 时空将你我分开. B 君在玩一个游戏,这个游戏n个灯和n个开关组成,给定这n个灯的初始状态,下标为从1 ...
- Java自动化测试框架-11 - TestNG之annotation与并发测试篇 (详细教程)
1.简介 TestNG中用到的annotation的快速预览及其属性. 2.TestNG基本注解(注释) 注解 描述 @BeforeSuite 注解的方法只运行一次,在当前suite所有测试执行之前执 ...
- P4873 [USACO14DEC] Cow Jog_Gold 牛慢跑(乱搞?二分?)
(话说最近写的这类题不少啊...) 化简:给定数轴上一系列点,向正方向移动,点不能撞在一起,如果碰到一起就需要放到另外一行,求要多少行才能满足所有点不相撞的条件. (被标签误解,老是想到二分答案... ...
- day 2上午 elect 选举 背包
#include<iostream> using namespace std; int n; ; ]; long long p[maxn]; long long dp[maxn][maxn ...
- 大数据之路day01_1--Java下载、安装等配置
从今天开始,我就正式的走上大数据的道路了,如果说我为啥要去学习大数据,可能我的初衷是以后可以接触到人工智能方面的技术,后来在自学的过程中发现,学习人工智能,需要扎实的算法,以及对大量数据的处理,再者, ...
- aop的简单使用(代码和配置记录)
Spring aop 简单示例 简单的记录一下spring aop的一个示例 基于两种配置方式: 基于xml配置 基于注解配置 这个例子是模拟对数据库的更改操作添加事物 其实并没有添加,只是简单的输出 ...
- 2019CSP day1t1 格雷码
题目描述 通常,人们习惯将所有 \(n\) 位二进制串按照字典序排列,例如所有 \(2\) 位二进制串按字典序从小到大排列为:\(00,01,11,10\). 格雷码(\(Gray Code\))是一 ...