Weka 对实例进行分类

Posted

技术标签:

【中文标题】Weka 对实例进行分类【英文标题】:Weka classify an instance 【发布时间】:2015-02-01 00:41:42 【问题描述】:

我尝试将具有 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】:

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

Create a new weka Instance

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

【讨论】:

感谢您的回答!我用我得到的新异常编辑了最初的帖子 在新实例上调用 setDataset 方法,以 instances 作为参数 @loubas 请不要那样做。一问一答。向您的新问题发布一个新问题。

以上是关于Weka 对实例进行分类的主要内容,如果未能解决你的问题,请参考以下文章

weka中新实例的分类

weka中如何对整个数据集进行分类

Weka中的实例分类

Weka分类:错误+正确<总实例数,怎么来的?

为啥 weka NaiveBayes 类不实现分类实例方法?

使用weka对传感器数据进行分类