2014-11-24 1 views
1

Я работаю над проектом машинного обучения. Я использовал Кстар, и это дало мне хорошие результаты. Чтобы получить большую точность, я собираюсь использовать Naive Bayes. Когда я пытаюсь сделать что-то вроде этогоКак использовать Naive Bayes of Weka в Java-программе

try { 
     NaiveBayes ks= new NaiveBayes(); 
     String[] options={"-B", "20"}; 
     ks.setOptions(options); 
     for (String s : ks.getOptions()) { 
      System.err.println(s); 
     } 
     classifier=ks; 

Это дает эту ошибку

java.lang.Exception: Illegal options: -B 20 

Когда я попробовал этот

try { 
     NaiveBayes ks= new NaiveBayes(); 
     String[] options={"-K", "20"}; 
     ks.setOptions(options); 
     for (String s : ks.getOptions()) { 
      System.err.println(s); 
     } 
     classifier=ks; 

Это дает следующее сообщение об ошибке

java.lang.Exception: Illegal options: 20 

Так Я пробовал это

try { 
     NaiveBayes ks= new NaiveBayes(); 
     String[] options={"-K"}; 
     ks.setOptions(options); 
     for (String s : ks.getOptions()) { 
      System.err.println(s); 
     } 
     classifier=ks; 

Это сработало. Но точность намного меньше, чем у Кстара. Я думаю, причина в том, что не заданы параметры для полиномиального ядра. Поэтому мне нужно, чтобы установить параметры правильно (чтобы дать значение показателя степени для полинома ядра)

Пожалуйста, помогите мне здесь

ответ

0

Каждый классификатор имеет свой собственный набор параметров. KStar содержит опцию '-B 20' (для Manual Blend), но не является параметром для NaiveBayes. Опция NaiveBayes -K также используется для оценки плотности ядра, но не является параметром для KStar.

Что касается точности модели NaiveBayes, трудно сказать, нужно ли это делать с этими настройками или нет, структура данных или подгонка модели. Надеемся, что эти ответы будут раскрыты вам, когда вы продолжите экспериментировать с этой проблемой.

+0

Спасибо. Я изменил систему на BayesNet. Он имеет лучшую точность: D: D – Akshika47

0

Вы можете сделать поиск сетки для мелодии параметров. Возьмите код в цикле for и выполните итерацию алгоритма через ряд различных значений для значения экспоненты. Это после того, как вы найдете хорошее значение. Еще раз просмотрите сетку с рядом параметров, очень близких к выбранному значению. Таким образом, вы можете найти более точные параметры

+0

Проблема у меня есть, она не принимает никаких чисел в качестве допустимого ввода. Как я показал выше, для этой строки не существует [] options = {"- K", "20"}; но он работает, когда я удаляю «20». Есть ли причина для этого? – Akshika47

+0

k означает использовать или не использовать плотность ядра –

Смежные вопросы