优化weka中的随机森林参数?

时间:2018-03-29 21:18:29

标签: java machine-learning parameters weka random-forest

我正在尝试使用weka优化随机森林参数,java类如下:

package pkg10foldcrossvalidation;

import weka.core.*;
import weka.classifiers.meta.*;
import weka.classifiers.trees.RandomForest;
import java.io.*;
public class RF_Optimizer {



     public static void main(String[] args) throws Exception {
      // load data
      BufferedReader reader = new BufferedReader(new FileReader("C:\\Prediction Results on the testing set\\Dataset.arff"));
      Instances data = new Instances(reader);
      reader.close();
      data.setClassIndex(data.numAttributes() - 1);

      // setup classifier
      CVParameterSelection ps = new CVParameterSelection();
      ps.setClassifier(new RandomForest());
      ps.setNumFolds(10);  // using 10-fold CV
      ps.addCVParameter("C 0.1 0.5 5");

      // build and output best options
      ps.buildClassifier(data);
      System.out.println(Utils.joinOptions(ps.getBestClassifierOptions()));
   }

}

但是我很难理解哪些参数应该取代" C"以及如何确定每个人的范围?并且同时对多个参数多次使用.addCVParameter是否可行?

我试图搜索一些youtube或网站教程,解释如何在java中更改随机林参数,但没有找到。

谢谢

1 个答案:

答案 0 :(得分:0)

我认为你在描述的是,-C是交叉验证参数,而不是RandomForest参数。

您是否只需使用资源管理器GUI,打开glass.arff等示例数据集,然后右键单击窗口顶部的粗体 RandomForest 字符串,然后从上下文菜单中选择"将配置复制到剪贴板",然后将该字符串粘贴到您的java代码中?

现在执行此操作后,我已将此字符串复制到剪贴板:

weka.classifiers.trees.RandomForest -P 100 -I 100 -num-slots 1 -K 0 -M 1.0 -V 0.001 -S 1

这些是Weka的RandomForest学习者的默认参数。这些参数意味着什么,哪些最适合优化,以及用于优化的值范围我真的无法分辨。很可能一个非常重要的参数是numIterations-I参数。可能会将它从100,200,......变为1000并绘制numIterations与Accuracy的关系,并检查曲线是否已经平滑。