上一次最后的结果就是一个分类的值,可能让大家大失所望,这一次会给大家一个比较完美的答案,这就是Evaluation类,这次只讲一下最简单的用法,首先初始化一个Evaluation对象,Evaluation类没有无参的构造函数,一般用Instances对象作为构造函数的参数。
如果没有分开训练集和测试集,可以使用Cross Validation方法,Evaluation中crossValidateModel方法的四个参数分别为,第一个是分类器,第二个是在某个数据集上评价的数据集,第三个参数是交叉检验的次数(10是比较常见的),第四个是一个随机数对象。
如果有训练集和测试集,可以使用Evaluation 类中的evaluateModel方法,方法中的参数为:第一个为一个训练过的分类器,第二个参数是在某个数据集上评价的数据集。例中我为了简单用训练集再次做为测试集,希望大家不会糊涂。
提醒大家一下,使用crossValidateModel时,分类器不需要先训练,这其实也应该是常识了。
Evaluation中提供了多种输出方法,大家如果用过weka软件,会发现方法输出结果与软件中某个显示结果的是对应的。例中的三个方法toClassDetailsString,toSummaryString,toMatrixString比较常用。
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提供了丰富的API,使得在代码中使用变得简单。本文主要讲解如何在Java代码中使用Weka的核心组件,包括Instances、Filter、...
Weka开发[3]-Evaluation类 3 Weka开发[4]-特征选择 4 Weka开发[5]-半监督算法 6 Weka开发[0]-导入Weka包 8 半监督算法工具SVMlin使用 12 半监督算法工具SVMlin读取数据代码介绍 14 Weka开发[6]-参数...
4. **预测与评估**:使用`classifyInstance`或`clusterInstance`方法对新数据进行预测,`Evaluation`类则可以对模型性能进行评估。 5. **保存与加载模型**:`ModelSerializer`类允许将训练好的模型保存到文件,`...
例如,`weka.classifiers.Evaluation`类用于评估模型性能,`weka.core.Instances`类用于处理数据集,`weka.classifiers.trees.J48`代表C4.5决策树算法。 5. **插件开发** Weka支持插件开发,开发者可以通过实现`...
7. **结果保存与评估**:Weka 提供了 `Evaluation` 类来进行模型性能的评估,如准确率、召回率、F1 分数等。训练好的模型可以通过 `SerializationHelper.write()` 方法保存到文件,之后可随时加载进行预测。 8. **...
Weka提供了评估类`weka.classifiers.Evaluation`,它用于计算模型的性能指标,如准确率、查准率、查全率、F1分数等。同时,`weka.classifiers.Evaluation`支持交叉验证,如k折交叉验证,这在源码中是通过`weka.core...
在使用Weka之前,需要配置好开发环境。需要安装MyEclipse2013,Weka3.6,libsvm3.18和Jdk1.7。在Win8.1系统上可以正常运行。 二、使用Weka实现分类器 1. 首先,需要将Weka的jar包添加到项目的编译路径中。可以将...
5. 使用`classifyInstance`方法对单个实例进行预测,或使用`Evaluation`类进行整体评估。 6. 可能还会包含将决策树保存到文件或从文件加载的代码。 以上就是关于Weka中的J48决策树及其应用的基本介绍。通过理解这些...
3. **阅读文档**:根据提供的文档“Weka中加入了新算法(聚类).txt”和“weka源码编译步骤.txt”,理解Weka的API和开发流程。这些文档应该包含了如何在Java程序中启动Weka,以及如何将新算法集成到Weka框架下的具体...
`weka.classifiers.Evaluation`类用于评估模型性能,而`weka.experiment`包则支持实验设计和结果分析。同时,`weka.gui.visualize`包包含了各种图表生成工具。 8. **命令行界面和API**:除了图形界面,Weka还提供了...
import weka.classifiers.Evaluation; import weka.classifiers.collective.functions.LLGC; import weka.classifiers.collective.meta.CollectiveBagging; import weka.classifiers.collective.meta.YATSI; import ...
你提到的"weka源代码"包含了这些功能的实现细节,这对于理解算法工作原理、进行二次开发或者优化现有功能具有重要意义。 1. **分类(Classification)**: Weka提供了多种分类算法,如决策树(如ID3, C4.5, J48)、...
接下来,为了在Java代码中使用Weka,你需要导入必要的类和方法。Weka的核心类库提供了一个名为Classifier的接口,用于表示所有的分类器。RBFtree是基于径向基函数的决策树算法,它继承自Classifier接口。因此,你...
WEKA(Waikato Environment for Knowledge Analysis)是新西兰怀卡托大学开发的一个开源数据挖掘软件,它提供了丰富的机器学习算法,包括分类、聚类、关联规则等,适用于科研和教学。 聚类分析是一种无监督学习方法...
import weka.classifiers.Evaluation; import weka.classifiers.bayes.BayesNet; import weka.classifiers.bayes.NaiveBayes; import weka.classifiers.functions.MultilayerPerceptron; import weka.classifiers....
Evaluation 类用于评估模型的性能。它可以计算各种度量,如准确率、召回率、F1分数等,并提供交叉验证的功能,帮助优化模型参数。 特征选择是预处理步骤,通过去除不重要的特征,可以提高模型的效率和准确性。WEKA...
在 MATLAB 开发环境中,Weka 是一个非常有用的工具,它是一个强大的数据挖掘和机器学习库。本示例将详细介绍如何将 Weka 库导入 MATLAB 并利用其支持向量机(SVM)分类功能进行数据分析。以下是具体步骤和相关知识点...
3. **创建SVM模型**:使用Weka的`weka.classifiers.functions.SMO`类来创建SVM模型。SMO(Sequential Minimal Optimization)是优化SVM的一种算法。示例代码如下: ```matlab loader = weka.core.converters....