【问题标题】:Weka classify an instanceWeka 对实例进行分类
【发布时间】: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:实例没有分配数据集!! 在最后一行

【问题讨论】:

    标签: java weka


    【解决方案1】:

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

    Create a new weka Instance

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

    【讨论】:

    • 感谢您的回答!我用我得到的新异常编辑了最初的帖子
    • 在新实例上调用 setDataset 方法,以 instances 作为参数
    • @loubas 请不要那样做。一问一答。向您的新问题发布一个新问题。
    猜你喜欢
    • 2012-10-13
    • 2021-07-24
    • 2015-01-21
    • 1970-01-01
    • 2012-02-14
    • 2014-03-02
    • 2012-03-25
    • 2017-01-09
    • 2010-09-30
    相关资源
    最近更新 更多