weka源码之C45(J48)

来源:互联网 发布:python的idle在哪 编辑:程序博客网 时间:2024/06/07 13:22

一 基本数据结构
(1)Instances对象
一个Instances代表一张表,可以对应一个arff文件或者是一个csv文件,通过Instances对象可以取某一列的均值方差等,主要就是若干行记录的一个封装。
(2)Instance
一个Instance代表一行记录,换言之一个Instances的数据包含多个Instance。每个Instance会有一个特殊的列ClassIndex,该列值代表该Instance属于哪一类,具体来说就是图一里面的Golf。
(3)Classifier接口
Weka中每一个分类器都继承与这个接口(虽然从意义上来说是个接口但其实是个子类),该接口提供一个buildClassifier方法传入一个Instances对象用于训练,还有classifyInstance方法用于传入一个Instance来判断其属于哪个类。
(4)J48
分类器主类,实现了Classifier接口。
(5)ClassifierTree接口
代表树中的一个节点,维护和组成树的结构。其中J48用到的是C45PruneableClassifierTree和PruneableClassifierTree。
(6)ModelSelection接口
该接口负责判断和选取最优的属性,然后根据该属性将不同的Instance放到不同的subset中,ClassifierTree接口使用ModelSelection来生成树的结构。这种抽象方式还是很值得学习的,J48中用到的该接口的实现有BinC45ModelSelection和C45ModelSelection,通过名字大概也能看出来前一个是生成二叉树(即每个节点只含有是否两种回答),后一个是生成标准的C45树。

http://blog.csdn.net/roger__wong/article/details/39119701