Weka数据挖掘软件使用指南
Weka 数据挖掘软件使用指南
1. Weka简介
该软件是WEKA的全名是怀卡托智能分析环境(Waikato Environment for Knowledge Analysis),它的源代码可通过得到。Weka作为一个公开的数据挖掘工作平台,集合了大量能承担数据挖掘任务的机器学习算法,包括对数据进行预处理,分类,回归、聚类、关联规则以及在新的交互式界面上的可视化。如果想自己实现数据挖掘算法的话,可以看一看Weka的接口文档。在Weka中集成自己的算法甚至借鉴它的方法自己实现可视化工具并不是件很困难的事情。
2. Weka启动
打开Weka主界面后会出现一个对话框,如图:
主要使用右方的四个模块,说明如下:
Explorer使用Weka探索数据的环境,包括获取关联项,分类预测,
聚
簇等;(本文主要总结这个部分的使用)
Experimenter运行算法试验、管理算法方案之间的统计检验的环境; KnowledgeFlow这个环境本质上和Explorer所支持的功能是一样的,但是它有一个可以拖放的界面。它有一个优势,就是支
持增量学习; SimpleCLI提供了一个简单的命令行界面,从而可以在没有自带命令行的操作系统中直接执行Weka命令;(某些情况下使用命令行功能更好一些)
3.主要操作说明
点击进入Explorer模块开始数据探索环境:
3.1主界面
进入Explorer模式后的主界面如下:
3.1.1标签栏
主界面最左上角(标题栏下方)的是标签栏,分为五个部分,功能依次是:
1. Preprocess. 选择和修改要处理的数据;
2. Classify. 训练和测试关于分类或回归的学习方案;
3. Cluster. 从数据中学习聚类;
4. Associate.从数据中学习关联规则;
5. Select attributes. 选择数据中最相关的属性;
6. Visualize.查看数据的交互式二维图像。
3.1.2载入、编辑数据
标签栏下方是载入数据栏,功能如下:
1.Open file.打开一个对话框,允许你浏览本地文件系统上的数据文件(.dat);
2.Open URL.请求一个存有数据的URL 地址;
3.Open DB.从数据库中读取数据;
4.Generate.从一些数据生成器中生成人造数据。
3.1.3其他界面说明
接下来的主界面中依次是Filter(筛选器),Currtent relation(当前关系)、Attributes(属性信息)、Selected attribute(选中的属性信息)以及Class(类信息),分别介绍如下:
Filter
在预处理阶段,可以定义筛选器来以各种方式对数据进行变换。Filter 一栏用于对各种筛选器进行必要设置。Filter一栏的左边是一个
Choose 按钮。点击这个按钮就可选择Weka中的某个筛选器。用鼠标左键点击这个choose左边的显示框,将出现GenericObjectEditor对话框。用鼠标右键点击将出现一个菜单,你可从中选择,要么在
GenericObjectEditor对话框中显示相关属性,要么将当前的设置字符复制到剪贴板。
Currtent relation
显示当前打开的数据文件的基本信息:Relation(关系名),Instances(实例数)以及Attributes(属性个数)。
Attributes
显示数据文件中的属性信息,并且包含四个操作按键:
1. All.所有选择框都被勾选;
2. None.所有选择框被取消;
3.Invert. 已勾选的选择框都被取消,反之亦然;
4. Pattern. 让用户基于Perl 5正则表达式来选择属性。例如,用*_id选择所有名称以_id结束的属性。
底下显示的就是数据文件包含的属性,可以进行勾选等操作。特别地,当数据预处理是不要某个属性时,将其各选,点击列表正下方的Remove按键即可删除这一属性:
Selected attribute
显示勾选的属性的基本信息。
Class
显示属性中数据元组的直方图。点击Visualize all按键可以查看所有属性中元组的直方图。
3.2实现基本数据挖掘功能:
3.2.1Associate(关联规则)
注意:目前,Weka的关联规则分析功能仅能用来作示范,不适合用来挖掘大型数据集。
各部分功能说明如下:
Associator
首先切换到Associate选项卡。默认关联规则分析是用Apriori算法,我们就用这个算法,点Choose右边的文本框修改默认的参数,弹出的窗口中点More可以看到各参数的说明。一下简列几项:
LowerBonundMinSupport:最小支持度下限;
UpperBonundMinSupport:最小支持度上限;
metricType:关联、程度指标;
numRules:在某种关联规则下取出的满足条件的规则数;
注意:各种关联规则算法都是尤其使用范围的,并不是所有的属性的数据类型都能被某一算法处理,典型的例如Apriori算法。因此可以在choose下拉菜单中选择Filter选项,在其中勾选待处理数据的属性的类型以滤除无法使用的算法。要想知道每种算法都是用哪些数据类型,可以左击choose
旁边的文本框,在弹出的菜单栏中单击capabilities选项可以看到这种算法能够处理的数据类型。
Result list
点击Associator下方的start按键可以开始进行关联项分析,结果列表即出现在Result list中,右击出现更多选项可供选择。
Associator output
这里显示关联分析结果,如图为一个例子:
一次显示了100个符合条件的关联规则,并且在其后显示了关联规则的四项指标以供参考。
3.2.2Classify(分类预测)
该部分实现数据挖掘中的分类与预测功能,提供了各种主要的分类预测算法供使用者选择。下面是界面各部分的介绍:
Classifier
在choose一栏中选择需要的分类算法,同样地方法,每当选择一个算法,这个算法便在choose
左边的文本框中进行显示,单击他会出
现一个菜单,其中包含了一些参数的设定和more以及capabilities选项,欠着用来获取那些需要设定参数的具体信息,后者用来获取算法适合的属性数据类型,这一点是相似的,因此在对数据进行处理是也应该注意数据的属性类型,单击choose在下拉菜单中选择Filter按键可以进行数据类型
的选择从而过滤掉不能使用的算法。。
Test option
提供四种测试模式:
1. Using training set.根据分类器在用来训练的实例上的预测效果来评价它。
2. Supplied test set. 从文件载入的一组实例,根据分类器在这组实例上的预测效果来评价它。点击 Set。按钮将打开一个对话框来选择用来测试的文件。
3. Cross-validation.使用交叉验证来评价分类器,所用的折数填在Folds 文本框中。
4. Percentage split.从数据集中按一定百分比取出部分数据放在一边作测试用,根据分类器这些实例上预测效果来评价它。取出的数据量由% 一栏中的值决定。
当一切准备就绪时,点击start按键开始分类过程,完成后Result list中会显示结果列表,并且Classifier output中会显示出结果。右击Result list中的结果,可以看见多个选项,选择Visualize tree,新窗口里可以看到图形模式的决策树。建议把这个新窗口最大化,然后点右键,选“Fit to screen”,可以把这个树看清楚些。先运行一个结果解
释其中一些内容,如图所示:
第一行的Correctly Classified Instances表示当前参与分类的实例中被正确分类的实例数目,第二行Incorrectly Classified Instances表示未被正确分类的实例数目。
关于Confusion Matrix,解释如下:
原本“pep”是“YES”的实例,有74个被正确的预测为“YES”,有64个错误的预测成了“NO”;原本“pep”是“NO”的实例,有30个被错误的预测为“YES”,有132个正确的预测成了“NO”。74+64+30+132 = 300是实例总数,而(74+132)/300 = 0.__正好是正确分类的实例所占比例。这个矩阵对角线上的数字越大,说明预测得越好。 更多选项及解释内容参见:
3.3.3Cluster(聚簇分析)
聚簇分析的原理就是将为标定类的数据根据其相似性分为几个类,在同一类中的 数据元组具有较强的相似性,而在不同类中的数据元组则没有相似性或者很弱。
现对其主要界面说明如下:
Clusterer
单击choose,在这里可以选择适当的聚簇算法,选择后该算法会出现在choose左边的文本框中,在单击弹出的菜单可以对参数进行设定。同时在选择more或者capabilities选项可以查看每种设定表示的具体信息和该算法的适用范围(包括适用的数据类型信息等)。 Cluster mode
Cluster Mode一栏用来决定依据什么来聚类以及如何评价聚类的结果。前三个选项和分类的情形是一样的:Use training set、Supplied test set 和Percentage split区别在于现在的数据是要聚集到某个类中,而不是预测为某个指定的类别。第四个模式,Classes to clusters evaluation,是要比较所得到的聚类与在数据中预先给出的类别吻合得怎样。和Classify面板一样,下方的下拉框是用来选择作为类别
的属性的。在 Cluster mode 之外,有一个Store clusters for visualization的勾选框,该框决定了在训练完算法后可否对数据进行可视化。
设定按start开始进行,注意在其上方的
可以允许我们忽略某些属性。 Result list
与前面的情形一样,该栏对结果进行顺序显示。右击每一项弹出选择菜单:如,Visualize cluster assignments和Visualize tree。后者在它不可用时会变灰。
Clusterer output
显示聚簇分析的结果。
具体解释参见:http://maya.cs.depaul.edu/~classes/ect584/WEKA/classify.html
Linux下Weka环境配置:
在Linux下和windows下使用Weka
注:我的版本是Weka 3.6.
linux环境下:
一般下载了官方提供的tar.gz包之后解压,如果机器上装有java运行环境,可以直接运行weka.
不过可能会在命令行出现
加载数据库驱动出错,在classpath找不到驱动之类消息,
似乎是can not find com.mysql.jdbc.Driver error not in __TH? 如果你不需要从数据库加载数据作为分析数据源,完全不用理会。 要想使用数据库连接功能,首先准备好对应数据库的驱动,比如mysqljdbc Driver等,简便的方法是
将jar文件copy到
/usr/lib/jvm/“java-1.6.0-openjdk”/jre/lib/ext
“java-1.6.0-openjdk“不是唯一的,具体视机器上装的java运行时而
定。
还有修改__TH的方法,没尝试过。
这一步弄完之后应该不会出现命令行提示找不到驱动的错误。 其次是修改weka数据类型和数据库数据类型的映射。
(这下面的内容来自Weka官方wiki /Properties+file)
在weka.jar里面有一个文件
/weka/experiment/DatabaseUtils.props,记录了数据库操作的相关参数。
还有很多文件
DatabaseUtils.props.msaccess,
DatabaseUtils.props.mssqlserver等,分别对应了各个数据库的操作参数,
如果你使用DatabaseUtils.props.
msaccess,可以把DatabaseUtils.props.msaccess的内容覆盖
如果不对DatabaseUtils.props修改,可能在连接数据库时一切顺利,但在将数据装入准备预处理时
却出现找不到数据类型(can not read from database,unknown data type)之类错误。
没关系,在DatabaseUtils.props加入类型映射就OK了。
文件中一般有下面的内容(这里是我用mysql对应的文件覆盖了):
# JDBC driver (comma-separated list)
jdbcDriver=com.mysql.jdbc.Driver
# database URL
jdbcURL=jdbc:mysql://server_name:3306/database_name
# specific data types
string, getString() = 0; -- nominal
boolean, getBoolean() = 1; -- nominal
double, getDouble() = 2; -- numeric
byte, getByte() = 3; -- numeric
short, getByte()= 4; -- numeric
int, getInteger() = 5; -- numeric
long, getLong() = 6; -- numeric
float, getFloat() = 7; -- numeric
date, getDate() = 8; -- date
text, getString() = 9; -- string
time, getTime() = 10; -- date
BigDecimal,getBigDecimal()=11; --nominal
#mysql-conversion
CHAR=0
TEXT=0
#mysql-conversion下提供的类型一般是不够的,比如int unsigned就找不到,
所以要加入int是如何映射到weka类型的。
在# specific data types下找到Int对应的java类型,这里是int, getInteger() = 5; -- numeric
所以在#mysql-conversion下新增INT=5
再加上__D类型,INT___D=6(因为unsigned比signed多一倍的数,为防止截断,要取大的类型)
其他类型的映射依次类推。
注意INT和__D之间的下划线,缺了的话错误解决不了,我就在这里搞了好久。
(Note: in case database types have blanks, one needs to replace those blanks with an underscore, e.g., DOUBLE __ON must be listed like this:
DOUBLE___ON=2)
from
/weka_experiment_DatabaseUtils.props#toc4
最后,最重要的是,把DatabaseUtils.props放到home目录下,重启Weka后生效。
因篇幅问题不能全部显示,请点此查看更多更全内容