文档章节

Weka开发[3]-Evaluation类

pior
 pior
发布于 2015/10/17 22:26
字数 494
阅读 223
收藏 1
点赞 0
评论 0

      上一次最后的结果就是一个分类的值,可能让大家大失所望,这一次会给大家一个比较完美的答案,这就是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
济南
高级程序员
Weka manual 3.6翻译: 16.6 分类

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

Honghe ⋅ 2012/11/28 ⋅ 1

Weka manual 3.6翻译: 16.1 选项处理

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

Honghe ⋅ 2012/11/24 ⋅ 0

RIpple-DOwn Rule算法和weka中Rider使用--数据挖掘学习和weka使用(五)

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

长平狐 ⋅ 2013/11/25 ⋅ 0

Weka开发[14]-AdaBoost源代码介绍

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

pior ⋅ 2015/10/20 ⋅ 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

Weka manual 3.6翻译: 1.1 简介

第一章 Weka命令行入门 1.1简介 在最初的实验,Weka所包含的图形用户界面是相当足够,若深入使用则建议使用命令行界面,因为它提供了一些功能(这些功能在图形用户界面下不可用) - 并使用少...

Honghe ⋅ 2012/11/24 ⋅ 0

Weka开发[4]-特征选择

特征选择,我对这一部分也不熟,大概讲一下,用AttributeSelection进行特征选择,它需要设置3个方面,第一:对属性评价的类(自己到Weka软件里看一下,英文Attribute Evaluator),第二:搜索...

pior ⋅ 2015/10/17 ⋅ 0

Weka 开发[1]-Instances类

言归正传,开始介绍Weka,先google一下,把Weka软件下载下来,在Weka的目录中有一个weka.jar的包。 把包添加到工程中后,就可以调用weka中的函数了。 再介绍一点weka的基本知识,在weka的目录...

pior ⋅ 2015/10/17 ⋅ 0

从零开始学习weka数据挖掘

作为一个免费、公开、开源的数据挖掘工作平台,Weka集合了大量能承担数据挖掘任务的机器学习算法,包括预处理、分类、回归、聚类、关联规则以及在新的交互式界面上的可视化操作等;目前,Wek...

huangbo929 ⋅ 2017/07/28 ⋅ 0

Weka开发[6]-参数设置

这一次介绍的非常简单,会用传命令行参数的人就不用浪费时间看这一篇了,这一篇介绍weka中一些类参数传递的问题。 首先要传递参数当然要知道参数有哪些,有什么作用,要知道这些,建议用Wek...

pior ⋅ 2015/10/17 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Cube、Cuboid 和 Cube Segment

1.Cube (或Data Cube),即数据立方体,是一种常用于数据分析与索引的技术;它可以对原始数据建立多维度索引。通过 Cube 对数据进行分析,可以大大加快数据的查询效率 2.Cuboid 在 Kylin 中特...

无精疯 ⋅ 39分钟前 ⋅ 0

github太慢

1:用浏览器访问 IPAddress.com or http://tool.chinaz.com 使用 IP Lookup 工具获得github.com和github.global.ssl.fastly.net域名的ip地址 2:/etc/hosts文件中添加如下格式(IP最好自己查一...

whoisliang ⋅ 41分钟前 ⋅ 0

非阻塞同步之 CAS

为解决线程安全问题,互斥同步相当于以时间换空间。多线程情况下,只有一个线程可以访问同步代码。这种同步也叫阻塞同步(Blocking Synchronization). 这种同步属于一种悲观并发策略。认为只...

长安一梦 ⋅ 52分钟前 ⋅ 0

云计算的选择悖论如何对待?

人们都希望在工作和生活中有所选择。但心理学家的调查研究表明,在多种选项中进行选择并不一定会使人们更快乐,甚至不会产生更好的决策。心理学家Barry Schwartz称之为“选择悖论”。云计算为...

linux-tao ⋅ 54分钟前 ⋅ 0

我的第一篇个人博客

虽然这是个技术博客,但是,我总是想写一些自己的东西,所有就大胆的在这里写下了第一篇非技术博客。技术博客也很久没有更新,个人原因。 以后自己打算在这里写一些非技术博客,可能个人观点...

Mrs_CoCo ⋅ 55分钟前 ⋅ 0

Redis 注册为 Windows 服务

Redis 注册为 Windows 服务 redis 注册为 windows 服务相关命令 注册服务 redis-server.exe –service-install redis.windows.conf 删除服务 redis-server –service-uninstall 启动服务 re......

Os_yxguang ⋅ 55分钟前 ⋅ 0

世界那么大,语言那么多,为什么选择Micropython,它的优势在哪?

最近国内MicroPython风靡程序界,是什么原因导致它这么火呢?是因为他功能强大,遵循Mit协议开源么? 错!因为使用它真的是太舒服了!!! Micropython的由来,这得益于Damien George这位伟大...

bodasisiter ⋅ 59分钟前 ⋅ 0

docker 清理总结

杀死所有正在运行的容器 docker kill $(docker ps -a -q) 删除所有已经停止的容器(docker rm没有加-f参数,运行中的容器不会删掉) docker rm $(docker ps -a -q) 删除所有未打 dangling 标...

vvx1024 ⋅ 今天 ⋅ 0

关于学习

以前学车的时候,教练说了这样的一句话:如果一个人坐在车上一直学,一直学,反而不如大家轮流着学。因为一个人一直学,就没有给自己留空间来反思和改进。而轮流着学的时候大家下来之后思考上...

mskk ⋅ 今天 ⋅ 0

压缩工具之gzip-bzip2-xz

win下常见压缩工具:rar zip 7z linux下常见压缩工具:zip gz bz2 xz tar.gz tar.bz2 tar.xz gzip 不支持目录压缩 gzip 1.txt #压缩。执行后1.txt消失,生成1.txt.gz压缩文件 gzip -d 1.txt....

ZHENG-JY ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部