WEKA数据挖掘的包结构
通常,每个Java程序都是作为一个类来实现的,当程序比较大时,可能被分割为几个类,而当类的数量很多时,就很难理解和查找。于是,Java就允许将许多类组织在一起组成一个包,每个包为含有相关联类的集合的一个目录。类似地,在WEKA中也存在这样的包,所有的包根据一个层级组织在一起,而该层级结构与目录的层级结构相对应,例如,trees是classifiers包的一个子包,而classifiers包本身又是整个WEKA包的一个子包。
当打开WEKA配套包中的Package Documentation时,就会生成WEKA包的在线帮助文档。它是由源代码自动产生的,准确地反映了源代码的结构,也可以说是WEKA的主要框架,进一步说,这个在线文档对于想要提升到较高层次并在他们自己的Java程序中访问WEKA程序库,或者是希望基于WEKA进行二次开发者来说是极为重要的。
从WEKA包的列表中,可以查看WEKA中所有的包,它是按英文字母的顺序来排列的,有core(核心包)、classifiers(分类)、clusters(聚类)、associations(关联规则)、filters(过滤)、attributeSelection(属性选择)、gui(图形用户界面)等顶层包。
这里挑选几个比较重要的包进行简单介绍。
core包:是WEKA系统的核心,core包中的类实现了其他包需要用到的最基本方法或类。core包中的关键类有Attribute、Instance和Instances。其中,Attribute类的一个对象代表一个属性,它包含了属性名、类型以及如果是分类型或字符串的话还包含它可能的取值;Instance类的一个对象含有一个具体实例所含的属性值;Instances类的一个对象则含有一个按顺序排列的实例集或数据集。
classifiers包:包含各种用于分类及数值预测的算法。这个包中最重要的类是Classifier,它定义了任何用于分类或数值预测的学习方案的通用结构,含有buildClassifier()、distrbutionForInstance()和classifyInstance()三个重要方法,学习算法都自动地继承这三个方法,并且每种方案都会根据构建分类器以及它对实例进行分类的具体方式对这三种方法进行重新定义,为在其他Java代码中构建及使用分类器提供了一个统一的接口。
filters包:Filter类定义了含有过滤器算法的类的一般结构,这些算法都作为Filter类的子类实现,它是系统中仅次于classifiers的重要包,是一个数据预处理包。
associations包:包含关联规则学习器。WEKA中的所有关联规则算法都继承了Associator类。Associator类中包含有方法buildAssociations(),它是任何关联挖掘算法都要重新实现的方法。
clusterers包:包含各种无指导学习方法的实现。包中的Clusterer类包含有buildClusterer()、clusterInstance()和distrbutionForInstance()等方法,这三种方法是所有聚类算法都要重新实现的方法。
attributeSelection包:包含几个含有属性选择的类,实现了分类器在进行分类时可选用的各种属性选择度量标准。WEKA中实现的所有属性度量都继承自weka.attributeSelection.AttributeEvaluator类。