博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Weka 入门3
阅读量:5142 次
发布时间:2019-06-13

本文共 2221 字,大约阅读时间需要 7 分钟。

这次我们介绍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();
}
}

}

转载于:https://www.cnblogs.com/GuoJiaSheng/p/3833143.html

你可能感兴趣的文章
选择数组排序
查看>>
Step one : 熟悉HTML
查看>>
MVC模式(三层架构模式)
查看>>
XML解析【介绍、DOM、SAX详细说明、jaxp、dom4j、XPATH】
查看>>
day04_02 知识回顾、赋值运算符
查看>>
jQuery.load()事件使用方法详解
查看>>
jmeter学习笔记(三)
查看>>
一个Tahoma字体bug引发的思考—关于样式bug的分析流程
查看>>
机器学习三种算法基础介绍
查看>>
js内置对象
查看>>
wpf datagrid performance
查看>>
总结Content Provider的使用
查看>>
hdu-5112-A Curious Matt
查看>>
SCII码表 键盘常用ASCII码
查看>>
Asp.Net Core 自定义设置Http缓存处理
查看>>
深入浅出SharePoint—使用回收站
查看>>
li设置多选和取消选择的样式、输入数据类型判断
查看>>
Hive数据仓库与数据库的异同
查看>>
《诗词大闯关》问卷调查心得与体会
查看>>
JSON.stringify语法
查看>>