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