• Weka 入门3


    这次我们介绍Evaluation类。在上一次中我们只是单纯的预测了分类值,并没有其他评价数据。这场我们使用Evalution类。首先初始化一个Evaluation对象,Evaluation类没有无参的构造函数,一般用Instances对象作为构造函数的参数。如果我们没有训练数据和测试数据,那么我们可以使用Cross Validation验证方式,即交叉验证。Cross ValidateModel方法的四个参数分别为,第一个是分类器,第二个是在某个数据集上评价的数据集,第三个参数是交叉检验的次数(10是比较常见的),第四个是一个随机数对象。 如果有训练集和测试集,可以使用Evaluation 类中的evaluateModel方法,方法中的参数为:第一个为一个训练过的分类器,第二个参数是在某个数据集上评价的数据集。

    package InstanceTest;
    import weka.core.Instances;
    import weka.classifiers.trees.J48;
    import weka.classifiers.Evaluation;
    import java.io.*;
    import java.util.Random;
    public class InstanceTest {

    /**
    * @param args
    */
    public static Instances data; //训练数据
    public static Instances testData; //测试数据

    //获取数据集
    public Instances GetTestDate(String File,boolean flag) throws Exception
    {
    FileReader reader=new FileReader(File);
    if(!flag)
    {
    testData=new Instances(reader);
    return testData;
    }
    else
    {
    data=new Instances(reader);
    return data;
    }

    }

    //设置预测类别 默认为最后一个
    public void SetClassIndex(Instances ins)
    {
    ins.setClassIndex(ins.numAttributes()-1);
    }
    /*
    public void classify()throws Exception
    {
    J48 classify=new J48();
    classify.buildClassifier(data);
    System.out.println(classify.classifyInstance(data.instance(0)));
    }
    */
    public void CrossValidation()throws Exception
    {
    J48 classify=new J48();
    Evaluation eval=new Evaluation (data);
    eval.crossValidateModel(classify, data, 10, new Random(1));
    System.out.println(eval.toClassDetailsString());
    System.out.println(eval.toSummaryString());
    System.out.println(eval.toMatrixString());
    }

    public void validation()throws Exception
    {
    J48 classify=new J48();
    classify.buildClassifier(data);
    Evaluation eval=new Evaluation(testData);
    eval.evaluateModel(classify, testData);
    System.out.println(eval.toClassDetailsString());
    System.out.println(eval.toSummaryString());
    System.out.println(eval.toMatrixString());
    }


    public static void main(String[] args) {
    try
    {
    InstanceTest test=new InstanceTest();
    test.GetTestDate("C://Program Files//Weka-3-7//data//segment-challenge.arff", true);
    test.GetTestDate("C://Program Files//Weka-3-7//data//segment-test.arff", false);
    test.SetClassIndex(data);
    test.SetClassIndex(testData);
    test.validation();
    }
    catch(Exception e)
    {
    e.printStackTrace();
    }
    }

    }

    从菜鸟走向大神,这是道路。
  • 相关阅读:
    Nodejs学习笔记
    Multiple SSH keys for different github accounts
    深入Node.js的模块机制
    Yoga S5
    Nodejs
    gulp & webpack整合
    git subtree:无缝管理通用子项目
    javascript功能插件大集合,写前端的亲们记得收藏
    Python简单的制作图片验证码
    用CSS3/JS绘制自己想要的按钮
  • 原文地址:https://www.cnblogs.com/GuoJiaSheng/p/3833143.html
Copyright © 2020-2023  润新知