《2022年数据挖掘报告整理 .pdf》由会员分享,可在线阅读,更多相关《2022年数据挖掘报告整理 .pdf(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、哈 尔 滨 工 业 大 学数 据 挖 掘 理 论 与 算 法 实 验 报 告(2016 年度秋季学期)课程编码S1300019C名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 9 页 -授课教师邹兆年学生姓名汪 瑞学号16S003011 学院 计算机学院一、实验内容决策树算法是一种有监督学习的分类算法;kmeans 是一种无监督的聚类算法。本次实验实现了以上两种算法。在决策树算法中采用了不同的样本划分方式、不同的分支属性的选择标准。在kmeans 算法中,比较了不同初始质心产生的差异。本实验主要使用python 语言实现,使用了 sklearn 包作为实验工具。二、实验设计1.决
2、策树算法1.1 读取数据集本次实验主要使用的数据集是汽车价值数据。有6个属性,命名和属性值分别如下:buying:vhigh,high,med,low.maint:vhigh,high,med,low.doors:2,3,4,5more.名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 9 页 -persons:2,4,more.lug_boot:small,med,big.safety:low,med,high.分类属性是汽车价值,共 4类,如下:class values:unacc,acc,good,vgood 该数据集不存在空缺值。由于sklearn.tree 只能使用数值数
3、据,因此需要对数据进行预处理,将所有标签类属性值转换为整形。1.2数据集划分名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 9 页 -数据集预处理完毕后,对该数据进行数据集划分。数据集划分方法有 hold-out 法、k-fold 交叉验证法以及有放回抽样法(boottrap)。Holdout 法在 pthon 中的实现是使用如下语句:其中,cv 是 sklearn 中 cross_validation 包,train_test_split 方法的参数分别是数据集、数据集大小、测试集所占比、随机生成方法的可选项。该方法分别返回,训练集、测试集在原数据集中的序号以及对应的所属类别的
4、序号。K-flod 法实现较为简单。如下:xl 为数据集大小,n_folds 为划分若干折,一般可用 10-fold 验证。返回值 loo 中是包含两个元组的列表,这两个元组分别是train_index和 test_index 的列表。Bootstrap 法实现如下,其与k-fold 方法类似。1.3 创建和训练决策树及评价数据集划分完毕后,就需要建立决策树并结合训练集来训练决策树。建立决策树只需要调用tree.DecisionTreeClassifier()方法即可。它有一些参数可以根据需求进行设置。Criterion 选项,默认是“Gini”,表示决策树非叶节点划分依据是根据 Gini 指
5、数表示划分的纯度。可选值有“entropy”,用信息增益来衡量名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 9 页 -划分的优劣。Sklearn.tree 中没有支持用错分类误差法来衡量节点划分的优劣。min_samples_split 选项,是指一个非叶节点继续划分所需要的最小样本数,如果该节点下的待分样本小于该值,则终止该节点划分,节点被标记为占多少的类,形成叶节点。它属于提前抑制决策树增长的方法。max_depth 选项,是指该训练决策树时允许达到的最大深度。默认深度是一直划分到节点纯净或者达到min_samples_split的要求。因此该选项是实验中有必要进行设置的项
6、,以控制决策树过拟合,它属于前剪枝的操作。min_impurity_split 选项,是指划分某节点时所需要的最低不纯度阈值,如果某一节点划分的不纯度低于该值,表明该节点已经可以被接受成为叶节点,无须继续划分。它也是一种提前停止增长的策略。决策树建立和训练的具体实例如下(用10-fold 做例子):名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 9 页 -由于实验采用的是10-fold 交叉验证,因此最终准确率应该是每一折准确率的平均值。上述代码也包含了训练决策树和使用测试集验证决策树的代码,即:该实验的最终准确率约是:test right rate:0.8165 1.4 基于树
7、桩的 Adaboost 算法在python中 同 样 也 实 现 了adaboost算 法,需 要 使 用AdaBoostClassifier()方法构造它。它有若干可选项:base_estimator 是设置 adaboost 算法使用的弱分类器,默认是一层决策树,即树桩。名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 9 页 -n_estimators是设置迭代次数,每一次迭代时该算法选择数据集中的某一特征作为树桩的分类节点,训练集中被错误分类的记录将被增加权重,正确分类的记录将被降低权重,权重更新后的数据集将用于下一次迭代。初始时各个记录权重均为1/n,n 为记录数目。主要
8、的实现语句如下:最终在测试集上,由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+,智能选择数据中的
9、若干项作为质心。名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 9 页 -还有 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
10、 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 0 58,129,177 0.29608938547486036 由于数据集较小而且比较规整,经过测试发现该次实验在第二次迭代就已经收敛,错误率在29.6%左右。当然,对于没有标签的数据,在衡量聚类结果时可以使用总SSE来评价。在不同的k 值情况下,选择
11、具有最小总SSE 的模型最为合名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 9 页 -适。三、遇到的困难及解决方法、心得体会1.问题实现本程序时,由于数据与算法格式不匹配,在数据预处理阶段碰到了各种问题,比如怎样拆分数据中的类别标签、划分数据集的采用何种方式等。2.心得实现本程序之后,深刻认识了决策树算法和kmeans 算法的神奇之处,对这些算法的形成、改进、注意点以及优缺点都有了比较详尽的了解,重新认识了数据挖掘这门课。但由于时间有限,未能自己动手去实现算法的每一个细节,只是调用了相应的工具,我对此略感遗憾。名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 9 页 -