Почему weka класс NaiveBayes не реализует метод classifyInstance? - PullRequest
0 голосов
/ 09 января 2019

У меня проблемы с классификацией экземпляра с обученной наивной байесовской моделью в Weka. Я использую Java-фреймворк для этого. Я уже обучил модель и смог создать дистрибутив для экземпляра. Мое сомнение здесь в том, что, поскольку класс NaiveBayes не реализует метод classifyInstance, он просто выводит его из абстрактного класса AbstractClassifier, подразумевается ли, что я должен реализовать его с моими собственными правилами?

1 Ответ

0 голосов
/ 09 января 2019

Мое сомнение здесь в том, что, поскольку класс NaiveBayes не реализует метод classifyInstance, он просто выводит его из абстрактного класса AbstractClassifier, подразумевается ли, что я должен реализовать его по своим собственным правилам?

Нет, не стоит.

Документация AbstractClassifier гласит:

Абстрактный классификатор. Все схемы для числового или номинального прогнозирования в Weka расширить этот класс. Обратите внимание, что классификатор ДОЛЖЕН либо реализовать distributionForInstance () или classifyInstance () .

Глядя на исходный код AbstractClassifier , мы видим, что classifyInstance вызывает distributionForInstance и наоборот. Поэтому, если класс наследует от AbstractClassifier и не переопределяет хотя бы один из этих двух методов, это приведет к бесконечной рекурсии и переполнению стека.

NaiveBayes реализует distributionForInstance, и метод classifyInstance, унаследованный от AbstractClassifier, будет использовать его. Возвращает индекс класса с наибольшей вероятностью, если атрибут класса является номинальным.

...