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();
}
}
}
最新文章
- CSS3新特性应用之字体排印
- html表单提交方式
- jquery easy ui datagrid中遇到的坑爹的問題。。。
- 安装生物信息学软件-MetaPhlAn2
- Mysql 导入数据,推荐Source命令,太快了
- 一元三次方程 (codevs 1038)题解
- 如何写mysql的定时任务
- HDOJ 2131 Probability
- net搭建热插拔式web框架(沙箱的构建)
- loadrunner入门篇-Controller控制器
- GitHub使用(三) - GitHub安装及初步使用
- 实战Performance Monitor监测EnyimMemcached
- python学习第七篇——字典访问键与值
- PAT基础6-3
- vue中富文本编辑框
- 解压.bz2失败
- 谢宝友 LINUX 内核专家-----LINUX内核注释
- iPhone: 在 iPhone app 里使用 UIPopoverController
- Android组件系列----Activity的生命周期
- VirtualBOX启动错误the vm session was closed before any attempt to power it on解决办法
热门文章
- hdu 3572 Task Schedule
- 项目的敏捷开发方法(转自MBAlib)
- chrome浏览器扩展--QQ群查看器(1)
- Android手势监听
- bp神经网络算法
- linux下查看机器的硬件信息:
- http://f.dataguru.cn/forum.php?mod=viewthread&;tid=44212&;fromuid=4771
- apache的 .htaccess文件的常用配置
- delphi xe3的helper语法 good
- Android 开发绕不过的坑:你的 Bitmap 究竟占多大内存?