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 对实例进行分类的主要内容,如果未能解决你的问题,请参考以下文章