Weka对一个实例进行分类

时间:2014-12-03 12:36:20

标签: java weka

我尝试将具有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:实例没有分配数据集!! 在最后一行

1 个答案:

答案 0 :(得分:1)

您使用的是哪个版本的weka?我认为你不能实例化Instance,因为它是一个接口。此外,当您使用new Attribute("attr1")创建新属性时,它会将-1作为属性索引。如果您从arff文件获得培训Instances,请在创建新Instance时使用其中的属性。

Create a new weka Instance

http://weka.wikispaces.com/Programmatic+Use