基于Weka的数据分类分析实验报告

更新时间:2024-01-23 13:05:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

基于Weka的数据分类分析实验报告

1 实验目的

使用数据挖掘中的分类算法,对数据集进行分类训练并测试。应用不同的分类算法,比较他们之间的不同。与此同时了解Weka平台的基本功能与使用方法。

2 实验环境

2.1 Weka介绍

Weka是怀卡托智能分析系统的缩写,该系统由新西兰怀卡托大学开发。Weka使用Java写成的,并且限制在GNU通用公共证书的条件下发布。它可以运行于几乎所有操作平台,是一款免费的,非商业化的机器学习以及数据挖掘软件。Weka提供了一个统一界面,可结合预处理以及后处理方法,将许多不同的学习算法应用于任何所给的数据集,并评估由不同的学习方案所得出的结果。

图1Weka主界面

Weka系统包括处理标准数据挖掘问题的所有方法:回归、分类、聚类、关联规则以及属性选择。分析要进行处理的数据是重要的一个环节,Weka提供了很多用于数据可视化和与处理的工具。输入数据可以有两种形式,第一种是以ARFF格式为代表的文件;另一种是直接读取数据库表。

使用Weka的方式主要有三种:第一种是将学习方案应用于某个数据集,然后分析其输出,从而更多地了解这些数据;第二种是使用已经学习到的模型对新实例进预测;第三种是使用多种学习器,然后根据其性能表现选择其中一种来进行预测。用户使用交互式界面菜单中选择一种学习方法,大部分学习方案都带有可调节的参数,用户可通过属性列表或对象编辑器修改参数,然后通过同一个评估模块对学习方案的性能进行评估。

2.2 数据和数据集

根据应用的不同,数据挖掘的对象可以是各种各样的数据,这些数据可以是各种形式的存储,如数据库、数据仓库、数据文件、流数据、多媒体、网页,等等。即可以集中存储在数据存储库中,也可以分布在世界各地的网络服务器上。

大部分数据集都以数据库表和数据文件的形式存在,Weka支持读取数据库表和多种格

式的数据文件,其中,使用最多的是一种称为ARFF格式的文件。

ARFF格式是一种Weka专用的文件格式,Weka的正式文档中说明AREF代表Attribute-Relation File Format(属性-关系文件格式)。该文件是ASCII文本文件,描述共享一组属性结构的实例列表,由独立且无序的实例组成,是Weka表示数据集的标准方法,AREF不涉及实例之间的关系。

3数据预处理

本实验采用Weka 平台,数据使用Weka安装目录下data文件夹下的默认数据集iris.arff。

Iris 是鸢尾花的意思,鸢尾花是鸢尾属植物,是一种草本开花植物的统称。鸢尾花只有三枚花瓣,其余外围的那三瓣乃是保护花蕾的花萼,只是由于这三枚瓣状花萼长得酷似花瓣,以致常常以假乱真,令人难以辨认。

由于本次使用平台自带的ARFF格式数据,所以不存在格式转换的过程。实验所用的ARFF格式数据集如图2所示。

图2 AREF格式数据集(iris.arff)

鸢尾花的数据集包括三个类别:Iris Setosa(山鸢尾)、Iris Versicolour(变色鸢尾)和Iris Virginica(维吉尼亚鸢尾),每个类别各有50个实例。数据集定义了5个属性:sepal length(花萼长)、sepal width(花萼宽)、petal length(花瓣长)、petal width(花瓣宽)、class(类别)。最后一个属性一般作为类别属性,其余属性都是数值,单位为cm(厘米)。

实验数据集中所有的数据都是实验所需的,因此不存在属性筛选的问题。若所采用的数

据集中存在大量的与实验无关的属性,则需要使用weka平台的Filter(过滤器)实现属性的筛选。

实验所需的训练集和测试集均为iris.arff。

4 实验过程及结果

应用iris.arff数据集,分别采用LibSVM、C4.5决策树分类器和朴素贝叶斯分类器进行测试和评价,分别在训练数据上训练分类模型,找出各个模型最优的参数值,并对三个模型进行全面评价比较,得到一个最好的分类模型以及该模型所有设置的最优参数。最后使用这些参数以及训练集和校验集数据一起构造出一个最优分类器,并利用该分类器对测试数据进行预测。

4.1 LibSVM分类

Weka平台内部没有集成LibSVM分类器,要使用该分类器,需要下载libsvm.jar并导入到Weka中,直接在Tools-Package manager中搜索LibSVM进行安装。

用Explorer打开数据集iris.arff,并在Explorer中将功能面板切换到Classify,点Choose按钮选择functions(weka.classifiers.functions.LibSVM),选择LibSVM分类算法。

在Test Options面板中选择Cross-Validation=10,即十折交叉验证。然后点击start按钮:

使用LibSVM分类算法训练数据集得出的结果 参数:–S 0 –K 2 –D 3 –G 0.0 –R 0.0 –N 0.5 –M 40.0 –C 1.0 –E 0.0010 –P 0.1 结果分析: 使用该参数指定的LibSVM训练数据集,得到的准确率为96.6667%,其中150个实例中145个被正确分类,5个被错误分类。根据混淆矩阵,被错误分类的实例如下。 2个b类实例被错误分类到c;3个c类实例被错误分类到b。该算法P=0.967,R=0.967,ROC面积为0.975.

将模型应用与测试集:

使用LibSVM分类算法测试数据集得出的结果 结果分析: 准确率为98.6667%,只有两个实例被错误分类。P=0.987,R=0.987,ROC面积为0.99。 分类误差:

4.2 C4.5 决策树分类器

依然使用十折交叉验证,训练集和测试集相同。 使用C4.5决策树分类算法训练数据集得出的结果 参数:-C 0.25 -M 2 结果分析: 使用该参数指定的C4.5决策树分类器训练数据集,得到准确率为96%,其中150个实例中的144个被正确分类,6个被错误分类。根据混淆矩阵,被错误分类的实例如下。 2个b类实例被错误分类到c,1个b类实例被错误分类到a;三个c类实例被错误分类到b。该算法P=0.96,R=0.96,ROC面积为0.968。

将模型应用于测试集:

使用C4.5分类算法测试数据集得出的结果 结果分析:

准确率为98%,有3个实例被错误分类。P=0.98,R=0.98,ROC面积为0.993。 分类误差:

4.3朴素贝叶斯分类器

依然使用十折交叉验证,训练集和测试集相同。 使用朴素贝叶斯分类算法训练数据集得到的结果 参数:无 结果分析: 使用朴素贝叶斯分类器训练数据集,得到准确率为96%,其中150个实例中的144个被正确分类,6个被错误分类。根据混淆矩阵,被错误分类的实例如下。 4个b类实例被错误分类到c;2个c类实例被错误分类到b。该算法P=0.96,R=0.96,ROC面积为0.994。 将模型应用于测试集:

使用朴素贝叶斯分类算法测试数据集得出的结果 分类误差: 结果分析: 准确率为96%,有6个实例被错误分类。P=0.96,R=0.96,ROC面积为0.995。

4.3朴素贝叶斯分类器

如下表所示。

校验准确率 训练 混淆矩阵 校验 混淆矩阵 标准误差 0.0943 0.108 0.1495 LibSVM 98.6667% C4.5决策树 98% 朴素贝叶斯 96% 比较结果分析: LibSVM算法相比C4.5决策树算法、朴素贝叶斯算法具有更好的分类性能。

5 实验总结

通过本次实验,本人对Weka平台有了比较完整和深入的认识,掌握了使用Weka平台进行数据挖掘的方法,对数据挖掘本身也有了比较直观的认识。

本文来源:https://www.bwwdw.com/article/qh6o.html

Top