文档章节

Weka开发[3]-Evaluation类

pior
 pior
发布于 2015/10/17 22:26
字数 494
阅读 225
收藏 1

      上一次最后的结果就是一个分类的值,可能让大家大失所望,这一次会给大家一个比较完美的答案,这就是Evaluation类,这次只讲一下最简单的用法,首先初始化一个Evaluation对象,Evaluation类没有无参的构造函数,一般用Instances对象作为构造函数的参数。

       如果没有分开训练集和测试集,可以使用Cross Validation方法,EvaluationcrossValidateModel方法的四个参数分别为,第一个是分类器,第二个是在某个数据集上评价的数据集,第三个参数是交叉检验的次数(10是比较常见的),第四个是一个随机数对象。

       如果有训练集和测试集,可以使用Evaluation 类中的evaluateModel方法,方法中的参数为:第一个为一个训练过的分类器,第二个参数是在某个数据集上评价的数据集。例中我为了简单用训练集再次做为测试集,希望大家不会糊涂。

       提醒大家一下,使用crossValidateModel时,分类器不需要先训练,这其实也应该是常识了。

       Evaluation中提供了多种输出方法,大家如果用过weka软件,会发现方法输出结果与软件中某个显示结果的是对应的。例中的三个方法toClassDetailsStringtoSummaryStringtoMatrixString比较常用。

package instanceTest;
 
import java.io.FileReader;
import java.util.Random;
 
import weka.classifiers.Evaluation;
import weka.classifiers.trees.J48;
import weka.core.Instances;
 
public class EvaluationTest{
    private Instances m_instances = null;
    
    public void getFileInstances( String fileName ) throws Exception {
        FileReader frData = new FileReader( fileName );
        m_instances = new Instances( frData );
        
        m_instances.setClassIndex( m_instances.numAttributes() - 1 );
    }
    
    public void crossValidation() throws Exception {
        J48 classifier = new J48();
        //NaiveBayes classifier = new NaiveBayes();
        //SMO classifier = new SMO();
        
        Evaluation eval = new Evaluation( m_instances );
        eval.crossValidateModel( classifier, m_instances, 10, new Random(1));
        System.out.println(eval.toClassDetailsString());
        System.out.println(eval.toSummaryString());
        System.out.println(eval.toMatrixString());
    }
    
    public void evaluateTestData() throws Exception {
        J48 classifier = new J48();
        //NaiveBayes classifier = new NaiveBayes();
        //SMO classifier = new SMO();
        
        classifier.buildClassifier( m_instances );
        
        Evaluation eval = new Evaluation( m_instances );
        eval.evaluateModel( classifier, m_instances );
        System.out.println(eval.toClassDetailsString());
        System.out.println(eval.toSummaryString());
        System.out.println(eval.toMatrixString());
    }
    
    public static void main( String[] args ) throws Exception {
        EvaluationTest etest = new EvaluationTest();
        etest.getFileInstances( "F://Program Files//Weka-3-4//data//contact-lenses.arff");
        etest.crossValidation();
        System.out.println( "***********************************\n\n" );
        etest.evaluateTestData();
    }
}


本文转载自:

共有 人打赏支持
pior
粉丝 25
博文 151
码字总数 22496
作品 0
济南
高级程序员
RIpple-DOwn Rule算法和weka中Rider使用--数据挖掘学习和weka使用(五)

RIpple-DOwn Rule算法简介 RIpple-DOwn Rule算法(链波下降规则)是一种专家系统方法论,它是澳大利亚新南威尔士大学的Compton教授于1989年提出。它是一种用于知识表示和获取的方法。从某种意...

长平狐
2013/11/25
240
0
Weka manual 3.6翻译: 16.1 选项处理

16.1 选项处理 配置一个对象,例如一个分类器, 可以通过调用我们想要改变的属性的 get/set 方法来实现,就像搜索者(Explorer)做的。或者,如果类实现了 weka.core.OptionHandler 接口,我...

Honghe
2012/11/24
0
0
Weka manual 3.6翻译: 16.6 分类

若觉排版不好,可点这里。 16.6 分类 在WEKA内,分类和回归算法都被称为“分类”,并都位于 weka.classifiers 包中。本节包括以下主题: • 建立一个分类 -批量和增量学习。 • 评价一个分类...

Honghe
2012/11/28
0
1
Weka开发[14]-AdaBoost源代码介绍

这一次讲的是Ensemble的东西,一位读者希望我讲一下Adaboost的内容,这种Ensemble看起来的确比较吓人,推荐一篇论文:Ensemble Based Systems in Decision Making. 在这里所有理论的东西我就...

pior
2015/10/20
131
0
数据科学和机器学习中使用的最多的20个R语言包

We list out the top 20 popular Machine Learning R packages by analysing the most downloaded R packages from Jan-May 2015. 我们通过分析从2015年1月至5月下载次数最多的R包,列出了前......

wzgl__wh
2016/05/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

linux使用ntfs-3g操作ntfs格式硬盘

Linux内核目前只支持对微软NTFS文件系统的读取。 NTFS-3G 是微软 NTFS 文件系统的一个开源实现,同时支持读和写。NTFS-3G 开发者使用 FUSE 文件系统来辅助开发,同时对可移植性有益。 安装 ...

linuxprobe16
44分钟前
1
0
kubeadm部署kubernetes集群

一、环境要求 这里使用RHEL7.5 master、etcd:192.168.10.101,主机名:master node1:192.168.10.103,主机名:node1 node2:192.168.10.104,主机名:node2 所有机子能基于主机名通信,编辑...

人在艹木中
今天
7
0
Shell特殊符号总结以及cut,sort,wc,uniq,tee,tr,split命令

特殊符号总结一 * 任意个任意字符 ? 任意一个字符 # 注释字符 \ 脱义字符 | 管道符 # #号后的备注被忽略[root@centos01 ~]# ls a.txt # 备注 a.txt[root@centos01 ~]# a=1[root@centos01...

野雪球
今天
2
0
OSChina 周二乱弹 —— 程序员圣衣

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @达尔文:分享Skeeter Davis的单曲《The End of the World》 《The End of the World》- Skeeter Davis 手机党少年们想听歌,请使劲儿戳(这里...

小小编辑
今天
16
0
[ python import module ] 导入模块

import moudle_name ----> import module_name.py ---> import module_name.py文件路径 -----> sys.path (这里进行查找文件) # from app.web import Personimport app.web.Person as Pe......

_______-
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部