资源简介
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代码
相关资源
- 求两个矩阵相似性
- 模式识别-ID3决策树matlab代码
- adaboost 演示demo基于Matlab,学习算法包
- 决策树经典算法c4_5算法的matlab实现
- K-means算法的Matlab实现以及Iris数据集
- 机器学习、人工智能、数据挖掘中经
- matlab实现ID3 决策树算法
- matlab程序下的决策树与随机森林分类
- 数据挖掘 关联规则 Apriori算法 matlab实
- matlab实现决策树
- matlab决策树分类器
- 各种决策树(tree)分类的代码
- ID3的Matlab实现
- C4.5 基于C4.5的决策树算法
- RandomForest ID3决策树+随机森林算法生成
- 数据挖掘C4.5matlab算法
- 数据挖掘分类程序和实验报告matlab
- ID3决策树算法-iris数据集-matlab实现-决
- matlab实现决策
- 数据挖掘关联规则算法MATLAB实现
- C4.5算法的matlab实现连续值属性及西瓜
- 基于matlab数据挖掘分类算法研究,十
评论
共有 条评论