【问题标题】:error with NaiveBayes classifier when classify one instance with pretrained model使用预训练模型对一个实例进行分类时,NaiveBayes 分类器出错
【发布时间】:2011-11-04 23:50:11
【问题描述】:

我有一个训练有素的数据集,包含 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 分类器时,它运行没有问题。

感谢任何帮助\想法。

【问题讨论】:

    标签: java classification weka bayesian


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2012-02-14
        • 1970-01-01
        • 2021-05-13
        • 2018-09-25
        • 2020-10-10
        • 2018-08-03
        • 2016-09-25
        • 2017-07-18
        • 1970-01-01
        相关资源
        最近更新 更多