资源简介
包含C4.5算法对UCI wine 数据集的MATLAB代码和详细的说明文档
代码片段和文件信息
function tree = build_tree(train_features train_targets discrete_dim layervarargin)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%调用C4.5决策树算法建立决策树
%training_features:训练样本的特征
%training_targets:训练样本所属类别
%discrete_dim:各个维度的特征是否是连续特征,0指的是连续特征
%layer:节点所属树的层数
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if nargin>5
pruning=varargin{1};
else
pruning=35;
end
[fea L]= size(train_features);
ale= unique(train_targets);
tree.feature_tosplit= 0;
tree.location=inf; %初始化分裂位置是inf
if isempty(train_features)
return
end
if ((pruning > L) || (L == 1) ||(length(ale) == 1)) %如果剩余训练样本太小(小于pruning),或只剩一个,或只剩一类标签,退出
his= hist(train_targets length(ale)); %统计样本的标签,分别属于每个标签的数目
[num largest]= max(his);
tree.value= [];
tree.location = [];
tree.child= ale(largest);
return
end
for i = 1:length(ale) %遍历判别标签的数目
Pnode(i) = length(find(train_targets == ale(i))) / L;
end
%计算当前节点的信息熵
Inode = -sum(Pnode.*log2(Pnode));
el= zeros(1 fea); %记录每个特征的信息增益率
location= ones(1 fea)*inf;
for i = 1:fea %遍历每个特征
data= train_features(i:);
pe= unique(data);
nu= length(pe);
if (discrete_dim(i)) %离散特征
node= zeros(length(ale) nu);
for j = 1:length(ale) %遍历每个标签
for k = 1:nu %遍历每个特征值
indices = find((train_targets == ale(j)) && (train_features(i:) == pe(k)));
node(jk) = length(indices);
end
end
rocle= sum(node);
P1= repmat(rocle length(ale) 1);
P1= P1 + eps*(P1==0);
node= node./P1;
rocle= rocle/sum(rocle);
info= sum(-node.*log(eps+node)/log(2)); %每个特征分别计算信息熵eps是为了防止对数为1
el(i) = (Inode-sum(rocle.*info))/(-sum(rocle.*log(eps+rocle)/log(2))); %信息增益率
else %连续特征
node= zeros(length(ale) 2);
[sorted_data indices] = sort(data);
sorted_targets = train_targets(indices);
%计算分裂信息度量
I = zeros(1nu);
spl= zeros(1 nu);
for j = 1:nu-1 %特征i有Nbins个连续值,设定Nbins-1个可能的分割点,对每个分割点计算信息增益率
node(: 1) = hist(sorted_targets(find(sorted_data <= pe(j))) ale);
node(: 2) = hist(sorted_targets(find(sorted_data > pe(j))) ale);
Ps= sum(node)/L;
node= node/L;
rocle= sum(node);
P1= repmat(rocle length(ale) 1);
P1= P1 + eps*(P1==0);
info= sum(-node./P1.*log(eps+node./P1)/log(2)); %信息增益
I(j)= Inode - sum(info.*Ps);
spl(j) =I(j)/(-sum(Ps.*log(eps+Ps)/log(2))); %第j个分割点的信息增益率
end
[~ s] = max(I); %求所有分割点的最大信息增益率
el(i) = spl(s);
location
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 353 2018-04-14 21:41 C4.5决策树分类大作业\readme.txt
文件 2635336 2018-04-26 22:44 C4.5决策树分类大作业\提交\C4.5决策树分类大作业.docx
文件 687 2018-04-14 21:19 C4.5决策树分类大作业\提交\readme.txt
文件 5342 2018-04-26 22:32 C4.5决策树分类大作业\提交\实验代码\build_tree.m
文件 1382 2018-04-13 19:08 C4.5决策树分类大作业\提交\实验代码\C4_5.m
文件 586 2018-04-13 19:14 C4.5决策树分类大作业\提交\实验代码\cal_accuracy.m
文件 737 2018-04-13 19:12 C4.5决策树分类大作业\提交\实验代码\discreteOrContinue.m
文件 3997 2018-04-14 21:50 C4.5决策树分类大作业\提交\实验代码\magnify.m
文件 1790 2018-04-13 19:08 C4.5决策树分类大作业\提交\实验代码\predict.m
文件 1000 2018-04-14 21:46 C4.5决策树分类大作业\提交\实验代码\runtime_C4_5.mat
文件 996 2018-04-14 21:46 C4.5决策树分类大作业\提交\实验代码\runtime_CART.mat
文件 1389 2018-04-26 22:44 C4.5决策树分类大作业\提交\实验代码\tree.mat
文件 1869 2018-04-26 22:36 C4.5决策树分类大作业\提交\实验代码\wine.m
文件 11746 2018-04-13 10:41 C4.5决策树分类大作业\提交\实验代码\WineData.txt
文件 248540 2018-04-13 19:47 C4.5决策树分类大作业\资料\1.png
文件 3268 2018-04-13 19:17 C4.5决策树分类大作业\资料\C4.5.PNG
文件 3298 2018-04-13 19:18 C4.5决策树分类大作业\资料\C4.5_1.PNG
文件 2187 2018-04-13 19:24 C4.5决策树分类大作业\资料\C4.5_11.PNG
文件 2330 2018-04-13 19:27 C4.5决策树分类大作业\资料\C4.5_111.PNG
文件 2315 2018-04-13 19:27 C4.5决策树分类大作业\资料\C4.5_112.PNG
文件 2347 2018-04-13 19:24 C4.5决策树分类大作业\资料\C4.5_12.PNG
文件 2338 2018-04-13 19:25 C4.5决策树分类大作业\资料\C4.5_13.PNG
文件 3275 2018-04-13 19:25 C4.5决策树分类大作业\资料\C4.5_14.PNG
文件 3230 2018-04-13 19:19 C4.5决策树分类大作业\资料\C4.5_2.PNG
文件 23313 2018-04-13 23:17 C4.5决策树分类大作业\资料\C4.5分类准确度.fig
文件 151884 2018-04-14 11:02 C4.5决策树分类大作业\资料\C4.5和CART算法复杂度分析.fig
文件 25050 2018-04-14 11:56 C4.5决策树分类大作业\资料\C4.5和CART运行结果.fig
文件 49658 2018-04-14 11:54 C4.5决策树分类大作业\资料\C4.5和CART运行结果.png
文件 1914947 2018-04-14 11:53 C4.5决策树分类大作业\资料\C4.5和CART运行结果_ps简单处理.png
文件 125166 2018-04-14 20:52 C4.5决策树分类大作业\资料\C4.5数据分类大作业.docx
............此处省略21个文件信息
相关资源
- DOG高斯差分
- 数字图像处理MATLAB编程学习及演示软
- matlab中将txt文件转换为mat格式
- matlab通信工程仿真源码张德丰等编著
- MATLAB课件含习题和答案
- 原型基于颜色的图像检索与MATLAB外文
- matlab做软件界面
- 遥感图像变化检测经典
- 基于MATLAB的数字滤波器设计
- 基于MATLAB与OpenCV相结合的双目立体视
- 二值图像目标邻域点法边界跟踪算法
- 盲信号的语音分离MATLAB程序
- 基于matlab的MIMO仿真
- Matlab中,用c或m语言编写s函数.rar
- 水平集 matlab实现 内含原理论文!效果
- matlab图像处理源程序包
- matlab课程设计实现photoshop功能
- 通信原理MATLAB仿真实验指导书V2.0林志
- 信号与系统分析及MATLAB实现高清pdf
- 基于matlab的GUI编写的UDP测试上位机
- 细胞图像分割与计数
- AdaBoost等MatLab代码带测试数据
- matlab 地统计工具箱 SEKSGUI0.65.rar
- Solutions Manual for Digital Signal Processing
- [MATLAB_GUI设计学习手记]源代码.rar
- Kalman滤波器理论与应用——基于MATL
- 数字信号处理及其MATLAB实现.pdf99610
- MATLAB数学建模算法及分析
- 相机标定Matlab程序
- 现代数字图像处理技术提高及应用案
评论
共有 条评论