ошибка с классификатором NaiveBayes при классификации одного экземпляра с предварительно обученной моделью - PullRequest
0 голосов
/ 27 августа 2011

У меня есть обученный набор данных со 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, он работает без проблем.

спасибо за любую помощь \ идеи.

Ответы [ 2 ]

0 голосов
/ 29 августа 2011

Вы вызываете updateClassifier () после classifyInstance ()?NaiveBayes будет обновляться только в том случае, если вы это сделаете.J48 не является обновляемым классификатором, поэтому, естественно, его необходимо перестраивать при каждом добавлении экземпляра.С точки зрения производительности это не имеет большого значения, потому что J48 - чрезвычайно быстрый алгоритм обучения.

В любом случае, я бы посоветовал взглянуть на другие классы, которые реализуют UpdateableClassifier (используйте F4 в Eclipse для получения наследования).иерархия), и сравнивая ваши результаты с ними.NaiveBayes подходит для очень специфических задач, в то время как IBk (ближайший сосед) устойчив во многих доменах.

0 голосов
/ 28 августа 2011

Я думаю, что нашел решение. я добавил запись в набор данных и снова построил классификатор. тогда я мог бы классифицировать это без проблем. но я не знаю, почему j48 не должен иметь запись в своем наборе данных.

...