为什么weka NaiveBayes类不实现classifyInstance方法?

时间:2019-01-09 10:22:04

标签: java weka naivebayes

我在使用Weka中经过训练的朴素贝叶斯模型对实例进行分类时遇到了麻烦。我正在为此使用Java框架。我已经训练了模型,并能够生成实例的分布。我的疑问是,由于NaiveBayes类未实现classifyInstance方法,它只是从AbstractClassifier抽象类中引入了该方法,是否隐含我应该使用自己的规则来实现它?

1 个答案:

答案 0 :(得分:2)

  

我在这里的疑问是,由于NaiveBayes类没有实现classifyInstance方法,它只是将其从AbstractClassifier抽象类中引入,我是否应该使用我自己的规则?

不,你不应该。

AbstractClassifier文档指出:

  

抽象分类器。 Weka中用于数字或名义预测的所有方案   扩展此类。 请注意,分类器必须实现   distributionForInstance()或classifyInstance()

查看source code of AbstractClassifier可以发现classifyInstance呼叫distributionForInstance,反之亦然。因此,如果一个类从AbstractClassifier继承而没有覆盖这两种方法中的至少一种,则将导致无限递归和堆栈溢出。

NaiveBayes确实实现了distributionForInstance,从classifyInstance继承的AbstractClassifier方法将使用它。如果class属性是名义的,它将以最高的概率返回类索引。