【问题标题】:Optimize Random Forest parameters in weka?在 weka 中优化随机森林参数?
【发布时间】:2018-09-08 22:47:47
【问题描述】:

我正在尝试使用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多次是否可行?

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

谢谢

【问题讨论】:

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


    【解决方案1】:

    我认为您所描述的,-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 的关系,并检查曲线是否已经平滑。

    【讨论】:

      猜你喜欢
      • 2013-09-22
      • 2016-09-09
      • 2013-06-18
      • 2018-03-11
      • 2021-11-20
      • 2015-01-08
      • 2019-05-01
      • 2022-01-18
      • 2014-03-23
      相关资源
      最近更新 更多