Weka是来之新西兰怀卡托大学的一款开源软件,主要是数据挖掘方面的一些算法的集合。这款软件大概是当前数据挖掘领域最好的开源软件了.
由Java开发的 Weka (Waikato Environment for Knowledge Analysis) 是一个知名机器学机软件,其支持几种经典的数据挖掘任务,显著的数据预处理,集群,分类,回归,虚拟化,以及功能选择。其技术基于假设数据是以一种单个文件或关联的,在那里,每个数据点都被许多属性标注。 Weka 使用Java的数据库链接能力可以访问SQL数据库,并可以处理一个数据库的查询结果。它主要的用户接品是Explorer,也同样支持相同功能的命令行,或是一种基于组件的知识流接口。
Weka实在是一个伟大的工具。基于java,却没有运行其它java程序那种慢吞吞的感觉。前天我还在说Data Mining is excruciating but interesting,有了Weka,Data Mining也可以轻轻松松了!
数据挖掘的过程:
1.读入训练、测试样本
2.初始化分类器
3.使用训练样本训练分类器
4.使用测试样本测试分类器的学习效果
5.打印分类结果
WEKA启动:
数据挖掘绝非大公司的专有,也不是多昂贵的软件。实际上,有一种软件可以实现那些价格不菲的软件所能实现的全部功能 — 这个软件就是 WEKA(参见 参考资料)。WEKA 诞生于 University of Waikato(新西兰)并在 1997 年首次以其现代的格式实现。它使用了 GNU General Public License (GPL)。该软件以 Java™ 语言编写并包含了一个 GUI 来与数据文件交互并生成可视结果(比如表和曲线)。它还有一个通用 API,所以您可以像嵌入其他的库一样将 WEKA 嵌入到您自己的应用程序以完成诸如服务器端自动数据挖掘这样的任务。
我们继续并安装 WEKA。因为它基于 Java,所以如果您在计算机上没有安装 JRE,那么请下载一个包含 JRE 的 WEKA 版本。
图 1. WEKA 的开始屏
在启动 WEKA 时,会弹出 GUI 选择器,让您选择使用 WEKA 和数据的四种方式。对于本文章系列中的例子,我们只选择了 Explorer 选项。对于我们要在这些系列文章中所需实现的功能,这已经足够。
图 2. WEKA Explorer
在熟悉了如何安装和启动 WEKA 后,让我们来看看我们的第一个数据挖掘技术:回归。
Weka怎么用?
Weka是基于java,用于数据挖掘和知识分析一个平台。来自世界各地的java爱好者们都可以把自己的算法放在这个平台上,然后从海量数据中发掘其背后隐藏的种种关系;也许你只是出于对数据的狂热爱好,但也许你的发现会蕴含着无限的商机。
打开Weka,首先出现一个命令行窗口。原以为要在这个命令行下写java语句呢,不过稍等一秒,Weka GUI Chooser的出现了。这是一个很简单的窗体,提供四个按钮:Simple CLI、Explorer、Experimenter、KnowledgeFlow。Simple CLI应该是一个使用命令行的界面,有点像SAS的编辑器;Explorer是则是视窗模式下的数据挖掘工具;Experimenter和 KnowledgeFlow的使用有待进一步摸索....
先打开Weka Exlporer感受一下它的强大吧。它有六个标签页,分别是Preprocess、Classify、Cluster、Associate、 Select attributes、Visualize。在Preprocess中Open一个数据文件(Weka使用的数据文件是.arff,其实是一个文本数据集,格式并不复杂,用notepad打开一看就明白了)。当然也可以Open URL或Open DB,不过我没有check一下支持哪些DB。
打开数据文件后,可以使用Filter进行一下过滤,相当于“预处理的预处理”。Filter提供了许多算法来过滤数据,比如 filters/unsupervised/instance/normalize应该是一个标准化的算法。当然,也可以编写你自己的算法!
这时窗体上已经给出这个数据集的一些基本特征了,比如有多少属性,各属性的一些简单统计量,右下方还给出一些可视化效果比如柱状图。通过这些可以初步了解这个数据集了。但这些都是很直观的可以看出来,好戏在后头,隐藏的关系即将登场。
接下来的两个标签页是classify(分类)和cluster(聚类),接触数据挖掘的人对它们一定不会陌生。同样Weka有许多分类和聚类算法可供选择,在这里面称为clasifier和clusterer。不过Weka提供的classify功能似乎还不够灵活,只能定长度和定频率地分类。但这个关系不大,现在很多数据处理软件都可以做到这个,比如excel。Cluster功能强大,提供了许多巧妙的聚类算法,选定一个算法,给出你所需要生成的聚类数目,就可以自动完成。当然如果能不给出聚类数目也能自动聚类的话就更佳了,不过我还没发现怎么做。
Next,终于到伟大的Associate了! 这是一个用于发掘Associate Rules(关联规则)的模块。对商学略有涉猎的人一定熟知沃尔玛发现了啤酒和尿布销售的关系这一佳话。有了Weka Associate,任何一家超市都可以做到这一点了。将前面导入的数据使用Associator进行发掘,就可以发现其中无数隐藏的关系。Weka-3 -4提供了Apriori、PredictiveApriori、Tertius三种关联规则发掘算法,不过我感觉这已经够用了。选定一个算法,进行一些必要的设置,包括支持度上界、下界,每次运算的支持度递减值,等等。另外一个重要的参数:所需要生成的关联规则个数。太不可思议了,以前我们能从海量数据中发现一个关联规则就已经沾沾自喜,现在Weka居然问你想生成多少关联规则!
参数设置完成,点Start,就可以去喝茶了。不一会,10条关联规则已经生成,可以提交给老板了。当然,你还可以分析一下哪些规则比较有用,哪一条有潜在收益,这就需要business sense了。
另外两个标签页还没怎么看。Select attributes大概是针对单属性的分析?Visualize则提供了许多可视化效果,需要拿出去演示时很方便。不过今天使用感觉这个模块的功能有点问题,没太搞懂。也有可能是我用错了。
将数据载入 WEKA
数据创建完成后,就可以开始创建我们的回归模型了。启动 WEKA,然后选择 Explorer。将会出现 Explorer 屏幕,其中 Preprocess 选项卡被选中。选择 Open File 按钮并选择在上一节中创建的 ARFF 文件。在选择了文件后,WEKA Explorer 应该类似于图 3 中所示的这个屏幕快照。
图 3. 房屋数据加载后的 WEKA
在这个视图中,WEKA 允许您查阅正在处理的数据。在 Explorer 窗口的左边,给出了您数据的所有列(Attributes)以及所提供的数据行的数量(Instances)。若选择一列,Explorer 窗口的右侧就会显示数据集内该列数据的信息。比如,通过选择左侧的 houseSize 列(它应该默认选中),屏幕右侧就会变成显示有关该列的统计信息。它显示了数据集内此列的最大值为 4,032 平方英尺,最小值为 2,200 平方英尺。平均大小为 3,131 平方英尺,标准偏差为 655 平方英尺(标准偏差是一个描述差异的统计量度)。此外,还有一种可视的手段来查看数据,单击Visualize All 按钮即可。由于在这个数据集内的行数有限,因此可视化的功能显得没有有更多数据点(比如,有数百个)时那么功能强大。
好了,对数据的介绍已经够多了。让我们立即创建一个模型来获得我房子的价格。