我为Weka实现了自己的自定义分类器,它继承自Classifier并实现Serializable和OptionHandler。
目前我已经能够完美地从Weka UI运行分类器,但没有参数。我知道我需要实现以下方法才能看到UI中的选项:
public void setOptions(String [] options) throws Exception
public String [] getOptions()
public Enumeration listOptions()
我已经使用一些虚拟代码实现了getOptions,并且它被UI完美调用(我使用System.out.println来记录它)。我还为listOptions实现了一个虚拟代码,但它永远不会被调用。
当我尝试通过UI为我的算法选择选项时,我只看到“调试”选项。您是否有任何想法如何解决此问题并通过UI查看我的选项?
基本上我想要做的是从Weka运行我的算法,但使用自定义选项/参数。
我已阅读此文档,但我认为它不是很有用:
http://weka.wikispaces.com/Writing+your+own+Classifier+(post+3.5.2)
你有什么想法或例子来解决这个问题吗?
答案 0 :(得分:0)
我遇到了同样的问题。 我偶然意识到:)如果我使用get和set方法而不只是访问它的工作属性!
更清楚的是,对于名为“threshold”的属性,由“T”表示为选项:
此代码不起作用:
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 [] options)方法相同。
您只需要使用访问者。