资源简介
matlab算法应用 数据挖掘课程中用决策树算法进行天气预测

代码片段和文件信息
function type=id3( PValue )
global node child_value child_node_num
[nodechild_valuechild_node_num]=ID3();
n=1; %从树的根结点(即node{1})开始查找
k=1;
while ~isempty(child_node_num{n})%当非空时执行循环语句
for i=1:length(child_value{n})
if PValue(node{n})==child_value{n}(i)
n=child_node_num{n}(i);break;
end
end
if i==length(child_value{n})
% 若这个值在分类器中不存在,则取其最近的值进行分类
PValue(node{n})=PValue(node{n})+0.1*k;
end
k=(-1)^k*( abs(k)+1 );
end
type=node{n};
end
% 函数返回一棵决策树
function [nodechild_valuechild_node_num]=ID3()
clear;
clear global node child_value child_node_num;%从工作空间清除指定的全局变量node child_value child_node_num
global node child_value child_node_num%将变量node child_value child_node_num定义成全局变量
[SL SW PL PW CN]=textread(‘traint .txt‘‘%f %f %f %f %s‘);
DValue=[SL SW PL PW]; %SL=DValue(:1)
for i=1:length(SL)
A(i)=i;
end
ClassPNum=[1 2 3 4];
m=0;
[nodechild_valuechild_node_num]=TreeNode( DValue CN A ClassPNumm );
end
% 生成树结点
% DValue--前四列数据
% A--参与划分的行号
% CN--属性值的集合(第5列数据)
% ClassPNum为划分的剩余属性编号
% 当前node的父亲结点为node{m}
function [nodechild_valuechild_node_num]=TreeNode( DValue CN A ClassPNumm)
global node child_value child_node_num
%ClassName={‘SL‘ ‘SW‘ ‘PL‘ ‘PW‘};
n=length(node);
if m>0
%如果父亲结点存在,将本结点的序号存入父亲结点的子结点序号集中
k=length(child_node_num{m});
child_node_num{m}(k+1)=n+1;
end
% 1、样本为空,则树为空
if isempty(DValue)%DValue为空阵列时isempty(DValue)=1否则返回0
node{ n+1 }=[];
child_value{ n+1 }=[];
child_node_num{ n+1 }=[];
return;
end
% 2、用于划分的剩余属性为空,选择多数元组所在的类作为结点
if isempty( ClassPNum )
node{ n+1 }=find_most( CNA );
child_value{ n+1 }=[];
child_node_num{ n+1 }=[];
return;
end
% 3、样本中所有数据都属于同一类,将此类作为结点
CNRowNum=CN_sta( CN A);
if length( find(CNRowNum==0) )>=2
node{ n+1 }=CN{A(1)};
child_value{ n+1 }=[];
child_node_num{ n+1 }=[];
return;
% 4、样本中所有数据不属于同一类
else
I=Exp( CNA );
for i=1:length( ClassPNum )
Entropy(i)=avg_entropy( DValue(:ClassPNum(i)) A CN);
Gain(i)=I-Entropy(i);
end
% 4.1、各属性的信息增益均小于0,选择多数元组所在的类作为结点
if max(Gain)<=0
node{ n+1 }=find_most( CNA );
child_value{ n+1 }=[];
child_node_num{ n+1 }=[];
return;
% 4.2、在信息增益最大的属性上进行划分
else
maxG=find( Gain==max(Gain) );
[PValue RowNum]=type_sta( DValue(:ClassPNum(maxG(1))) A );
node{ n+1 }=ClassPNum(maxG(1));
child_value{ n+1 }=PValue;
child_node_num{ n+1 }=[];
ClassPNum(maxG)=[]; % 删除ClassPNum(maxG)--已经进行划分的属性
for i=1:length(P
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 5462 2012-11-28 22:41 天气预测\id3.m
文件 2284 2012-11-28 22:42 天气预测\mymain.m
文件 25960 2012-11-29 10:15 天气预测\traint .txt
目录 0 2012-12-10 09:17 天气预测\
- 上一篇:MATLAB万年历源码
- 下一篇:ARFIMA预测MATLAB代码
相关资源
- matlab开发-多变量决策树
- facebook数据集
- 基于MATLAB的数据挖掘实验
- Matlab编写的决策树及剪枝算法实现数
- C4.5决策树分类+MATLAB详细代码+解释文
- 经济预测方法及MATLAB实现
- MATLAB神经网络43个案例分析源码
- foodmart 2000
- MATLAB数据分析与挖掘实战pdf完整版
- 实战大数据 MATLAB数据挖掘详解与实践
- 配套程序和数据_量化投资-MATLAB数据挖
- 量化投资 数据挖掘技术与实践 MATL
- 课程设计时用的数据挖掘论文
- 决策树算法matlab
- matlab_决策树C4.5算法源代码
- 基于信息熵的粗糙集属性约简MATLAB程
- matlab 云模型发生器 包括基本云发生器
- ID3的MATLAB实现244799
- ID3决策树-MATLAB程序
- 决策树id3 matlab源码
- matlab数据挖掘程序
- Matlab数据挖掘算法工具
- ID3算法MATLAB实现,机器学习作业
- matlab实现DTW算法
- 可拓关联函数
- 求两个矩阵相似性
- 模式识别-ID3决策树matlab代码
- adaboost 演示demo基于Matlab,学习算法包
- 决策树经典算法c4_5算法的matlab实现
- K-means算法的Matlab实现以及Iris数据集
评论
共有 条评论