我正在尝试更改J48分类器的选项,但这在结果树中没有什么不同。
我的代码:
J48 cls = new J48();
Instances data = new Instances(new BufferedReader(new FileReader("someArffFile")));
data.setClassIndex(data.numAttributes() - 1);
//was trying to use -M 1 and -M 5, but no difference
String[] options = new String[1];
options[0] = "-C 1.0 –M 1";
cls.setOptions(options);
cls.buildClassifier(data);
//displaying J48 tree
TreeVisualizer tv = new TreeVisualizer(null,cls.graph(),new PlaceNode2());在我用这个方法设置值之后,一切都很正常。
cls.setMinNumObj(5);你知道如何用setOptions方法代替setMinNumObj吗?
发布于 2013-03-11 03:00:10
问题在于您如何尝试设置选项。options数组应该类似于main方法中的args数组,每个元素一个字符串:
String[] options = {"-C", "1.0", "–M", "1"};
cls.setOptions(options);否则它就不会起作用。
发布于 2013-07-01 19:50:41
首先,选项应该是数组而不是字符串。因此,您可以尝试如下所示。
String[] options = {"-C", "1.0", "-M", "1"};
cls.setOptions(options);更重要的是,应该仔细注意一个小bug。在你的问题和@Sentry之前的回答中,C之前有一行较短的行,如"-C";但M之前有一行较长的行,如“-M”。
如果你仔细观察,你会发现M前面的符号实际上不是负号,因为它比负号长。当您将较长的行更改为真正的减号时,您可以通过上面的代码获得正确的结果。
祝好运。
发布于 2017-03-18 04:01:39
最好的方法是利用weka.Core.Utils类的splitOptions(String[] options)方法:
String[] options = weka.core.Utils.splitOptions("-C 1.0 –M 1");
cls.setOptions(options); https://stackoverflow.com/questions/14715665
复制相似问题