首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么WEKA评估课需要训练实例?

为什么WEKA评估课需要训练实例?
EN

Stack Overflow用户
提问于 2015-09-16 09:52:27
回答 2查看 656关注 0票数 8

我不明白为什么Weka评估类构造函数需要训练实例才能工作。

有人能解释我吗?

理论上,评估只依赖于经过训练的模型(下一段代码中的)和测试数据(TestingSet)。

谢谢!

这就是一个例子:

代码语言:javascript
复制
// TrainingSet is the training Instances

// TestingSet is the testingInstances

// Build de classifier

Classifier cls = (Classifier) new NaiveBayes();

cls.buildClassifier(TrainingSet);

// Test the model

Evaluation eTest = new Evaluation(**TrainingSet**); 

eTest.evaluateModel(cls, TestingSet);
EN

回答 2

Stack Overflow用户

发布于 2015-09-16 10:17:52

来自关于Weka的UMass波士顿计算机科学文档

评估公共评估(实例数据)抛出java.lang.Exception 初始化计算的所有计数器。 参数: 训练实例的数据集,以获取一些头信息和先前的类分布信息。 抛出: java.lang.Exception -如果未定义类

您可以查看构造函数源这里

票数 0
EN

Stack Overflow用户

发布于 2015-09-17 09:55:46

对于我自己的问题,我有一个肯定的解决办法。我正在寻找使用一个分类器模型来评估测试文件的方法,这个分类器模型之前是经过训练并保存在一个文件中的。评估类不适合我,因为它需要构造函数中的列车数据。但它可以用于分类器的classifyInstance方法。

下面的代码就是一个例子:

代码语言:javascript
复制
public static void LoadAndTest(String filename_test, String filename_model) throws Exception {
   BufferedReader datafile_test = readDataFile(filename_test);
   Instances      data_test     = new Instances(datafile_test);
   data_test.setClassIndex(data_test.numAttributes() - 1);

   Classifier cls = (Classifier) weka.core.SerializationHelper.read(filename_model);
   int act = 0;
   for (int i = 0; i < data_test.numInstances(); i++) {
     double pred = cls.classifyInstance(data_test.instance(i));
     double real = data_test.instance(i).classValue();
     if (pred==real) {
       act = act + 1;
     }
   }  
   double pct = (double) act / (double) data_test.numInstances();
   System.out.println("Accuracy = " + pct);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32605249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档