2015-03-10 3 views
0

Я реализовал свой собственный классификатор для Weka, который наследует от Classifier и реализует Serializable, а также OptionHandler.Опции в GUI для пользовательского классификатора Weka

На данный момент я смог отлично работать с классификатором Weka, но без параметров. Я знаю, что мне нужно реализовать следующие методы для того, чтобы увидеть варианты в пользовательском интерфейсе:

public void setOptions(String [] options) throws Exception 
public String [] getOptions() 
public Enumeration listOptions() 

Я реализовал getOptions с некоторым фиктивным кодом, и это время прекрасно вызывается UI (я использовал систему. out.println, чтобы зарегистрировать это). И я также реализовал фиктивный код для listOptions, но он никогда не вызывается.

Когда я пытаюсь выбрать параметры моего алгоритма с помощью пользовательского интерфейса, я вижу только опцию «Отладка». У вас есть идеи, как решить эту проблему и увидеть мои параметры в пользовательском интерфейсе?

В основном то, что я хочу сделать, это запустить мой алгоритм из Weka, но используя пользовательские параметры/параметры.

Я прочитал этот документ, но я думаю, что это не очень полезно:

http://weka.wikispaces.com/Writing+your+own+Classifier+(post+3.5.2)

Есть ли у вас какие-либо идеи или пример для решения этой проблемы?

+0

Для вопросов Вейки, лучше спросить в списке Weka, где вы обычно получаете быстрый ответ от главных авторов Weka. –

ответ

0

У меня была та же проблема. Я понял случайно :), что если я использую методы get и set вместо простого доступа к атрибутам, он работает!

Более ясно, для атрибута с именем "порог" в лице "Т" в качестве опции:

Этот код не работает:

public String[] getOptions() { 

    String[] options = new String[3]; 
    int current = 0; 
    options[current++] = "-T"; 
    options[current++] = "" + threshold; 

    while (current < options.length) { 
     options[current++] = ""; 
    } 
    return options; 
} 

И этот код работает:

public String[] getOptions() { 

    String[] options = new String[3]; 
    int current = 0; 
    options[current++] = "-T"; 
    options[current++] = "" + getThreshold(); 

    while (current < options.length) { 
     options[current++] = ""; 
    } 
    return options; 
} 

То же самое для метода setOptions (String []).

Вам нужно всего лишь использовать аксессуар.

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