实验三决策树算法实验实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三决策树算法实验
一、实验目的:熟悉和掌握决策树的分类原理、实质和过程;掌握典型的学习算法和实现技术。
二、实验原理: 决策树学习和分类.
三、实验条件:
四、实验内容:
1 根据现实生活中的原型自己创建一个简单的决策树。
2 要求用这个决策树能解决实际分类决策问题。
五、实验步骤:
1、验证性实验:
(1)算法伪代码
算法Decision_Tree(data,AttributeName) 输入由离散值属性描述的训练样本集data; 候选属性集合AttributeName。
输出一棵决策树。(1)创建节点N;
资料.
(2)If samples 都在同一类C中then (3)返回N作为叶节点,以类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 的样本集合;//一个划分块(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:5000~2万----“1”;2万~4万----“2”;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 2
1 2 1 1 2 2 2 2 1
2 1 4 1 2 1 2 2 1
2 1 1 1 1 2 2 2 2
1 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 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
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(DataSet);
else
AttributValue=[];
end
end
资料.
if 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));
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
资料.