表达式的类型必须是数组类型,但它解析为 Instances

问题描述

我正在尝试使用 weka 构建分类器,因此我的目标是遍历我的数据并在每个实例上调用 classifyInstances。然后将预测的类值与实际的类值进行比较。计算正确预测的次数,并打印出分类器对测试数据的准确率。

public class testMachine{
public static void main(String[] args) throws Exception {
    String arff = "C:/Users/Emil/Downloads/Week 1/Arsenal_TRAIN1.arff";
    Instances data = DatasetLoading.loadData(arff);
data.setClassIndex(data.numAttributes()-1);

NaiveBayes classifier = null;
classifier.buildClassifier(data);

double[] s = new double[0];

for(int i=0; i<data.numAttributes();i++) {
classifier.classifyInstance(data[i]);//error is here
    
}
}

虽然我收到以下错误,并希望获得有关如何从这里继续进行的一些帮助:

表达式的类型必须是数组类型但解析为Instances

解决方法

Instances 是一个集合类,不是数组,不能使用方括号获取元素。

替换

classifier.classifyInstance(data[i]);

classifier.classifyInstance(data.get(i));