




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
哈尔滨工业大学数据挖掘理论与算法实验报告(2016年度秋季学期)课程编码 S1300019C 授课教师 邹兆年 学生姓名 汪 瑞 学 号 16S003011 学 院 计算机学院 一、实验内容决策树算法是一种有监督学习的分类算法;kmeans是一种无监督的聚类算法。本次实验实现了以上两种算法。在决策树算法中采用了不同的样本划分方式、不同的分支属性的选择标准。在kmeans算法中,比较了不同初始质心产生的差异。本实验主要使用python语言实现,使用了sklearn包作为实验工具。二、实验设计1.决策树算法1.1读取数据集本次实验主要使用的数据集是汽车价值数据。有6个属性,命名和属性值分别如下:buying: vhigh, high, med, low.maint: vhigh, high, med, low.doors: 2, 3, 4, 5more.persons: 2, 4, more.lug_boot: small, med, big.safety: low, med, high.分类属性是汽车价值,共4类,如下:class values:unacc, acc, good, vgood该数据集不存在空缺值。由于sklearn.tree只能使用数值数据,因此需要对数据进行预处理,将所有标签类属性值转换为整形。1.2数据集划分数据集预处理完毕后,对该数据进行数据集划分。数据集划分方法有hold-out法、k-fold交叉验证法以及有放回抽样法(boottrap)。Holdout法在pthon中的实现是使用如下语句:其中,cv是sklearn中cross_validation包,train_test_split方法的参数分别是数据集、数据集大小、测试集所占比、随机生成方法的可选项。该方法分别返回,训练集、测试集在原数据集中的序号以及对应的所属类别的序号。K-flod法实现较为简单。如下:xl为数据集大小,n_folds为划分若干折,一般可用10-fold验证。返回值loo中是包含两个元组的列表,这两个元组分别是train_index和test_index的列表。Bootstrap法实现如下,其与k-fold方法类似。1.3创建和训练决策树及评价数据集划分完毕后,就需要建立决策树并结合训练集来训练决策树。建立决策树只需要调用tree.DecisionTreeClassifier()方法即可。它有一些参数可以根据需求进行设置。Criterion选项,默认是“Gini”,表示决策树非叶节点划分依据是根据Gini指数表示划分的纯度。可选值有“entropy”,用信息增益来衡量划分的优劣。Sklearn.tree中没有支持用错分类误差法来衡量节点划分的优劣。min_samples_split选项,是指一个非叶节点继续划分所需要的最小样本数,如果该节点下的待分样本小于该值,则终止该节点划分,节点被标记为占多少的类,形成叶节点。它属于提前抑制决策树增长的方法。max_depth选项,是指该训练决策树时允许达到的最大深度。默认深度是一直划分到节点纯净或者达到min_samples_split的要求。因此该选项是实验中有必要进行设置的项,以控制决策树过拟合,它属于前剪枝的操作。min_impurity_split选项,是指划分某节点时所需要的最低不纯度阈值,如果某一节点划分的不纯度低于该值,表明该节点已经可以被接受成为叶节点,无须继续划分。它也是一种提前停止增长的策略。决策树建立和训练的具体实例如下(用10-fold做例子):由于实验采用的是10-fold交叉验证,因此最终准确率应该是每一折准确率的平均值。上述代码也包含了训练决策树和使用测试集验证决策树的代码,即:该实验的最终准确率约是:test right rate: 0.81651.4基于树桩的Adaboost算法在python中同样也实现了adaboost算法,需要使用AdaBoostClassifier()方法构造它。它有若干可选项:base_estimator是设置adaboost算法使用的弱分类器,默认是一层决策树,即树桩。n_estimators是设置迭代次数,每一次迭代时该算法选择数据集中的某一特征作为树桩的分类节点,训练集中被错误分类的记录将被增加权重,正确分类的记录将被降低权重,权重更新后的数据集将用于下一次迭代。初始时各个记录权重均为1/n,n为记录数目。主要的实现语句如下:最终在测试集上,由adaboost生成的强分类器的准确率为:2.kmeans算法2.1读取数据集Kmeans算法的数据集是酒的品种数据。有13个属性,一个分类属性。共分成3类,数据集前58号为第一类,59-129号为第二类,130-177号为第三类。2.2初始化kmeans参数Python中通过调用sklearn.cluster包中的kmeans类来创建方法实例。需要设置的主要参数是n_clusters,即聚簇数量。具体代码如下:当然可以设置init参数为random,表示随机生成初始质心。默认值的kmeans+,智能选择数据中的若干项作为质心。还有max_iter可选项,表示kmeans方法迭代次数。2.3聚类划分聚簇划分代码如下: 2.4错误率计算聚簇划分的错误率,代码 结果:1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 1 1 2 2 1 1 2 1 1 1 1 1 1 2 2 1 1 2 2 1 1 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 2 0 2 0 0 2 0 0 2 2 2 0 0 1 2 0 0 0 2 0 0 2 2 0 0 0 0 0 2 2 0 0 0 0 0 2 2 0 2 0 2 0 0 0 2 0 0 0 0 2 0 0 2 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 2 0 0 2 2 2 2 0 0 2 2 2 0 0 2 2 0 2 2 0 0 0 0 2 2 2 0 2 2 2 0 2 0 2 2 0 2 2 2 2 0 0 2 2 2 2 2 0 058, 129, 177 0.29608938547486036由于数据集较小而且比较规整,经过测试发现该次实验在第二次迭代就已经收敛,错误率在29.6%左右。当然,对于没有标签的数据,在衡量聚类结果时可以使用总SSE来评价。在不同的k值情况下,选择具有最小总SSE的模型最为合适。三、遇到的困难及解决方法、心得体会1. 问题实现本程序时,由于数据与算法格式不匹配,在数据预处理阶段碰到了各种问题,比如怎样拆分数据中的类
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医疗技术助力下的化学实验教学策略分析
- 教育心理学的智慧解码学生行为背后
- 心理辅导在招生过程中的作用
- 教育技术与职业发展
- 企业内部培训与教育心理学的结合
- 医疗教育机器人的研发与应用前景
- 教育投资的新风向游戏化学习平台融资指南
- 2025届江西省新余市高二物理第二学期期末综合测试模拟试题含解析
- 培养学习动力教育心理学的力量
- 企业园区的智能交通管理方案
- 医护人员手卫生知识培训课件
- FZT 63005-2019 机织腰带行业标准
- 医院培训课件:《分级护理制度》
- 广东省普通高中生物学业水平合格性考试真题卷含答案
- SHT 3081-2019 石油化工仪表接地设计规范
- 国际谈判与国际公文写作-知到答案、智慧树答案
- 新课标背景下的大单元教学研究:国内外大单元教学发展与演进综述
- 2024年江苏南京六合区竹镇镇司法调解员招聘笔试参考题库附带答案详解
- JJG 105-2000转速表行业标准
- 血管活性药物应用的护理
- 调解方法与技巧
评论
0/150
提交评论