RapidMiner学习二 (简单的分类器构建) 2009-05-18 21:42在第一节中我们看到了RapidMiner从XML文件中读取配置信息,然后将样本信息打印出来的过程. 整个过程我们是依赖于XML配置文件的,当然通过配置XML来实现对实验流程的控制是一个非常好的方法.然而,当希望基于它进行二次开发时,我们该如何做,这才是问题的关键.做数据挖掘的人都会知道,在做实验室我们需要不断地调整算法及实验框架,这个时候二次开发是最基本的要求.因此我在这一节简要的介绍一下基于RapideMiner的开发.在RapidMiner中所有的操作都是基于Operator来做的,无论是读取文件,构建分类器,或者是其它的一些工作. 那么当我们希望脱离XML配置文件来工作时,一个自然地想法就是自己初始化一个Operator对象,让它为我们服务,一切的工作由我们来控制.那么在构建一个简单的分类器过程中会涉及到两类Operator,一类是读取数据信息的;一类是构建分类器.具体流程如下:1. 构建好读取样本数据信息的Operator;2. 读取样本数据信息3. 构建分类器Operator4. 用读取的样本数据训练分类器5. 获得分类器训练的模型代码如下:package com.test;import com.rapidminer.example.ExampleSet;import com.rapidminer.operator.IOObject;import com.rapidminer.operator.Model;import com.rapidminer.operator.OperatorDescription;import com.rapidminer.operator.io.ArffExampleSource;import com.rapidminer.operator.learner.tree.ID3Learner;import com.rapidminer.operator.learner.tree.TreeModel;public class TestID3 {public static void main(String[] args){try{ClassLoader loader=Thread.currentThread().getContextClassLoader();OperatorDescription arffDes=new OperatorDescription(loader,"arff","com.rapidminer.operator.io.ArffExampleSource",null,null,"IO.Examples","ArffExampleSource",null);OperatorDescription classifierDes=new OperatorDescription(loader,"classifier","com.rapidminer.operator.learner.tree.ID3Learner",null,null,"Learner.Supervised.Trees","ID3",null);ArffExampleSource arffSource=new ArffExampleSource(arffDes);ID3Learner ID3=new ID3Learner(classifierDes);arffSource.setParameter("data_file", "D:\\我的文档\\rm_workspace\\sample\\data\\contact-lenses.arff");arffSource.setParameter("label_attribute", "contact-lenses");IOObject[] ioObject=arffSource.apply();ExampleSet set=(ExampleSet)ioObject[0];System.out.println("example:" + set);TreeModel model=(TreeModel)(ID3.learn(set));}catch(Exception e){e.printStackTrace();}}}在开发这段代码的过程中,我发现在RapidMiner上做二次开发要比在weka上要繁琐多了.也许开发它的目的更多的是为了终端不进行二次开发的客户吧. RapidMiner在界面的人性化方面做的挺不错. 但是要想在上面做二次开发应该是一个相当的挑战.希望在这方面做的同仁要费一番心思了.!