收藏 分享(赏)

实验三 决策树算法实验实验报告.doc

上传人:精品资料 文档编号:10739737 上传时间:2020-01-03 格式:DOC 页数:13 大小:105.50KB
下载 相关 举报
实验三 决策树算法实验实验报告.doc_第1页
第1页 / 共13页
实验三 决策树算法实验实验报告.doc_第2页
第2页 / 共13页
实验三 决策树算法实验实验报告.doc_第3页
第3页 / 共13页
实验三 决策树算法实验实验报告.doc_第4页
第4页 / 共13页
实验三 决策树算法实验实验报告.doc_第5页
第5页 / 共13页
点击查看更多>>
资源描述

1、实验三 决策树算法实验一、实验目的: 熟悉和掌握决策树的分类原理、实质和过程;掌握典型的学习算法 和实现技术。二、实验原理: 决策树学习和分类 . 三、实验条件:四、实验内容:1 根据现实生活中的原型自己创建一个简单的决策树。2 要求用这个决策树能解决实际分类决策问题。五、实验步骤:1、验证性实验:(1)算法伪代码 算法 Decision_Tree(data,AttributeName) 输入由离散值属性描述的训练样本集 data; 候选属性集合 AttributeName。 输出一棵决策树。 (1) 创建节点 N; (2) If samples 都在同一类 C 中 then (3) 返回 N

2、 作为叶节点,以类 C 标记; (4) If attribute_list 为空 then (5) 返回 N 作为叶节点,以 samples 中最普遍的类标记;/ 多数表决 (6) 选择 attribute_list 中具有最高信息增益的属性 test_attribute; (7) 以test_attribute 标记节点 N; (8) For each test_attribute 的已知值 v /划分 samples ;(9) 由节点 N 分出一个对应 test_attribute=v 的分支; (10 令 Sv 为 samples 中 test_attribute=v 的样本集合;/一个

3、划分块 (11)If Sv 为空 then (12)加上一个叶节点,以 samples 中最普遍的类标记; (13)Else 加入一个由 Decision_Tree(Sv,attribute_list-test_attribute)返回节点值。(2 )实验数据预处理 Age:30 岁以下标记为“1” ;30 岁以上 50 岁以下标记为“2 ”;50 岁以上标记为“3” 。 Sex:FEMAL-“1” ;MALE-“2 ” Region:INNER CITY-“1”;TOWN-“2 ”; RURAL-“3”; SUBURBAN-“4” Income:50002 万-“1” ;2 万 4 万-“2

4、” ;4 万以上-“3”Married Children Car Mortgage Pep:以上五个条件,若为“ 是”标记为“1” ,若为“否”标记为“2” 。Age sex region income married children car mortgage pep 1 2 1 1 2 1 1 2 21 2 1 1 2 2 2 2 12 1 4 1 2 1 2 2 1 2 1 1 1 1 2 2 2 21 2 1 1 1 2 2 2 2 1 2 1 1 2 1 2 1 1 2 1 2 1 1 2 1 1 2 2 1 1 1 2 1 1 2 1 2 1 3 1 2 2 1 2 1 2 1 2

5、 2 2 1 2 2 2 2 2 1 2 2 2 2 1 1 2 1 2 2 1 1 2 1 1 2 2 1 2 1 2 2 1 2 1 1 1 2 1 2 2 2 1 3 2 1 2 1 1 1 2 2 1 1 1 2 1 1 1 2 1 1 1 3 2 2 2 1 2 1 3 1 2 2 1 2 2 2 1 3 2 3 3 1 1 1 2 1 3 2 2 3 1 2 1 1 2 3 1 3 3 1 1 2 2 1 3 2 1 3 1 2 1 2 2 3 2 1 3 1 1 1 1 1 3 1 1 3 1 2 1 1 2 3 1 3 3 1 2 2 2 2 3 2 4 3 1 2 2 1 1

6、 3 1 3 3 2 2 1 1 2(3 ) Matlab 语句:Tree RulesMatrix= DecisionTree(DataSet, AttributName);六、实验结果:实验程序:function Tree RulesMatrix=DecisionTree(DataSet,AttributName)%输入为训练集,为离散后的数字,如记录 1:1 1 3 2 1;%前面为属性列,最后一列为类标if narginmostlabelnum)mostlabelnum=length(ValRecords(i).matrix);mostlabel=i;endendTree.Attribu

7、t=mostlabel;Tree.Child=;return;endfor i=1:length(Attributs)Sa(i) ValRecord=ComputEntropy(DataSet,i);Gains(i)=S-Sa(i);AtrributMatric(i).val=ValRecord;endmaxval maxindex=max(Gains);Tree.Attribut=Attributs(maxindex);Attributs2=Attributs(1:maxindex-1) Attributs(maxindex+1:length(Attributs);for j=1:lengt

8、h(AtrributMatric(maxindex).val)DataSet2=DataSet(AtrributMatric(maxindex).val(j).matrix,1:maxindex-1) DataSet(AtrributMatric(maxindex).val(j).matrix,maxindex+1:size(DataSet,2); if(size(DataSet2,1)=0)mostlabelnum=0;mostlabel=0;for i=1:length(ValRecords)if(length(ValRecords(i).matrix)mostlabelnum)mostl

9、abelnum=length(ValRecords(i).matrix);mostlabel=i;endendTree.Child(j).root.Attribut=mostlabel;Tree.Child(j).root.Child=;elseTree.Child(j).root=CreatTree(DataSet2,Attributs2);endend endfunction Entropy RecordVal=ComputEntropy(DataSet,attribut) %计算信息熵if(attribut=0)clnum=0;for i=1:size(DataSet,1)if(Data

10、Set(i,size(DataSet,2)clnum) %防止下标越界classnum(DataSet(i,size(DataSet,2)=0;clnum=DataSet(i,size(DataSet,2);RecordVal(DataSet(i,size(DataSet,2).matrix=;endclassnum(DataSet(i,size(DataSet,2)=classnum(DataSet(i,size(DataSet,2)+1;RecordVal(DataSet(i,size(DataSet,2).matrix=RecordVal(DataSet(i,size(DataSet,2

11、).matrix i;endEntropy=0;for j=1:length(classnum)P=classnum(j)/size(DataSet,1);if(P=0)Entropy=Entropy+(-P)*log2(P);endendelsevalnum=0;for i=1:size(DataSet,1)if(DataSet(i,attribut)valnum) %防止参数下标越界clnum(DataSet(i,attribut)=0;valnum=DataSet(i,attribut);Valueexamnum(DataSet(i,attribut)=0;RecordVal(DataS

12、et(i,attribut).matrix=; %将编号保留下来,以方便后面按值分割数据集endif(DataSet(i,size(DataSet,2)clnum(DataSet(i,attribut) %防止下标越界Value(DataSet(i,attribut).classnum(DataSet(i,size(DataSet,2)=0;clnum(DataSet(i,attribut)=DataSet(i,size(DataSet,2);endValue(DataSet(i,attribut).classnum(DataSet(i,size(DataSet,2)= Value(DataS

13、et(i,attribut).classnum(DataSet(i,size(DataSet,2)+1;Valueexamnum(DataSet(i,attribut)= Valueexamnum(DataSet(i,attribut)+1;RecordVal(DataSet(i,attribut).matrix=RecordVal(DataSet(i,attribut).matrix i;endEntropy=0;for j=1:valnumEntropys=0;for k=1:length(Value(j).classnum)P=Value(j).classnum(k)/Valueexam

14、num(j);if(P=0)Entropys=Entropys+(-P)*log2(P);endendEntropy=Entropy+(Valueexamnum(j)/size(DataSet,1)*Entropys;endendendfunction showTree(Tree,level,value,branch,AttributValue,AttributName)blank=;for i=1:level-1if(branch(i)=1)blank=blank |; elseblank=blank ; endendblank=blank ; if(level=0)blank= (The

15、Root):;elseif isempty(AttributValue)blank=blank |_ int2str(value) _;elseblank=blank |_ value _;endendif(length(Tree.Child)=0) %非叶子节点if isempty(AttributName)disp(blank Attribut int2str(Tree.Attribut);elsedisp(blank Attribut AttributNameTree.Attribut);endif isempty(AttributValue)for j=1:length(Tree.Ch

16、ild)-1showTree(Tree.Child(j).root,level+1,j,branch 1,AttributValue,AttributName);endshowTree(Tree.Child(length(Tree.Child).root,level+1,length(Tree.Child),branch(1:length(branch)-1) 0 1,AttributValue,AttributName);elsefor j=1:length(Tree.Child)-1showTree(Tree.Child(j).root,level+1,AttributValueTree.

17、Attributj,branch 1,AttributValue,AttributName);endshowTree(Tree.Child(length(Tree.Child).root,level+1,AttributValueTree.Attributlength(Tree.Child),branch(1:length(branch)-1) 0 1,AttributValue,AttributName);endelseif isempty(AttributValue)disp(blank leaf int2str(Tree.Attribut);elsedisp(blank leaf Att

18、ributValuelength(AttributValue)Tree.Attribut);endend endfunction Rules=getRule(Tree)if(length(Tree.Child)=0)Rules=;for i=1:length(Tree.Child)content=getRule(Tree.Child(i).root);%disp(content);%disp(num2str(Tree.Attribut) , num2str(i) ,);for j=1:size(content,1)rule=cell2struct(content(j,1),str);content(j,1)=num2str(Tree.Attribut) , num2str(i) , rule.str;endRules=Rules;content;endelseRules=C num2str(Tree.Attribut);end end

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报