`

Weka开发[3]-Evaluation类

 
阅读更多

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

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

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

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

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

package com.cizito.weka.study;

import java.util.Random;

import weka.classifiers.Evaluation;
import weka.classifiers.lazy.IB1;
import weka.classifiers.trees.J48;
import weka.core.Instances;
import weka.core.converters.ConverterUtils.DataSource;

/**
 * @author zhangwei
 *
 */
public class EvaluationTest {
	
	private Instances m_instances = null;

	/**
	 * @param args
	 */
	public static void main(String[] args) throws Exception{
		EvaluationTest etest = new EvaluationTest();
	       
        etest.getFileInstances( "D:/ProgramFiles/Weka-3-6/data/contact-lenses.arff");
        //etest.crossValidation();
        //System.out.println( "***********************************\n\n" );
        etest.evaluateTestData();
	}
	
	
	   
    public void getFileInstances( String fileName ) throws Exception
    {
        DataSource frData = new DataSource( fileName );
        m_instances = frData.getDataSet();
        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();
        IB1 classifier = new IB1();
        //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());
    }
  

}

 

分享到:
评论

相关推荐

    Weka开发----在代码中使用Weka.pdf

    在开发过程中,集成Weka这一强大的机器学习工具可以帮助我们快速构建和评估模型。Weka提供了丰富的API,使得在代码中使用变得简单。本文主要讲解如何在Java代码中使用Weka的核心组件,包括Instances、Filter、...

    weka源码学习

    Weka开发[3]-Evaluation类 3 Weka开发[4]-特征选择 4 Weka开发[5]-半监督算法 6 Weka开发[0]-导入Weka包 8 半监督算法工具SVMlin使用 12 半监督算法工具SVMlin读取数据代码介绍 14 Weka开发[6]-参数...

    weka-3-6-10.zip

    4. **预测与评估**:使用`classifyInstance`或`clusterInstance`方法对新数据进行预测,`Evaluation`类则可以对模型性能进行评估。 5. **保存与加载模型**:`ModelSerializer`类允许将训练好的模型保存到文件,`...

    weka二次开发代码分析

    例如,`weka.classifiers.Evaluation`类用于评估模型性能,`weka.core.Instances`类用于处理数据集,`weka.classifiers.trees.J48`代表C4.5决策树算法。 5. **插件开发** Weka支持插件开发,开发者可以通过实现`...

    weka的JAVA程序

    7. **结果保存与评估**:Weka 提供了 `Evaluation` 类来进行模型性能的评估,如准确率、召回率、F1 分数等。训练好的模型可以通过 `SerializationHelper.write()` 方法保存到文件,之后可随时加载进行预测。 8. **...

    weka源代码分析

    Weka提供了评估类`weka.classifiers.Evaluation`,它用于计算模型的性能指标,如准确率、查准率、查全率、F1分数等。同时,`weka.classifiers.Evaluation`支持交叉验证,如k折交叉验证,这在源码中是通过`weka.core...

    Weka各类分类器的使用(Java)

    在使用Weka之前,需要配置好开发环境。需要安装MyEclipse2013,Weka3.6,libsvm3.18和Jdk1.7。在Win8.1系统上可以正常运行。 二、使用Weka实现分类器 1. 首先,需要将Weka的jar包添加到项目的编译路径中。可以将...

    weka J48 demo代码

    5. 使用`classifyInstance`方法对单个实例进行预测,或使用`Evaluation`类进行整体评估。 6. 可能还会包含将决策树保存到文件或从文件加载的代码。 以上就是关于Weka中的J48决策树及其应用的基本介绍。通过理解这些...

    weka源码添加方法

    3. **阅读文档**:根据提供的文档“Weka中加入了新算法(聚类).txt”和“weka源码编译步骤.txt”,理解Weka的API和开发流程。这些文档应该包含了如何在Java程序中启动Weka,以及如何将新算法集成到Weka框架下的具体...

    weka 3.6源代码包

    `weka.classifiers.Evaluation`类用于评估模型性能,而`weka.experiment`包则支持实验设计和结果分析。同时,`weka.gui.visualize`包包含了各种图表生成工具。 8. **命令行界面和API**:除了图形界面,Weka还提供了...

    Weka[5] 半监督算法

    import weka.classifiers.Evaluation; import weka.classifiers.collective.functions.LLGC; import weka.classifiers.collective.meta.CollectiveBagging; import weka.classifiers.collective.meta.YATSI; import ...

    weka源代码

    你提到的"weka源代码"包含了这些功能的实现细节,这对于理解算法工作原理、进行二次开发或者优化现有功能具有重要意义。 1. **分类(Classification)**: Weka提供了多种分类算法,如决策树(如ID3, C4.5, J48)、...

    使用Eclipse在Java中调用weka

    接下来,为了在Java代码中使用Weka,你需要导入必要的类和方法。Weka的核心类库提供了一个名为Classifier的接口,用于表示所有的分类器。RBFtree是基于径向基函数的决策树算法,它继承自Classifier接口。因此,你...

    WEKA聚类分析实例代码

    WEKA(Waikato Environment for Knowledge Analysis)是新西兰怀卡托大学开发的一个开源数据挖掘软件,它提供了丰富的机器学习算法,包括分类、聚类、关联规则等,适用于科研和教学。 聚类分析是一种无监督学习方法...

    Myeclipse下weka环境的搭建

    import weka.classifiers.Evaluation; import weka.classifiers.bayes.BayesNet; import weka.classifiers.bayes.NaiveBayes; import weka.classifiers.functions.MultilayerPerceptron; import weka.classifiers....

    WEKA源码,包括SVM、KNN等源代码

    Evaluation 类用于评估模型的性能。它可以计算各种度量,如准确率、召回率、F1分数等,并提供交叉验证的功能,帮助优化模型参数。 特征选择是预处理步骤,通过去除不重要的特征,可以提高模型的效率和准确性。WEKA...

    在 Matlab 中使用 Weka 的 SVM 分类函数:演示将 Weka 的 ML 库导入 Matlab,并使用分类。-matlab开发

    在 MATLAB 开发环境中,Weka 是一个非常有用的工具,它是一个强大的数据挖掘和机器学习库。本示例将详细介绍如何将 Weka 库导入 MATLAB 并利用其支持向量机(SVM)分类功能进行数据分析。以下是具体步骤和相关知识点...

    matlab开发-在TLAB中使用Ekassvm分类功能

    3. **创建SVM模型**:使用Weka的`weka.classifiers.functions.SMO`类来创建SVM模型。SMO(Sequential Minimal Optimization)是优化SVM的一种算法。示例代码如下: ```matlab loader = weka.core.converters....

Global site tag (gtag.js) - Google Analytics