Weka中对J48算法的修改

时间:2014-11-24 19:24:55

标签: weka

我想以这种方式修改Weka的J48算法:

我想更改J48算法以划分类似于RandomForest算法的数据(负责查找节点中最佳拆分的代码)。

我该怎么办?我知道我必须为RandomForest中的代码更改C45ModelSelection代码的一部分:

C45ModelSelection.java

... 

  // Find "best" attribute to split on.
  minResult = 0;
  for (i=0;i<data.numAttributes();i++){
if ((i != (data).classIndex()) &&
    (currentModel[i].checkModel()))

  // Use 1E-3 here to get a closer approximation to the original
  // implementation.
  if ((currentModel[i].infoGain() >= (averageInfoGain-1E-3)) &&
      Utils.gr(currentModel[i].gainRatio(),minResult)){ 
    bestModel = currentModel[i];
    minResult = currentModel[i].gainRatio();
  } 
  }

...

1 个答案:

答案 0 :(得分:0)

您希望使用RandomForest拆分代码替换拆分代码。此代码似乎存在于RandomTree.java

中的RandomTree.buildTree函数中

分割代码与J48代码有些不同,因此您可能需要考虑除了分割代码之外还需要哪些其他更改才能使功能正常工作,但这对于实现您的目标来说是一个很好的起点正在追求。

希望这有帮助!