版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验三 决策树算法实验一、实验目的: 熟悉和掌握决策树的分类原理、实质和过程;掌握典型的学习算法 和实现技术。二、实验原理: 决策树学习和分类. 三、实验条件:四、实验内容:1 根据现实生活中的原型自己创建一个简单的决策树。2 要求用这个决策树能解决实际分类决策问题。五、实验步骤:1、验证性实验:(1)算法伪代码 算法Decision_Tree(data,AttributeName) 输入由离散值属性描述的训练样本集data; 候选属性集合AttributeName。 输出一棵决策树。 (1) 创建节点N; (2) If samples 都在同一类C中then (3) 返回N作为叶节点,以类C
2、标记; (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 的样本集合;/一个划分块 (11)If Sv为空 then (12)加上一个叶
3、节点,以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万以上-“3”
4、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
5、2 1 2 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
6、2 1 1 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 nargin<1 error('请输入数据集');else if isstr(DataSet) DataSet AttributValue=readdata2
7、(DataSet); else AttributValue=; endendif nargin<2 AttributName=;end Attributs=1:size(DataSet,2)-1; Tree=CreatTree(DataSet,Attributs); disp(char(13) 'The Decision Tree:'); showTree(Tree,0,0,1,AttributValue,AttributName); Rules=getRule(Tree); RulesMatrix=zeros(size(Rules,1),size(DataSet,2);
8、 for i=1:size(Rules,1) rule=cell2struct(Rules(i,1),'str'); rule=str2num(rule.str(1:(find(rule.str='C')-1) rule.str(find(rule.str='C')+1):length(rule.str); for j=1:(length(rule)-1)/2 RulesMatrix(i,rule(j-1)*2+1)=rule(j*2); end RulesMatrix(i,size(DataSet,2)=rule(length(rule); e
9、ndendfunction Tree=CreatTree(DataSet,Attributs) %决策树程序 输入为:数据集,属性名列表 %disp(Attributs); S ValRecords=ComputEntropy(DataSet,0); if(S=0) %当样例全为一类时退出,返回叶子节点类标 for i=1:length(ValRecords) if(length(ValRecords(i).matrix)=size(DataSet,1) break; end end Tree.Attribut=i; Tree.Child=; return; end if(length(Att
10、ributs)=0) %当条件属性个数为0时返回占多数的类标 mostlabelnum=0; mostlabel=0; for i=1:length(ValRecords) if(length(ValRecords(i).matrix)>mostlabelnum) mostlabelnum=length(ValRecords(i).matrix); mostlabel=i; end end Tree.Attribut=mostlabel; Tree.Child=; return; end for i=1:length(Attributs) Sa(i) ValRecord=ComputEn
11、tropy(DataSet,i); Gains(i)=S-Sa(i); AtrributMatric(i).val=ValRecord; end maxval maxindex=max(Gains); Tree.Attribut=Attributs(maxindex); Attributs2=Attributs(1:maxindex-1) Attributs(maxindex+1:length(Attributs); for j=1:length(AtrributMatric(maxindex).val) DataSet2=DataSet(AtrributMatric(maxindex).va
12、l(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) mostlabelnum=length(ValRecords(i).matrix); mostlabel=i; end e
13、nd Tree.Child(j).root.Attribut=mostlabel; Tree.Child(j).root.Child=; else Tree.Child(j).root=CreatTree(DataSet2,Attributs2); end end endfunction Entropy RecordVal=ComputEntropy(DataSet,attribut) %计算信息熵 if(attribut=0) clnum=0; for i=1:size(DataSet,1) if(DataSet(i,size(DataSet,2)>clnum) %防止下标越界 cla
14、ssnum(DataSet(i,size(DataSet,2)=0; clnum=DataSet(i,size(DataSet,2); RecordVal(DataSet(i,size(DataSet,2).matrix=; end classnum(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).matrix i; end Entropy=0; for j=
15、1:length(classnum) P=classnum(j)/size(DataSet,1); if(P=0) Entropy=Entropy+(-P)*log2(P); end end else valnum=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(DataSet(i,attribut
16、).matrix=; %将编号保留下来,以方便后面按值分割数据集 end if(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); end Value(DataSet(i,attribut).classnum(DataSet(i,size(DataSet,2)= Value(DataSet(
17、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; end Entropy=0; for j=1:valnum Entropys=0; for k=1:length(Value(j).classnum) P=Value(j).classnum(k)/Valu
18、eexamnum(j); if(P=0) Entropys=Entropys+(-P)*log2(P); end end Entropy=Entropy+(Valueexamnum(j)/size(DataSet,1)*Entropys; end endendfunction showTree(Tree,level,value,branch,AttributValue,AttributName) blank=; for i=1:level-1 if(branch(i)=1) blank=blank ' |' else blank=blank ' ' end en
19、d blank=blank ' ' if(level=0) blank=' (The Root):' else if isempty(AttributValue) blank=blank '|_' int2str(value) '_' else blank=blank '|_' value '_' end end if(length(Tree.Child)=0) %非叶子节点 if isempty(AttributName) disp(blank 'Attribut ' int2st
20、r(Tree.Attribut); else disp(blank 'Attribut ' AttributNameTree.Attribut); end if isempty(AttributValue) for j=1:length(Tree.Child)-1 showTree(Tree.Child(j).root,level+1,j,branch 1,AttributValue,AttributName); end showTree(Tree.Child(length(Tree.Child).root,level+1,length(Tree.Child),branch(1:length(branch)-1) 0 1,AttributValue,AttributName); else for j=1:length(Tree.Child)-1 showTree(Tree.Child(j).root,level+1,AttributValueTree.Attributj,branch 1,AttributValue,AttributName); end showTree(Tree.Child(length(Tree.Child).root,level+1,AttributValueTree.Attributlen
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 基于PCA降维优化课程设计
- 基于OCR的身份证信息提取系统最佳实践课程设计
- 异常行为日志审计开发课程设计
- 变音门铃课程设计
- 边坡工程课程设计抗滑桩
- 宾馆客房预订课程设计
- 苯的课程设计比赛
- 精对(间)苯二甲酸装置操作工岗位责任制考核试卷含答案
- 药品库存管理系统视频课程课程设计
- AI换脸视频制作要点课程设计
- 2026年辽宁高级档案职称考试(档案管理概论)模拟试题及答案
- 内蒙古城镇供用热合同示范文本模板
- GB/T 18329.2-2023滑动轴承多层金属滑动轴承第2部分:合金厚度≥2 mm的结合强度破坏性试验
- 《正面管教》分享阅读
- (班组)日常安全检查表
- YY/T 1837-2022医用电气设备可靠性通用要求
- GB 1207-2006电磁式电压互感器
- 洁净煤技术完整版ppt课件全册电子教案
- 加氢工艺安全知识培训内容课件
- 当代教育心理学(范围)课件
- 预应力锚索施工作业指导书
评论
0/150
提交评论