当我试图对我的数据使用Logistic分类器时,我似乎不明白为什么我要得到一个IndexOutOfBoundsException。
当我运行这个程序的时候我就知道了。
java.lang.IndexOutOfBoundsException: Index: 11, Size: 11
at java.util.ArrayList.rangeCheck(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
at weka.core.Instances.attribute(Instances.java:341)
at weka.filters.unsupervised.attribute.ReplaceMissingValues.convertInstance(ReplaceMissingValues.java:268)
at weka.filters.unsupervised.attribute.ReplaceMissingValues.input(ReplaceMissingValues.java:140)
at weka.classifiers.functions.Logistic.distributionForInstance(Logistic.java:791)
at weka.classifiers.AbstractClassifier.classifyInstance(AbstractClassifier.java:70)
at ThreadThing.run(ThreadThing.java:73)
at java.lang.Thread.run(Unknown Source)当我使用其他分类器(如NaiveBayes )时,与我遇到问题的代码完全相同,但是当我更改这一行时
NaiveBayes theclassifier = new NaiveBayes();至
Logistic theclassifier = new Logistic();我打电话时出错了
theclassifier.classifyInstance(instance);这是Weka中的一个bug,还是需要更改我提供给Logistic分类器的内容?
更新:同样的问题发生在使用IBk时,而不是RandomForest或DecisionStump。
发布于 2014-01-07 15:42:42
在使用Logistic分类器时,我看到了同样的错误。问题是,--我对我用来训练分类器的数据应用了一个过滤器。当我将相同的过滤器应用于我分类的实例时,错误消失了。在我的例子中,它是一个简单的weka.filters.unsupervised.attribute.Remove过滤器。我用它从训练数据中删除了一个属性。
从高层次的角度来看,在训练过程中看到较少的属性后,分类器为什么会断裂,这一点还不清楚。无论如何,我想重要的是要确保培训数据与要分类的数据具有完全相同的结构。
https://stackoverflow.com/questions/20602099
复制相似问题