第2章 探索者界面
探索者(Explorer)界面是Weka的主要图形用户界面,其全部功能都可通过菜单选择或表单填写进行访问。本章介绍探索者的图形用户界面、预处理、分类、聚类、关联、选择属性和可视化等内容,内容非常丰富,学习这些知识可以全面了解Weka的功能,快速上手实际的挖掘任务。
2.1 图形用户界面
启动Weka GUI 选择器窗口之后,单击Explorer按钮,即可启动探索者界面。这时,由于没有加载数据集,除Preprocess标签页外,其他标签页都变灰而不可用。可以使用Open file、Open URL、Open DB或者Generate按钮加载或产生数据集,加载数据集之后,其他标签页才可以使用。
这里以打开文件为例进行说明。单击Open file按钮,通过弹出的“打开”对话框,选择打开data子目录下的iris.arff文件,加载数据集后的探索者界面如图2.1所示。
图2.1 探索者界面
下面按照先整体后局部的顺序介绍图形用户界面。
2.1.1 标签页简介
图2.1所示界面的顶部有六个不同的标签页,分别对应Weka所支持的多种数据挖掘方式。
这六个标签页的介绍如下。
(1) Preprocess(预处理):选择数据集,并以不同方式对其进行修改。
(2) Classify(分类):训练用于分类或回归的学习方案,并对其进行评估。
(3) Cluster(聚类):学习数据集聚类方案。
(4) Associate(关联):学习数据关联规则,并对其进行评估。
(5) Select attributes(选择属性):选择数据集中预测效果最好的部分属性。
(6) Visualize(可视化):查看不同的二维数据散点图,并与其进行互动。
每个标签页都可完成不同工作,单击相应的标签即可实现标签页的切换。
界面底部包括Status(状态)栏、Log(日志)按钮和一只Weka鸟,这些都一直保持可见,不论用户切换到哪一个标签页。
2.1.2 状态栏
状态栏位于界面最下部,可以让用户了解到现在进行到哪一步。例如,如果Weka探索者正在忙于加载数据文件,状态栏中会显示相应的状态信息。
除了显示状态之外,还可以右击鼠标来显示内存信息,以及运行垃圾回收器以清理内存。在状态栏的任意位置右击,弹出的快捷菜单中只包括两个菜单项:Memory information(内存信息)和Run garbage collector(运行垃圾回收器)。第一个菜单项用于显示Weka当前可用的内存空间;第二个菜单项用于启动Java垃圾回收器,搜寻不再使用的内存并释放,以回收部分内存空间,提供给新的任务使用。需要指出的是,垃圾回收器是一个不间断运行的后台任务,如果不强制进行垃圾回收,Java虚拟机也会在适当时候自动启动垃圾回收器。
Log按钮位于状态栏的右面,单击该按钮会打开可以滚动的日志窗口,显示在此次运行期间内Weka 进行的全部活动以及每项活动的时间戳。不管是使用GUI、命令行还是Simple CLI,日志都会包含分类、聚类、属性选择等操作的完整的设置字符串,用户可以进行复制和粘贴操作。顺便提醒读者,通过学习日志里记录的命令,可以深层次地了解Weka的内部运行机制。
在Log按钮的右边,可以看到被称为Weka状态图标的鸟。如果没有处理过程在运行,小鸟会坐下来打个盹。“”符号旁边的数字显示目前有多少个正在进行处理的进程,当系统空闲时,该数字为零,数字会随着正在进行处理进程数的增加而增加。当启动处理进程时,小鸟会站起来不停走动。如果小鸟长时间站着不动,说明Weka出现运行错误,此时用户需要关闭并重新启动探索者界面。
2.1.3 图像输出
Weka中显示的大部分图形,包括本章的探索者界面和后面章节的知识流界面、实验者界面显示的图形,以及通过Weka GUI选择器菜单带出的GraphVisualizer(图可视化工具)或TreeVisualizer(树可视化工具)显示的图形,都可以保存为图像文件以备将来使用。保存方法是,在按住Alt键和Shift键的同时,在要保存的图形上单击,启动保存文件对话框。Weka支持的图像文件格式有BMP、JPEG、PNG和Postscript的EPS,用户可以选择图像文件格式,还可以修改输出图像文件的尺寸。
2.1.4 手把手教你用
1. 启动Weka
双击桌面上的Weka 3.7快捷方式,启动Weka GUI选择器窗口,如图2.2所示。
单击Explorer按钮启动探索者界面,如图2.3所示。现在,除Preprocess标签页可用外,其余标签页都不可用。
图2.2 Weka GUI选择器窗口
图2.3 探索者界面
2. 了解标签页
单击图2.3所示界面中的Open file按钮,弹出“打开”对话框,导航至Weka安装目录下的data子目录,选择iris.arff文件,如图2.4所示。单击“打开”按钮,打开该文件。
图2.4 “打开”对话框
打开文件(或称为加载数据)后的探索者界面如图2.5所示。可以看到,加载数据后,六个标签页都变为可用状态。
图2.5 打开文件后的探索者界面
读者可以自行切换标签页,初步了解各标签页的功能,为后续学习打下基础。
3. 了解状态栏
不论切换到哪个标签页,都可在探索者界面下部的状态栏中查看状态信息。在状态栏任意位置右击,在弹出的快捷菜单中选择Memory information菜单项,状态栏显示用斜杠分割的内存信息,格式为:空闲内存/全部内存/最大内存,单位是字节,如图2.6所示。
图2.6 内存信息
如果在快捷菜单中选择Run garbage collector菜单项,状态栏中会显示OK信息,表示已经启动了垃圾回收器,如图2.7所示。
图2.7 运行垃圾回收器
单击状态栏右边的Log按钮,可以查看当前日志,如图2.8所示。
图2.8 日志窗口
4. 保存图像文件
单击图2.5所示界面右边的Visualize All(全部可视化)按钮,打开如图2.9所示的全部可视化窗口。
图2.9 全部可视化窗口
同时按住Alt键和Shift键,并在图2.9所示的五幅图标中任选一图标,在图标的任意位置单击,启动Save as对话框。设置“文件名”为test,选择“文件类型”为jpg(或其他格式),单击“保存”按钮,就可将其保存为图像文件,如图2.10所示。
图2.10 Save as对话框
在图2.10的右边,还可以定制图像文件的长、宽尺寸,单位为像素。选中Use custom dimensions(使用自定义尺寸)复选框,就可以设置图像尺寸。如果选中Keep aspect ratio(保持宽高比)复选框,则在修改图像长(或宽)的同时,会按比例自动缩放宽(或长)。
2.2 预 处 理
Preprocess标签页可用于从文件、URL或数据库中加载数据集,并且根据应用要求或领域知识过滤掉不需要进行处理或不符合要求的数据。
2.2.1 加载数据
Preprocess标签页中顶部的前四个按钮可以让用户将数据加载到Weka系统。Open file按钮用于启动“打开”对话框,用户可以浏览本地文件系统,打开本地数据文件。Open URL按钮要求用户提供一个URL地址,Weka使用HTTP协议从网络位置下载数据文件。Open DB按钮用于从数据库中读取数据,支持所有能够用JDBC驱动程序读取的数据库,使用SQL语句或存储过程读取数据表。注意,必须根据自己的计算机环境配置,相应修改weka\experiment\DatabaseUtils.props配置文件后才能访问数据库,具体参见1.4节内容。Generate按钮用于让用户使用不同的DataGenerators(数据生成器)生成人工数据,适用于分类功能的人工数据可以由决策列表RDG1、径向基函数网络RandomRBF、贝叶斯网络BayesNet、LED24等算法产生,人工回归数据也可以根据数学表达式生成,用于聚类的人工数据可以使用现成的生成算法产生。
使用Open file按钮,可以读取多种数据格式的文件,包括Weka ARFF格式、C4.5数据格式、CSV格式、JSON实例文件格式、LibSVM数据文件格式、Matlab ASCII文件格式、svm轻量级数据文件格式、XRFF格式,以及序列化实例的格式。其中,ARFF格式的后缀为.arff,C4.5数据格式的后缀为.data或.names,CSV格式的后缀为.csv,JSON实例文件格式的后缀为.json,LibSVM数据文件格式的后缀为.libsvm,Matlab ASCII文件格式的后缀为.m,svm轻量级数据文件格式的后缀为.dat,XRFF格式的后缀为.xrff,序列化实例对象文件的后缀为.bsi。有的格式后缀还会加上.gz,这代表对应文件的压缩形式。
另外,使用Save(保存)按钮,可以将已加载的数据保存为Weka支持的文件格式。该功能特别适合在不同文件格式之间进行转换,以及学习Weka文件格式的细节。
由于存在多种数据格式,为了从不同种类的数据源中导入数据,Weka提供实用工具类进行转换,这种工具称为转换器(converters),位于weka.core.converters包中。按照功能的不同,转换器分为加载器和保存器,前者的Java类名以Loader结束,后者以Saver结束。
加载数据后,Preprocess标签页会在Current relation(当前关系)选项组中显示当前数据集的一些总结信息。Relation(关系)栏显示关系名称,该名称由加载的文件给定;Attributes(属性)栏显示数据集中的属性(或特征)个数;Instances(实例)栏显示数据集中的实例(或数据点/记录)个数;Sum of weights(权重和)栏显示全部实例的权重之和。例如,当加载iris数据集后,Current relation选项组中显示关系名称为iris,属性个数为5,实例个数为150,权重和为150,如图2.11所示。
图2.11 Current relation选项组
Weka根据文件后缀调用不同的转换器来加载数据集。如果Weka无法加载数据,就会尝试以ARFF格式解释数据,如果再次失败,就会弹出如图2.12所示的提示对话框,提示Weka无法自行决定使用哪一个文件加载器,需要用户自己来选择。
单击图2.12中的“确定”按钮后,会弹出如图2.13所示的通用对象编辑器对话框,让用户选择能打开数据文件的对应转换器。默认转换器为CSVLoader,该转换器专门用于加载后缀为.csv的文件。如果用户已经确定数据文件格式是CSV格式,那么可以输入日期格式、字段分割符等信息。如果对对话框里的各选项不了解,可以单击More按钮查看使用说明。
图2.12 加载数据失败
如果用户已经知道数据文件格式不是CSV格式,可以单击通用对象编辑器对话框上部的Choose按钮选择其他的转换器,如图2.14所示。
图2.13 通用对象编辑器对话框
图2.14 选择转换器
图2.14所示对话框中,第一个选项是ArffLoader,选择该选项并成功的可能性很小,因为默认就是使用它来加载数据集,没有成功才会弹出加载数据失败的提示对话框。第二个选项是C45Loader,C4.5格式的数据集由两个文件共同构成,一个文件(.names)提供字段名,另一个文件(.data)提供实际数据。第三个选项是默认的CSVLoader,这是一种以逗号分隔各属性的文件格式,前文已经介绍了这种数据转换器。第四个选项DatabaseLoader是从数据库,而不是文件中读取数据集。然而,使用第1章介绍的SQLViewer工具来访问数据库,是更为人性化且方便的方案。SerializedInstancesLoader选项用于重新加载以前作为Java序列化对象保存的数据集。任何Java对象都可以采用这种格式予以保存并重新加载。由于序列化对象本身就是Java格式,使用它可能比加载ARFF文件的速度更快,这是因为加载ARFF文件时必须对其进行分析和检查,从而花费更多的时间。如果需要多次加载大数据集,则很值得以这种数据格式进行保存。
值得一提的是TextDirectoryLoader加载器,它的功能是导入一个目录,目录中包含若干以文本挖掘为目的的纯文本文件。导入目录应该有特定的结构——一组子目录,每个子目录包含一个或多个扩展名为.txt的文本文件,每个文本文件都会成为数据集中的一个实例,其中,一个字符串型属性保存该文件的内容,一个标称型的类别属性保存文件所在的子目录名称。该数据集可以通过使用StringToWordVector过滤器进一步加工为词典,为后面的文本挖掘做准备。