我尝试将具有arff文件的实例分类为训练数据。 问题是,当我尝试创建新实例时,我得到了异常:
java.lang.ArrayIndexOutOfBoundsException:-1
以下是创建新实例的简单代码:
Instance instance = new Instance(2);
instance.setValue(new Attribute("attr1"), 1);
instance.setValue(new Attribute("attr2"), 1);
当我调用setValue方法时会发生异常。
请帮忙吗?
在Marcin的回复后更新
我使用weka 3.6.11。 如果我使用训练数据中的属性,当我尝试对新实例进行分类时,会出现另一个异常。例如,如果我使用
Instance newInstance = new Instance(instances.numAttributes());
for (int i = 0; i < instances.numAttributes(); i++) {
Attribute attr = instances.attribute(i);
newInstance.setValue(attr, 0);
}
classifier.classifyInstance(newInstance));
我得到了例外 java.lang.IllegalArgumentException:实例没有分配数据集!! 在最后一行
答案 0 :(得分:1)
您使用的是哪个版本的weka?我认为你不能实例化Instance
,因为它是一个接口。此外,当您使用new Attribute("attr1")
创建新属性时,它会将-1
作为属性索引。如果您从arff文件获得培训Instances
,请在创建新Instance
时使用其中的属性。