数据挖掘分类实验详细报告Word文档格式.docx
- 文档编号:22966831
- 上传时间:2023-02-06
- 格式:DOCX
- 页数:19
- 大小:1,002.86KB
数据挖掘分类实验详细报告Word文档格式.docx
《数据挖掘分类实验详细报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《数据挖掘分类实验详细报告Word文档格式.docx(19页珍藏版)》请在冰豆网上搜索。
3、建立数据训练集和测试集
4、对数据集进行数据清理
在本次实验中,我们选择了ILPD(IndianLiverPatientDataset)这个数据集,该数据集已经具有等维的数据特征,主要包括Age、Gender、TB、DB、Alkphos、Sgpt、Sgot、TP、ALB、A/G、classical,一共11个维度的数据特征,其中与分类类别相关的特征为classical,它的类别有1,2两个值。
详见下表:
本实验的主要思路是将该数据集分成训练集和测试集,对训练集进行训练生成模型,然后再根据模型对测试集进行预测。
数据集处理实验详细过程:
●CSV数据源处理
由于下载的原始数据集文件IndianLiverPatientDataset(ILPD).csv(见下图)中间并不包含属性项,这不利于之后分类的实验操作,所以要对该文件进行处理,使用Notepad文件,手动将属性行添加到文件首行即可。
●平台数据集格式转换
在后面数据挖掘的实验过程中,我们需要借助开源数据挖掘平台工具软件weka,该平台使用的数据集格式为arff,因此为了便于实验,在这里我们要对csv文件进行格式转换,转换工具为weka自带工具。
转换过程为:
1、打开weka平台,点击”SimpleCLI“,进入weka命令行界面,如下图所示:
2、输入命令将csv文件导成arff文件,如下图所示:
3、得到arff文件如下图所示:
内容如下:
●建立数据训练集、校验集和测试集
通过统计数据信息,可知整个数据集带有classical标号的数据一共有583行,为了避免数据的过度拟合,我们要把数据训练集、校验集、测试集分开。
在本次实验中,我们的拆分策略是训练集500行,校验集和测试集83行,由于数据集中有416行的classical标识为1,167行的classical标识为2,为了能在训练分类模型时有更加全面的信息,我们将167条classical标识为2与333行classical标识为1的数据全部作为模型训练集,而剩下的83条classical为1的数据将全部用于测试集,这是因为在校验的时候,两种类标号的数据作用区别不大,但是在训练数据模型是,需要更加全面的信息,特别是不同类标号的数据的合理比例对训练模型的质量有较大的影响。
在做预测测试之前,需要将测试集的分类标号去掉作为预测数据集。
数据训练集、校验集和测试集建立步骤:
1、复制原始数据集arff文件,作为总的训练数据集,文件名称改为build_model.arff。
如下图所示:
2、根据拆分策略,从原始数据集DataSet_original.arff文件中的数据里面,选取分类标号为1的数据83作为校验数据集,该数据集文件名为validate_data.arff。
3、将剩下的DataSet_orginal.arff文件改名为train_data.arff
4、由于原始数据集都是有类标号的数据集,为了方便进行预测测试,我们将校验数据集复制一份后,将分类标号去掉加入?
,作为预测数据集。
如图所示:
●数据清理
在进行数据搜集和整理的过程中,我们发现如果属性的类型为数值型的话,在做关联分析时将不能得到结果,因为关联分析无法处理数值型数据。
由于现实世界中数据大体上都是不完整,不一致的脏数据,无法直接进行数据挖掘或挖掘结果差强人意。
为了提高数据挖掘的质量,需要对数据进行预处理,预处理有多种方法:
数据清理、数据集成、数据变换、数据归约等。
常用的数据清理主要分为两类:
空缺值的处理和噪声数据处理。
空缺值处理主要是使用最可能的值填充空缺值,比如可以用回归、贝叶斯形式化方法工具或判定树归纳等确定空缺值。
这类方法依靠现有的数据信息来推测空缺值,使空缺值有更大的机会保持与其他属性之间的联系。
同时还可以用一个全局常量替换空缺值、使用属性的平均值填充空缺值或将所有元组按某些属性分类,然后用同一类中属性的平均值填充空缺值。
不过这些方法有局限性,当空缺值很多的情况下,这些方法的使用可能会误导挖掘结果;
除了空缺值处理还有噪声数据处理,噪声是一个测量变量中的随机错误或偏差,包括错误的值或偏离期望的孤立点值。
常用分箱、回归、计算机检查和人工检查结合、聚类等方法进行噪音处理。
在本次试验中,我们对数据集进行了数据处理后使得需要分析的数据变为分类型,这样就可以关联分析得以顺利进行,在具体执行的过程中我们利用了weka平台自带的数据预处理库实现数据预处理。
具体实验过程见下文。
(3)实验过程
A、环境搭建
本实验的数据集选择IndianLiverPatientDataset(ILPD),借助数据挖掘平台Weka3.6.9,编程环境为Eclipse+JDK7
1、数据集获取
选择IndianLiverPatientDataset(ILPD)这个数据集,进入下载页面下载数据集(详见下图)
2、Weka安装
下载Weka安装包weka-3-6-9-x64.exe,运行安装即可。
(如下图)
安装界面:
安装完成:
Weka工作界面:
B、实验步骤
1、开发平台搭建
打开eclipse,点击File->
New->
Project…,新建JavaProject工程,如下图所示:
新建一个java工程dataminingtest,配置buildpath将所需要的weka.jar和其它一些需要的jar包,导入该工程,如下图所示:
备注:
由于调用weka算法时候可能会产生jar包依赖关系错误,需要额外加入一些jar包。
2、导入数据
将数据准备时的arff文件导入,数据打印出来后,如下图所示:
3、数据预处理
在本次试验中,我们使用weka的Filter作为数据预处理工具,该工具的一般流程是:
实例化过滤器->
传入过滤器参数->
通过Filter.useFilter使用过滤器。
由于本实验采用的决策树J48算法的数据集需要离散化,故采用离散化过滤。
实现结果如下图所示:
过滤完成后的数据集变化情况如下图所示:
由于最后一列classical的类型为Numeric,在weka平台上需要进行nominal类型转换。
转换方式也是使用Filter,效果如下图所示:
4、选择算法,建立模型
为了获取最优化的模型,需要对决策的参数进行配置,这里我们借助weka平台通过修改树的实例/叶子节点数来获取最优的模型。
实验步骤如下所示:
1、打开weka软件平台,点击进入Explorer,选择openfile…,打开train_data.arff文件,如下图所示:
2、在Filter区域选择choose,在unsupervised节点下选择attribute下的NumericToNominal与Discretize,选择后点击“Apply”,即可完成数据预处理,结果如下图所示:
3、点击进入classify页面,在classifier区域选择trees下的J48算法,TestOptions中选择cross-validation,在Folds框里填上10,如下所示:
4、使用默认配置,点击start,得到结果如下图所示:
5、由结果可知,在默认配置下,分类的正确率为62.4%,为了获取最优化模型,我们修改树的节点和实例数来进行测试,测试结果如下表所述:
实例/节点数量
2
3
5
6
7
8
9
10
20
30
正确率
64.2%
64.6%
63.2%
64%
63%
65.8%
66.2%
66.4%
从表格可知当实例数为20的时候,正确率最高,所以我们将该配置作为标准生成模型,模型生成方式为,在Resultlist区域,右键点击实例为20的那条记录,出现右键菜单,选择savemodel生成模型即可。
步骤如下所示:
(4)模型评估
为了评估该模型的正确性,我们使用测试集进行校验。
校验结果如下所示:
从预测结果来看,83个数据里面,只有4个值预测错误,其他皆预测正确,实际测试结果正确率为95.2%。
代码实现附录:
1、数据导入:
2、数据离散化预处理:
3、数据类型转换
4、创建模型
5、导出模型
6、导入模型
7、数据预测
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据 挖掘 分类 实验 详细 报告