用weka实现基于aprior算法的鸢尾花数据挖掘

主要内容

“本文重点介绍如何使用weka机器学习工具实现aprior算法”

weka是一款著名的机器学习工具,功能十分强大,集成度高。鸢尾花数据的分类,属于多维数据的分类问题,目前已经有许多比较成熟的研究,如使用决策树分类算法,KNN最近邻算法。此处重点在挖掘各属性和类别之间的关联性,故使用aprior算法,另一重点就是学会weka的使用方法。

一、获取iris数据

这里直接下载sklearn机器学习包中的iris数据集,生成CSV文件并导入weka进行处理。

二、weka基本介绍

(一)主界面

主要分为5个部分:explorer部分包含了数据预处理、分类、聚类、关联分析、特征选择、可视化展示等功能;experimenter能够帮助用户通过一次实验运行多个算法并比较算法性能,进行统计检验等功能;KnowledgeFlow工作流与explorer功能差不多,但实现了直观的流式布局,能增量、批量并行处理数据,能实现过滤器、链接以及分类效果可视化等;workbench根据官网的描述,就是讲机器学习的所有功能模块进行集成,避免要频繁地切换使用工具(因为机器学习是一个迭代的过程,非线性过程),其界面与explorer的界面相似。Simple CLI是weka的命令行工具,其实现的功能与GUI实现的功能差不多,但其能保存生成的model,在新的数据到来时直接调用模型进行分类预测。

(具体参考:https://blog.csdn.net/shaoz/article/details/6841498)

(二)weka数据格式

weka专用数据格式称为AREF格式,其允许的两种基本数据类型是nominal(名目型)和numeric(数值型),此外还有字符串属性string,日期属性date,赋值关系属性relational。名目型变量就是分类变量,如weather可以分为sunny、rainy和windy;数值型变量是连续的,可以通过weka的preprocess中的discretize工具离散为nominal类型,weka也提供了nominal变量转换为二进制哑变量的工具;另外要注意:weka中部分算法对数据类型有严格的要求,否则功能不可用。

以下是AREF格式的模板,由于鸢尾花数据集是数值型的经典数据集,AREF变量类型栏都是numeric。@attribute部分是数据集属性描述,@data为数据部分。%后面的是注释,标记部分不属于iris数据集,是为了表示赋值关系属性relational的格式自己注释的,相应的@data部分也要对应赋值,此处略:

三、aprior算法挖掘iris数据集的规则

关于aprior算法,就是两个重要概念:一是规则支持度,二是规则置信度。在算法运用时设置这两个参数即可,具体算法过程请查阅历史文章。

(一)数据预处理:preprocessing模块

(1)导入CSV数据并存成AREF格式,不另存直接使用也可。注意用python导出CSV时index必须写入,不能有属性名缺失,否则导入时会报错。

(2)查看数据分布

(3)去除无效属性

index属性在挖掘中是无效的,使用remove去除

(4)转换修改变量类型

A、numeric属性值离散化为nominal变量(aprior算法要求,包括class标签也要离散化,因为导入时都是numeric)。

离散工具路径:Filter——choose——unsupervised——attribute——dicretize

B、选择工具后进入参数设置,一般设置attributeIndices(表示对哪个属性操作,形式是1-4或1,4或first-last等)和bins(表示切分区间)即可。

C、将class变量由numeric转换为nominal

按照先前类似的方式设置转换参数,设置attributeIndices即可。

(5)explorer——Associate菜单——choose——aprior工具,设置参数

此处需要设置的基本参数是lowerBoundMinSupport(最小支持度下界)和upperBoundMinSupport(最小支持度上界)。

(6)生成并查看结果

注意:如果start按钮为灰色,说明有可能某个属性值类型转换错误,需要回头重新检查。

以下是生成的满足支持度的规则:从图中可以看出,满足最小支持度0.3的实例有45个,最小置信度设置为0.9。此情况下,频繁-1项集、2-项集、3-项集和4-项集分别是13、10、5、1个。我们可以初步推测:attr4和attr3具有较强的相关性,class=0的花attr3的值都很小,attr4偏小的花很有可能是class=0的花等等。

再次说明:aprior算法是无监督数据挖掘算法,主要用于从杂乱数据中挖掘信息。要想对鸢尾花分类预测,不适合使用;如果仅仅是为了发掘各属性之间的关联规则,是可以使用的。本文主要是为了总结weka的使用方法及回顾aprior算法。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180719G0IB7K00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券