`
anna_zr
  • 浏览: 196509 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

Weka系列转载之初体验

阅读更多
从前年开始使用weka最数据挖掘方面的研究,到现在有一年半的时间了。看到我们同组的兄弟写了关于weka方面的总结,我也想整理一下。因为网上的资料实在是太少,记得刚接手的时候,真是硬着头皮看代码。不过到现在看来,也积累了很多的代码了。希望能够在这里跟大家分享一下学习weka的乐趣与经验。

Weka是来之新西兰怀卡托大学的一款开源软件,主要是数据挖掘方面的一些算法的集合。这款软件大概是当前数据挖掘领域最好的开源软件了,当然国外还有其它一些组织维护的有自己的开源软件,但是只有这款软件应用是比较广泛的了。具体关于weka的信息可以到官网去查看http://www.cs.waikato.ac.nz/ml/weka/ ,软件的下载也可大家到官网去。

我是从weka3.4一直用到现在的3.6版本的,其间weka在图形界面上有一些变动,但是底层的框架结构没有太大的变化,主要是添加一些新的算法什么的。总之大家可以放心的使用。我现在积累的代码是从3.5版本积累下来的,到现在3.6版本,集成起来一点问题都没有,这大概也是我喜欢weka的一个原因。

数据挖掘的过程一般如下:

1.       读入训练、测试样本

2.       初始化分类器

3.       使用训练样本训练分类器

4.       使用测试样本测试分类器的学习效果

5.       打印分类结果

我们现在看看一个简单的实例



package com.csdn;



import java.io.File;



import weka.classifiers.Classifier;

import weka.classifiers.Evaluation;

import weka.core.Instance;

import weka.core.Instances;

import weka.core.converters.ArffLoader;



public class Test {



    /**

     * @param args

     */

    public static void main(String[] args) {

       // TODO Auto-generated method stub

       Instances ins = null;

      

       Classifier cfs = null;

       try{

          

           /*

            * 1.读入训练、测试样本

            * 在此我们将训练样本和测试样本作为同一个样本

            */

           File file= new File("C:\\Program Files\\Weka-3-6\\data\\contact-lenses.arff");

           ArffLoader loader = new ArffLoader();

           loader.setFile(file);

           ins = loader.getDataSet();

          

           //在使用样本之前一定要首先设置instances的classIndex,否则在使用instances对象是会抛出异常

           ins.setClassIndex(ins.numAttributes()-1);

          

           /*

            * 2.初始化分类器

            * 具体使用哪一种特定的分类器可以选择,请将特定分类器的class名称放入forName函数

            * 这样就构建了一个简单的分类器

            */

           cfs = (Classifier)Class.forName("weka.classifiers.bayes.NaiveBayes").newInstance();

          

           /*

            * 3.使用训练样本训练分类器

            */

           cfs.buildClassifier(ins);

          

          

           /*

            * 4.使用测试样本测试分类器的学习效果

            * 在这里我们使用的训练样本和测试样本是同一个,在实际的工作中需要读入一个特定的测试样本

            */

           Instance testInst;

           /*

            * Evaluation: Class for evaluating machine learning models

            * 即它是用于检测分类模型的类

            */

           Evaluation testingEvaluation = new Evaluation(ins);

           int length = ins.numInstances();

           for (int i =0; i < length; i++) {

              testInst = ins.instance(i);

              //通过这个方法来用每个测试样本测试分类器的效果

              testingEvaluation.evaluateModelOnceAndRecordPrediction(

                  cfs, testInst);

           }

          

           /*

            * 5.打印分类结果

            * 在这里我们打印了分类器的正确率

            * 其它的一些信息我们可以通过Evaluation对象的其它方法得到

            */

           System.out.println( "分类器的正确率:" + (1- testingEvaluation.errorRate()));

       }catch(Exception e){

           e.printStackTrace();

       }

    }



}



通过这个实例,我们可以看到在weka上做开发非常简单的,每个模块weka都提供了很好的支持。同时,我们可以在此基础上对weka进行一个简单的封装。设计一个Util类,将数据读取,以及分类器测试等功能放在这个Util类中共以后其它的程序使用。



获取样本Instances

/*

     * 从.arff文件中获取样本Instances;

     * 1.fileName instances的文件名

     */

    public static Instances getInstances(String fileName) throws Exception{

       File file= new File(fileName);

       return getInstances(file);

    }



/*

     * 从.arff文件中获取样本Instances;

     * 1.file 获得instances的File对象

     */

    public static Instances getInstances(File file) throws Exception{

       Instances inst = null;

       try{

           ArffLoader loader = new ArffLoader();

           loader.setFile(file);

           inst = loader.getDataSet();

       }

       catch(Exception e){

           throw new Exception(e.getMessage());

       }

       return inst;

    }



获得一个Evaluation对象:

/*

     * 获得一个Evaluation对象

     * 1.h 一个已经训练过的分类器

     * 2.ins 测试样本

     */

    public static Evaluation getEvaluation(Classifier h,Instances ins){

       try{

           Instance testInst;

           /*

            * Evaluation: Class for evaluating machine learning models

            * 即它是用于检测分类模型的类

            */

           Evaluation testingEvaluation = new Evaluation(ins);

           int length = ins.numInstances();

           for (int i =0; i < length; i++) {

              testInst = ins.instance(i);

              //通过这个方法来用每个测试样本测试分类器的效果

              testingEvaluation.evaluateModelOnceAndRecordPrediction(

                   h, testInst);

            }

           return testingEvaluation;

       }

       catch(Exception e){

           System.out.println("haha bug!");

           System.out.println(e);

       }

       return null;     

    }



通过这几个函数我们就将读取instances对象的功能以及测试分类器的效果的功能封装到两个static函数中了,下次我们使用的时候就可以方便的调用这个接口了,可以省去我们写这些代码的时间了。

大家明白了吗?还是比较简单的吧。



本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/anqiang1984/archive/2009/04/01/4040571.aspx
分享到:
评论

相关推荐

    WEKA使用教程WEKA使用教程

    WEKA使用教程WEKA使用教程WEKA使用教程WEKA使用教程WEKA使用教程WEKA使用教程WEKA使用教程WEKA使用教程WEKA使用教程WEKA使用教程WEKA使用教程WEKA使用教程WEKA使用教程WEKA使用教程WEKA使用教程WEKA使用教程WEKA使用...

    weka-src[weka源码]

    weka-src[weka源码] 供参考

    Weka源代码系列- 编程 样例

    Weka 编程 多个 样例 ,可以帮助各位快速学习

    WEKA入门教程(转载)

    WEKA作为一个公开的数据挖掘工作平台,集合了大量能承担数据挖掘任务的机器学习算法,包括对数据进行预处理,分类,回归、聚类、关联规则以及在新的交互式界面上的可视化。

    WEKA中文教程

    WEKA中文教程WEKA中文教程WEKA中文教程WEKA中文教程WEKA中文教程WEKA中文教程

    weka源码学习

    Weka开发[17]——关联规则之Apriori 66 Weka开发[18]——寻找K个邻居 67 Weka开发[19]——NaiveBayes源代码分析 69 Weka开发[20]——IB1源代码分析 74 Weka开发[21]——IBk(KNN)源代码分析 77 Weka开发...

    WEKA的源代码分析

    对Weka从最基本的如何将weka导入eclipse开始,一步一步教你进入WEKA的天堂。

    weka_doc(weka文档)

    weka_doc(weka文档)。。一个做数据分析的Java系统。开源。。

    数据挖掘工具 Weka3.7

    同时weka也是新西兰的一种鸟名,而WEKA的主要开发者来自新西兰。 WEKA作为一个公开的数据挖掘工作平台,集合了大量能承担数据挖掘任务的机器学习算法,包括对数据进行预处理,分类,回归、聚类、关联规则以及在新...

    weka工具源码weka-src

    weka工具的源代码:weka-src.jar

    Weka 中文版 v0.3 发布 基于weka 3.7.12 x64

    在第2版weka中文版的 基础上制作了第3版,暂定版本v0.3。将 guichooser 汉化完成。考虑到大家还是习惯使用 guichooser 作为默认启动界面,将 RunWeka.ini 中的设置恢复默认。但是为了支持中文,其中的编码选项从 cp...

    weka for mac 3.8.2

    Weka for mac 3.8.2 Weka 3: Data Mining Software in Java

    weka数据挖掘软件相关文档

    weka资料\1 有没有weka相关的qq群.doc ........\assignment1.pdf ........\BayesianNetClassifiers.pdf ........\ExperimenterTutorial-3.5.3.pdf ........\ExperimenterTutorial.pdf ........\ExplorerGuide-...

    weka入门教材.pdf

    weka入门教材 weka入门总结 pdf文件

    福建师范大学精品大数据导论课程系列 (7.5.1)--6.5 《Weka软件简》课件PPT.pdf

    福建师范大学精品大数据导论课程系列 (7.5.1)--6.5 《Weka软件简》课件PPT.pdf 福建师范大学精品大数据导论课程系列 (8.1.1)--7.1.1 《数据可视化的概念》PPT.pdf 福建师范大学精品大数据导论课程系列 (8.2.1)--...

    Java实现对Weka算法的应用案例

    Java实现对Weka算法的应用案例。Java实现对Weka算法的应用案例。Java实现对Weka算法的应用案例。

    weka 的帮助文档

    weka 是一种数据挖掘软件这是他的帮助文档

    weka.jar和weka.zip源码 API

    包括weka jar包,weka源码,及其API

    weka explorer用户指南中文

    weka explorer 数据挖掘 算法 weka explorer 数据挖掘 算法 weka explorer 数据挖掘 算法

    Auto-WEKA 2.0

    Many different machine learning algorithms exist that can easily be used off the shelf, many of these methods are implemented in the open source WEKA package. However, each of these algorithms have ...

Global site tag (gtag.js) - Google Analytics