数据挖掘报告_第1页
数据挖掘报告_第2页
数据挖掘报告_第3页
数据挖掘报告_第4页
数据挖掘报告_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、哈尔滨工业大学数据挖掘理论与算法实验报告(2016年度秋季学期)课程编码S1300019C授课教师邹兆年学生姓名 汪瑞学 号 16S003011学 院、实验内容决策树算法是一种有监督学习的分类算法;kmea ns是一种无监督的聚类算法。本次实验实现了以上两种算法。在决策树算法中采用了不同的样 本划分方式、不同的分支属性的选择标准。在kmea ns算法中,比较了不同初始质心产生的差异。本实验主要使用 python 语言实现,使用了 sklearn 包作为实验工 具。二、实验设计1. 决策树算法1.1 读取数据集本次实验主要使用的数据集是汽车价值数据。有6个属性,命名和属性值分别如下:buying

2、: 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该数据集不存在空缺值。由于skiear n. tree只能使用数值数据,因此需要对数据进行预处理,将所有标签类属性值转换为整形。f=open( 1 car. data *)x-f.re a d() x=

3、Kp split( nr?) xl=len(x)-l del xxl for temp in range(xl): 世flip.址先更up: . rpLit( # ) far i in rang(len(xtemp): H xftemp i=F:xtenpl=4elif xt-enpi ighr: xtei -3 xtenpL Hiecf(:)tteitipi=2eli x t emp L = = Ldij : xtenpi=1elif xte=;Kteflipi.-3号lif xtempi 4elif 3ttenpi=取 : X(tenp i=tlelif xtF7) k=&for i in

4、 train_indeK: x_traink=xi k4=lMtrainlBheltrain : ,0:G xraitargetrinf : & dtc=dtc,fit(xtrain_labelfx_tr目 intsrget) tree.expot graphviz(dtcout_file= tree.data) x_test=np.zer5(len( tetiridexjj?) k=& for i in test_indeM:x_testk=1k+=lx_test_lab&L-x_test: 0 :6x test targets(_test: ,6 predict-dtc.predict(j

5、c_test : ,&:6) for i in angetlenfpredict): if predict6: tp+=lfieri (testindex) Js_ave+ss_ave=s_a ve/kfod_k|printrjht rate: s_ave)由于实验采用的是10-fold交叉验证,因此最终准确率应该是每一折准确率的平均值。上述代码也包含了训练决策树和使用测试集验证决策树的代码,即:ftcdtc + fitfx_train_labeljX_tFain_target)pred it t=dtc+aredict(x_test : ,6:6)该实验的最终准确率约是:test right

6、 rate: 0.81651.4基于树桩的Adaboost算法在python中同样也实现了 adaboost算法,需要使用AdaBoostClassifier ()方法构造它。它有若干可选项:base_estimator是设置adaboost算法使用的弱分类器,默认是 一层决策树,即树桩。n.estimators是设置迭代次数,每一次迭代时该算法选择数据集 中的某一特征作为树桩的分类节点,训练集中被错误分类的记录将被 增加权重,正确分类的记录将被降低权重,权重更新后的数据集将用 于下一次迭代。初始时各个记录权重均为1/n,n为记录数目。主要的实现语句如下:ada=AclaEoost 匚丄巳 r

7、 (=BC: da .fit(deta_train,七argettrin )prediction = ada * 5core (dat:ci_t亡玉t, target_tE5t)print(prediction)最终在测试集上,由adaboost生成的强分类器的准确率为:0+791907514451|2.kmea ns 算法2.1读取数据集Kmeans算法的数据集是酒的品种数据。有 13个属性,一个分类 属性。共分成3类,数据集前58号为第一类,59-129号为第二类, 130-177号为第三类。2.2初始化kmeans参数Python中通过调用skiearn.cluster包中的kmeans

8、类来创建方法实例。需要设置的主要参数是n_clusters,即聚簇数量。具体代码如下:kt*KMeans(n clusters)当然可以设置in it参数为ran dom,表示随机生成初始质心。默 认值的kmeans+智能选择数据中的若干项作为质心。还有max_iter可选项,表示kmeans方法迭代次数。2.3聚类划分聚簇划分代码如下:predic-kt,prd iet(x) print(predic)2.4错误率计算聚簇划分的错误率,代码for i in rsnge(len (yj):tep=yif i=len(y)*l:breakif yi+l 1 1append(i) temp=dic

9、t() errlen(predic) for j in range(len(predi匚): temp predie j 1-get (preditj f0)+lif j in 1: max=3for m in temp.values ():if maxm:rr-err-(naxtemp,clear()errate = err/rlen( predie)print(lerrate)结果:1 1 11 211 1 11 1 11 1 111 112 2 21 1 22 1 121 111 112 21 1 22 112 2 11 1 11 1 111 111 1 10 2 02 0 020 02

10、2 200 12 0 00 200 2 20 0 00 0 220 000 0 22 0 20 2 000 200 002 0 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 0 58, 129, 1770.29608938547486036由于数据集较小而且比较规整, 经过测试发现该次实验在第二次 迭代就已经收敛,错误率在 29.6%左右。当然,对于没有标签的数据,在衡量聚类结果时可以使用总 SSE来评价。在不同的k值情况下,选择具有最小总SSE的模型最为合适。 三、遇到的困难及解决方法、心得体会1. 问题实现本程序时,由于数据与算法格式不匹配,在数据预处理阶段 碰到了各种问题, 比如怎样拆分数据中的类别标签、 划分数据集的采 用何种方式等。2. 心得实现本程序之后, 深刻认识了决策树算法和 kmeans 算法的神奇之 处,对这些

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论