Java Weka逻辑指数自动边界感知

Java Weka逻辑指数自动边界感知,java,weka,Java,Weka,我似乎不明白为什么在尝试对数据使用逻辑分类器时会出现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(In

我似乎不明白为什么在尝试对数据使用逻辑分类器时会出现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();

我打电话时出错了

theclassifier.classifyInstance(instance);
这是Weka中的一个bug,还是我需要更改我提供给逻辑分类器的内容


更新:使用IBk时也会出现同样的问题,但不是RandomForest或DecisionStump。

我在使用Logistic分类器时也看到了同样的错误。问题是,我对用于训练分类器的数据应用了一个过滤器。当我对我分类的实例应用相同的过滤器时,错误消失了。 在我的例子中,它是一个简单的
weka.filters.unsupervised.attribute.Remove
Filter。我用它从训练数据中删除了一个属性


从高层次的角度来看,不太清楚为什么分类器在训练过程中看到较少的属性后会中断。无论如何-我想确保训练数据与要分类的数据具有完全相同的结构是很重要的。

IndexOutOfBoundsException:Index:11,Size:11
@peeskillet感谢您的回复。我不知道ArrayList是什么意思。正如你所看到的,错误表明它来自未知的来源。同样,我甚至没有编写任何包含ArrayList的代码。错误出现在我文章的最后一行代码中。我也遇到了同样的问题,并一直追踪到这个问题:如果它被初始化为
SparseInstance
,那么它似乎就是Weka的
实例
类。当Weka在特定实例上迭代时,
ArrayList
迭代就会发生。这与您的代码无关,很可能是Weka中的一个bug?就我而言,这解决了问题。
theclassifier.classifyInstance(instance);