0

我有一个训练有素的数据集,有 125 条记录。我将使用 NaiveBayesUpdatable 对新实例进行分类。但是当我运行naiveBayes(在windows下,使用weka 3.4)时,我收到以下错误:

java.lang.ArrayIndexOutOfBoundsException: 126
    at weka.estimators.DiscreteEstimator.getProbability(Unknown Source)
    at weka.classifiers.bayes.NaiveBayes.distributionForInstance(Unknown Source)
    at weka.classifiers.Classifier.classifyInstance(Unknown Source)
    at Classifier.NaiveBayes.classifyInstance(NaiveBayes.java:190)
    at Classifier.NaiveBayes.classifyWebPage(NaiveBayes.java:106)

当我运行 J48 分类器时,它运行没有问题。

感谢您的任何帮助\想法。

4

2 回答 2

0

我想我找到了解决方案。我将记录添加到数据集并再次构建分类器。然后我可以毫无问题地对其进行分类。但我不知道为什么 j48 不需要在它的数据集中记录。

于 2011-08-28T10:26:00.363 回答
0

你是在classifyInstance() 之后调用updateClassifier() 吗?只有当您这样做时,NaiveBayes 才会更新。J48 不是可更新的分类器,所以自然每次添加实例时都必须重新构建它。在性能方面,它并没有太大的区别,因为 J48 是一种非常快速的学习算法。

无论如何,我建议查看实现 UpdateableClassifier 的其他类(在 Eclipse 中使用 F4 来获取继承层次结构),并将您的结果与它们进行比较。NaiveBayes 适用于非常具体的任务,而 IBk(最近邻)在许多领域都很强大。

于 2011-08-29T07:12:48.243 回答