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

Why doesn't weka NaiveBayes class implements classifyInstance method?

我在 class使用 Weka 中经过训练的朴素贝叶斯模型验证实例时遇到问题。为此,我正在使用 java 框架。我已经训练了模型并且能够为一个实例生成分布。我的疑问是,由于 NaiveBayes class 没有实现 classifyInstance 方法,它只是从 AbstractClassifier 抽象 class 中提取它,是否暗示我应该用我的方法实现它自己的规则?

My doubt here is, since the NaiveBayes class doesn't implement the classifyInstance method, it just herds it from the AbstractClassifier abstract class, is it implicit that I should implement it with my own rules?

不,你不应该。

AbstractClassifier 文档指出:

Abstract classifier. All schemes for numeric or nominal prediction in Weka extend this class. Note that a classifier MUST either implement distributionForInstance() or classifyInstance().

查看 source code of AbstractClassifier 向我们展示了 classifyInstance 调用了 distributionForInstance,反之亦然。因此,如果 class 继承自 AbstractClassifier 并且没有覆盖这两个方法中的至少一个,这将导致无限递归和堆栈溢出。

NaiveBayes 确实实现了 distributionForInstance 并且继承自 AbstractClassifierclassifyInstance 方法将使用它。如果 class 属性是名义上的,它 returns 具有最高概率的 class 索引。