我在Jython中使用Weka类,问题是如何定义Adaboost的分类器。
我用:
将weka.classifiers.meta.AdaBoostM1导入为AdaBoost
但我不知道如何调整其分类器,例如设置J48。
答案 0 :(得分:1)
这个jython代码在3.7.10中为我工作
algo = AdaBoostM1()
option_string = " -P 100 -S 1 -I " + str(num) + " -W weka.classifiers.trees.J48"
options = splitOptions(option_string)
algo.setOptions(options)
algo.buildClassifier(data)
你也可以这样做:
algo = AdaBoostM1()
options = [];
options.append("-P");
options.append("100");
options.append("-S");
options.append("1");
options.append("-I");
options.append(str(num));
options.append("-W");
options.append("weka.classifiers.trees.J48");
algo.buildClassifier(data)
答案 1 :(得分:0)
几乎weka中的每个分类器都可以在命令行中使用。此命令行用法通过选项处理程序接口提供给Java用户。见Use WEKA in your Java code。
Option handling
Weka schemes that implement the weka.core.OptionHandler interface,
such as classifiers, clusterers, and filters, offer the following methods
for setting and retrieving options:
根据这个,你将使用以下java代码:
import weka.classifiers.meta.AdaBoostM1;
AdaBoostM1 classifier = new AdaBoostM1();
Instances data = readArffFile();
String optionString = " -P 100 -S 1 -I 10 -W weka.classifiers.trees.DecisionStump";
classifier.setOptions(weka.core.Utils.splitOptions(optionString);
classifier.buildClassifier(data);
我担心,您需要将此java代码更改为jython。我不认为,这会很难。