决策树程序实验word版本.doc
《决策树程序实验word版本.doc》由会员分享,可在线阅读,更多相关《决策树程序实验word版本.doc(21页珍藏版)》请在咨信网上搜索。
1、决策树程序实验精品文档决策树程序实验众所周知,数据库技术从20世纪80年代开始,已经得到广泛的普及和应用。随着数据库容量的膨胀,特别是数据仓库以及web等新型数据源的日益普及,人们面临的主要问题不再是缺乏足够的信息可以使用,而是面对浩瀚的数据海洋如何有效地利用这些数据。从数据中生成分类器的一个特别有效的方法是生成一个决策树(Decision Tree)。决策树表示方法是应用最广泛的逻辑方法之一,它从一组无次序、无规则的事例中推理出决策树表示形式的分类规则。决策树分类方法采用自顶向下的递归方式,在决策树的内部结点进行属性值的比较并根据不同的属性值判断从该结点向下的分支,在决策树的叶结点得到结论。
2、所以从决策树的根到叶结点的一条路径就对应着一条合取规则,整棵决策树就对应着一组析取表达式规则。决策树是应用非常广泛的分类方法,目前有多种决策树方法,如ID3、CN2、SLIQ、SPRINT等。一、问题描述1.1相关信息决策树是一个类似于流程图的树结构,其中每个内部结点表示在一个属性上的测试,每个分支代表一个测试输入,而每个树叶结点代表类或类分布。数的最顶层结点是根结点。一棵典型的决策树如图1所示。它表示概念buys_computer,它预测顾客是否可能购买计算机。内部结点用矩形表示,而树叶结点用椭圆表示。为了对未知的样本分类,样本的属性值在决策树上测试。决策树从根到叶结点的一条路径就对应着一条
3、合取规则,因此决策树容易转化成分类规则。图1ID3算法:决策树中每一个非叶结点对应着一个非类别属性,树枝代表这个属性的值。一个叶结点代表从树根到叶结点之间的路径对应的记录所属的类别属性值。每一个非叶结点都将与属性中具有最大信息量的非类别属性相关联。采用信息增益来选择能够最好地将样本分类的属性。信息增益基于信息论中熵的概念。ID3总是选择具有最高信息增益(或最大熵压缩)的属性作为当前结点的测试属性。该属性使得对结果划分中的样本分类所需的信息量最小,并反映划分的最小随机性或“不纯性”。1.2问题重述1、目标概念为“寿险促销”2、计算每个属性的信息增益3、确定根节点的测试属性模型求解构造决策树的方法
4、是采用自上而下的递归构造,其思路是:以代表训练样本的单个结点开始建树(步骤1)。如果样本都在同一类,则该结点成为树叶,并用该类标记(步骤2和3)。否则,算法使用称为信息增益的机遇熵的度量为启发信息,选择能最好地将样本分类的属性(步骤6)。该属性成为该结点的“测试”或“判定”属性(步骤7)。值得注意的是,在这类算法中,所有的属性都是分类的,即取离散值的。连续值的属性必须离散化。对测试属性的每个已知的值,创建一个分支,并据此划分样本(步骤810)。算法使用同样的过程,递归地形成每个划分上的样本决策树。一旦一个属性出现在一个结点上,就不必考虑该结点的任何后代(步骤13)。递归划分步骤,当下列条件之一
5、成立时停止:(a)给定结点的所有样本属于同一类(步骤2和3)。(b)没有剩余属性可以用来进一步划分样本(步骤4)。在此情况下,采用多数表决(步骤5)。这涉及将给定的结点转换成树叶,并用samples中的多数所在类别标记它。换一种方式,可以存放结点样本的类分布。(c)分支test_attribute=ai 没有样本。在这种情况下,以samples中的多数类创建一个树叶(步骤12)。算法Decision_Tree(samples,attribute_list)输入由离散值属性描述的训练样本集samples;候选属性集合attribute_list。输出一棵决策树。(1) 创建节点N;(2) If
6、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 的样本集合;/一
7、个划分块(11) If Sv为空 then (12) 加上一个叶节点,以samples中最普遍的类标记;(13) Else 加入一个由Decision_Tree(Sv,attribute_list-test_attribute)返回节点值E(S)=(-915)log2(915)-(615)log2(615)=0.971Values(收入范围)=20-30K,30-40k,40-50K,50-60K E(S(20-30K)= (-24)log2(24)- (24)log2(24)=1E(S(30-40K)= (-45)log2(45)- (15)log2(15)=0.7219E(S(40-50K
8、)= (-14)log2(14)- (34)log2(34)=0.8113E(S(50-60K)= (-22)log2 (22)- (02)log2(02)=0所以E(S,收入范围)=(4/15) E(S(20-30K) +(5/15) E(S(30-40K) +(4/15) E(S(40-50K) +(2/15) E(S(50-60K)=0.7236Gain(S,收入范围)=0.971-0.7236=0.2474同理:计算“保险”,“性别”,“年龄”的信息增益为:E(S)=(-915)log2(915)-(615)log2(615)=0.971Insurance(保险)=yes, noE(S
9、(yes)= (-33)log2 (33)- (03)log2(03)=0E(S(no)= (-612)log2 (612)- (612)log2(612)=1E(S, 保险)=(3/15) E(S(yes) +(12/15) E(S(no) =0.8Gain(S, 保险)=0.971-0.8=0.171E(S)=(-915)log2(915)-(615)log2(615)=0.971sex(性别)=male, femaleE(S(male)= (-37)log2 (37)- (47)log2(47)=0.9852E(S(female)= (-68)log2 (68)- (28)log2(28
10、)=0.8113E(S, 性别)=(7/15) E(S(male) +(8/15) E(S(female) =0.8925Gain(S, 性别)=0.971-0.8925=0.0785E(S)=(-915)log2(915)-(615)log2(615)=0.971age(年龄)=1540,41 60E(S(1540)= (-67)log2 (67)- (17)log2(17)=0.5917E(S(41 60)= (-38)log2 (38)- (58)log2(58)=0.9544E(S, 年龄)=(7/15) E(S(1540) +(8/15) E(S(41 60) =0.7851Gain
11、(S, 年龄)=0.971-0.7851=0.1859代码package DecisionTree;import java.util.ArrayList;/* * 决策树结点类 */public class TreeNode private String name; /节点名(分裂属性的名称)private ArrayList rule; /结点的分裂规则ArrayList child; /子结点集合private ArrayListArrayList datas; /划分到该结点的训练元组private ArrayList candAttr; /划分到该结点的候选属性public TreeN
12、ode() this.name = ;this.rule = new ArrayList();this.child = new ArrayList();this.datas = null;this.candAttr = null;public ArrayList getChild() return child;public void setChild(ArrayList child) this.child = child;public ArrayList getRule() return rule;public void setRule(ArrayList rule) this.rule =
13、rule;public String getName() return name;public void setName(String name) this.name = name;public ArrayListArrayList getDatas() return datas;public void setDatas(ArrayListArrayList datas) this.datas = datas;public ArrayList getCandAttr() return candAttr;public void setCandAttr(ArrayList candAttr) th
14、is.candAttr = candAttr;package DecisionTree;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.StringTokenizer;/* * 决策树算法测试类 */public class TestDecisionTree /* * 读取候选属性 * return 候选属性集合 * throws IOException */public Ar
15、rayList readCandAttr() throws IOExceptionArrayList candAttr = new ArrayList();BufferedReader reader = new BufferedReader(new InputStreamReader(System.in);String str = ;while (!(str = reader.readLine().equals() StringTokenizer tokenizer = new StringTokenizer(str);while (tokenizer.hasMoreTokens() cand
16、Attr.add(tokenizer.nextToken();return candAttr;/* * 读取训练元组 * return 训练元组集合 * throws IOException */public ArrayListArrayList readData() throws IOException ArrayListArrayList datas = new ArrayListArrayList();BufferedReader reader = new BufferedReader(new InputStreamReader(System.in);String str = ;whil
17、e (!(str = reader.readLine().equals() StringTokenizer tokenizer = new StringTokenizer(str);ArrayList s = new ArrayList();while (tokenizer.hasMoreTokens() s.add(tokenizer.nextToken();datas.add(s);return datas;/* * 递归打印树结构 * param root 当前待输出信息的结点 */public void printTree(TreeNode root)System.out.printl
18、n(name: + root.getName();ArrayList rules = root.getRule();System.out.print(node rules: );for (int i = 0; i rules.size(); i+) System.out.print(rules.get(i) + );System.out.print();System.out.println();ArrayList children = root.getChild();int size =children.size();if (size = 0) System.out.println(-leaf
19、 node!-); else System.out.println(size of children: + children.size();for (int i = 0; i children.size(); i+) System.out.print(child + (i + 1) + of node + root.getName() + : );printTree(children.get(i);/* * 主函数,程序入口 * param args */public static void main(String args) TestDecisionTree tdt = new TestDe
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 决策树 程序 实验 word 版本
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【丰****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【丰****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。