
2013-2014学年第一学期
《数据挖掘》
课程大作业
题 目: WEKA实验学习体验
院系名称:管理学院
专业名称:信息管理与信息系统
班 级:B101117
学 号:B10111733
姓 名:周 亮
WEKA实验学习
WEKA的全名是怀卡托智能分析环境(Waikato Environment for Knowledge Analysis),它的源代码可通过http://www.cs.waikato.ac.nz/ml/weka得到。同时weka也是新西兰的一种鸟名,而WEKA的主要开发者来自新西兰。
WEKA 集合了大量能承担数据挖掘任务的机器学习算法,包括对数据进行预处理,分类,回归、聚类、关联规则以及在新的交互式界面上的可视化。如果想自己实现数据挖掘算法的话,可以看一看weka的接口文档。在weka中集成自己的算法甚至借鉴它的方法自己实现可视化工具并不是件很困难的事情。 使用WEKA作数据挖掘,面临的第一个问题往往是我们的数据不是ARFF格式.
首先我们来看看WEKA所用的数据应是什么样的格式。跟很多电子表格或数据分析软件一样,WEKA所处理的数据集是图1那样的一个二维的表格。
图1
WEKA支持的 numeric-------------------------数值型 string----------------------------字符串型 date [ 其中 Weka 试验(Experiment)环境可以让用户创建,运行,修改和分析算法试验,这也许比单独的分析各个算法更加方便。例如,用户可创建一次试验,在一系列数据集上运行多个算法(schemes),然后分析结果以判断是否某个算法比其他算法(在统计意义下)更好。 下面就bank--data表操作学习的过程来系统的演示一下: 首先是WEKA的开始屏 在启动 WEKA 时,会弹出 GUI 选择器,让您选择使用 WEKA 和数据的四种方式。对于本文章系列中的例子,我们只选择了 Explorer 选项。对于我们要在这些系列文章中所需实现的功能,这已经足够。 在WEKA 3.5中提供了一个“Arff Viewer”模块,我们可以用它打开一个CSV文件将进行浏览,然后另存为ARFF文件。 进入“Exploer”模块,从上方的按钮中打开CSV文件然后另存为ARFF文件亦可。 “Exploer”界面 ,我们应该注意到,“Exploer”还提供了很多功能,实际上可以说这是WEKA使用最多的模块。现在我们先来熟悉它的界面,然后利用它对数据进行预处理。 打开数据 通常对于数据挖掘任务来说,ID 这样的信息是无用的,我们将之删除。在区域5 勾选属性“id”,并点击 “Remove”。将新的数据集保存一次,并用UltraEdit 打开这个ARFF 文件。我们发现,在属性声明部分,WEKA 已经为每个属性选好了合适的类型。我们知道,有些算法,只能处理所有的属性都是分类型的情况。这时候我们就需要对数值型的属性进行离散化。在这个数据集中有3 个变量是数值型的,分别是“age”,“income”和“children”。其中“children”只有4 个取值:0,1,2,3。在“Explorer”中重新打开“bank-data.arff”,看看选中“children”属性后,区域6 那里显示的“Type”是不 是变成“Nominal”了? 操作结果如下图 6. 聚类分析 原理与实现 聚类分析中的“类”(cluster)和前面分类的“类”(class)是不同的,对cluster 更加准确的翻译应该是“簇”。聚类的任务是把所有的实例分配到若干的簇,使得同一个簇的实例聚集在一个簇中心的周围,它们之间距离的比较近;而不同簇实例之间的距离比较远。对于由数值型属性刻画的实例来说,这个距离通常指欧氏距离。现在我们对前面的“bank data”作聚类分析,使用最常见的K 均值(K-means)算法。下面我们简单描述一下K 均值聚类的步骤。 K 均值算法首先随机的指定K 个簇中心。然后:1)将每个实例分配到距它最近的簇中心,得到K 个簇;2)计分别计算各簇中所有实例的均值,把它们作为各簇新的簇中心。重复1)和2),直到K 个簇中心的位置都固定,簇的分配也固定。上述 K 均值算法只能处理数值型的属性,遇到分类型的属性时要把它变为若干个取值0 和1 的属性。WEKA将自动实施这个分类型到数值型的变换,而且WEKA 会自动对数值型的数据作标准化。因此,对于原始数据“bank-data.csv”,我们所做的预处理只是删去属性“id”,保存为ARFF 格式后,修改属性“children”为分类型。这样得到的数据文件为“bank.arff”,含600 条实例。用 “Explorer” 打开刚才得到的“bank.arff” , 并切换到“Cluster” 。点“Choose” 按钮选择“SimpleKMeans”,这是WEKA 中实现K 均值的算法。点击旁边的文本框,修改“numClusters”为6, 说明我们希望把这600 条实例聚成6 类,即K=6。下面的“seed”参数是要设置一个随机种子,依此产生一个随机数,用来得到K 均值算法中第一次给出的K 个簇中心的位置。我们不妨暂时让它就为10。选中“Cluster Mode”的“Use training set”,点击“Start”按钮,观察右边“Clusterer output”给出的聚类结果。也可以在左下角“Result list”中这次产生的结果上点右键,“View in separate window”在新窗 口中浏览结果。 可视化分析后得到的最终结果如下图 结束语
