如何使用我构建的模型在 Weka 中测试单个实例?
How do I test a single Instance in Weka using a model that I have built?
我正在尝试在 Java 中使用 weka API 测试单个实例。我的目标是预测 test.arff 文件中单个实例的 class 值。
我的 java 代码如下所示,
import weka.core.Instances;
import weka.classifiers.Evaluation;
import weka.classifiers.trees.J48;
import weka.classifiers.*;
import java.io.*;
import java.util.Random;
public class WekaNew {
public static void main(String[] args) throws Exception{
// TODO Auto-generated method stub
System.out.println("Weka Tool");
BufferedReader breader = new BufferedReader(new FileReader("train.arff"));
Instances train = new Instances(breader);
train.setClassIndex(train.numAttributes() -1);
breader.close(); //loading training data
BufferedReader treader = new BufferedReader(new FileReader("test.arff"));
Instances test = new Instances(treader);
test.setClassIndex(test.numAttributes() -1);
treader.close(); //loading testing data
Classifier cls = new J48();
cls.buildClassifier(train);
Evaluation eval = new Evaluation(train);
eval.evaluateModelOnce(cls,test);
System.out.println(eval.toMatrixString("\nConfusion Matrix\n========\n"));
}
}
train.arff 有 7(属性)+1(class 标签)以及 132 个数据实例。
test.arff 有 7 个属性 + 1 个 class 标签=?有一个实例。
我想预测 test.arff 中单个实例的 class 标签。
我如何着手预测标签以及需要对数据集和代码进行哪些更改?
我尝试通过 "javac -cp "/class 路径“WekaNew.java”编译 java 文件
, 它给出了以下错误 "No suitable method found for evaluateModelOnce()"
一般来说,Weka API 和 Java 的新手。如果问题重复出现,请提前致歉。
我还在 Whosebug 中提到了以下问题,
1. Test single instance in weka which has no class label
2. Test a single instance in Weka
但它似乎并没有解决我的问题。
这是 evaluateModelOnce 的签名:
public double evaluateModelOnce(Classifier classifier,
Instance instance)
然而,你传入的是"Instances"而不是"Instance",它们是不同的类。因此,这是一个语法错误。
要评估单个 Weka 实例,您可能想尝试
eval.evaluateModelOnce(cls,instances.firstInstance());
我正在尝试在 Java 中使用 weka API 测试单个实例。我的目标是预测 test.arff 文件中单个实例的 class 值。
我的 java 代码如下所示,
import weka.core.Instances;
import weka.classifiers.Evaluation;
import weka.classifiers.trees.J48;
import weka.classifiers.*;
import java.io.*;
import java.util.Random;
public class WekaNew {
public static void main(String[] args) throws Exception{
// TODO Auto-generated method stub
System.out.println("Weka Tool");
BufferedReader breader = new BufferedReader(new FileReader("train.arff"));
Instances train = new Instances(breader);
train.setClassIndex(train.numAttributes() -1);
breader.close(); //loading training data
BufferedReader treader = new BufferedReader(new FileReader("test.arff"));
Instances test = new Instances(treader);
test.setClassIndex(test.numAttributes() -1);
treader.close(); //loading testing data
Classifier cls = new J48();
cls.buildClassifier(train);
Evaluation eval = new Evaluation(train);
eval.evaluateModelOnce(cls,test);
System.out.println(eval.toMatrixString("\nConfusion Matrix\n========\n"));
}
}
train.arff 有 7(属性)+1(class 标签)以及 132 个数据实例。 test.arff 有 7 个属性 + 1 个 class 标签=?有一个实例。
我想预测 test.arff 中单个实例的 class 标签。 我如何着手预测标签以及需要对数据集和代码进行哪些更改?
我尝试通过 "javac -cp "/class 路径“WekaNew.java”编译 java 文件 , 它给出了以下错误 "No suitable method found for evaluateModelOnce()"
一般来说,Weka API 和 Java 的新手。如果问题重复出现,请提前致歉。
我还在 Whosebug 中提到了以下问题, 1. Test single instance in weka which has no class label 2. Test a single instance in Weka 但它似乎并没有解决我的问题。
这是 evaluateModelOnce 的签名:
public double evaluateModelOnce(Classifier classifier,
Instance instance)
然而,你传入的是"Instances"而不是"Instance",它们是不同的类。因此,这是一个语法错误。
要评估单个 Weka 实例,您可能想尝试
eval.evaluateModelOnce(cls,instances.firstInstance());