决策树分类算法的时间和性能测试.doc

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
决策树分类算法的时间和性能测试 姓名: ls 学号: 目录 一、项目要求 3 二、基本思想 3 三、样本处理 4 四、实验及其分析 9 1.总时间 9 2.分类准确性. 12 五、结论及不足 13 附录 14 一、项目要求 设计并实现决策树分类算法(可参考网上很多版本的决策树算法及代码,但算法的基本思想应为以上所给内容)。 使用 UCI 的基准测试数据集,测试所实现的决策树分类算法。评价指标包括:总时间、分类准确性等。 (3) 使用 UCI Iris Data Set 进行测试。 基本思想 决策树是一个类似于流程图的树结构,其中每个内部节点表示在一个属性变量上的测试,每个分支代表一个测试输出,而每个叶子节点代表类或分布,树的最顶层节点是根节点。 当需要预测一个未知样本的分类值时,基于决策树,沿着该树模型向下追溯,在树的每个节点将该样本的变量值和该节点变量的阈值进行比较,然后选取合适的分支,从而完成分类。决策树能够很容易地转换成分类规则,成为业务规则归纳系统的基础。 决策树算法是非常常用的分类算法,是逼近离散目标函数的方法,学习得到的函数以决策树的形式表示。其基本思路是不断选取产生信息增益最大的属性来划分样例 集和,构造决策树。信息增益定义为结点与其子结点的信息熵之差。信息熵是香农提出的,用于描述信息不纯度(不稳定性),其计算公式是 Pi为子集合中不同性(而二元分类即正样例和负样例)的样例的比例。这样信息收益可以定义为样本按照某属性划分时造成熵减少的期望,可以区分训练样本中正负样本的能力,其计算是 Iris Plants Database为测试样本,Iris Plants共有sepal-length ,sepal-width ,petal-length ,petal-width四种属性,根据属性的不同分为三种: class: -- Iris Setosa -- Iris Versicolour -- Iris Virginica 为方便实现,只取Iris Setosa和Iris Versicolour这两种植物的样例进行测试。 实现该算法的样例集合如下 图1 10组样例构建决策树 随机抽取40组样例进行测试,运行结果如图2.6,总时间为0.167s 图2 40组样例构建决策树 随机抽取70组样例进行测试,运行结果如图2.6,总时间为0.369s 图3 70组样例构建决策树 选取100组样例进行测试,运行结果如图2.6,总时间为0.646s 图4 100组样例构建决策树 得到样例数—时间表: 样例个数 10 40 70 100 运行时间(s) 0.05 0.167 0.369 0.646 表1. 样例数—时间表 画出样例数—时间折线图: 图4 样例数—时间折线图 由图4可以看出,本文的决策树分类算法的运行时间与样例数成正比关系。 分类准确性 我们知道样本数越多对总体的估计就越准确,即对Iris Plants的种类的预估就越准确,所以我们只对100样例数时的运行结果进行分类准确性测试。 图5 100组样例构建决策树 可以用图形表示为 图 6 决策树 随机抽取10组样例集合{7,13,26,37,48,55,62,71,89,94}进行带入测试,{√,√,√,√,√,√,√,√,√,×}得到准确率为90%; 随机抽取10组样例集合{2,14,27,39,41,52,65,78,82,90}进行带入测试,{√,√,√,√,√,√,√,√,×,√}得到准确率为90%; 随机抽取10组样例集合{1,12,29,32,45,59,67,74,85,97}进行带入测试,{√,√,√,√,√,√,√,√,×,√}得到准确率为100%; 综上,可以估计平均准确率约为93.3%。 五、结论及不足 结论: 1. 本文实现的决策树分类算法的运行时间与样例数成正比关系。 2. 用本算法进行Iris Plants预估的平均准确率约为93.3%。 不足: 1. 强行取平均值进行划分的方法略显僵硬。(我觉得还是可以...) 2. 只实现了两种Iris Plants的预估,Iris-virginica的样本没有用到。 (详细代码在附录中) 附录 #include iostream #include string #include vector #include map #include algorithm #include cmath #includetime.h using namespace std; #define MAXLEN

您可能关注的文档

文档评论(0)

四月 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档