weka[2] - J48(一)

原本想一次性写完关于J48,无奈整个weka关于J48的一套东西太多太多。

先从split开始分析~J48是参考的C4.5的决策树算法。

这一个部分和ID3有一些的区别,第一:C4.5使用信息增益率来选特征,第二:C4.5可以同时处理连续和离散的属性.(剪枝后面会加)

所以先看看weka的J48中,分裂是如何实现的。

BinC45Split

BuildClassify:

public void buildClassifier(Instances trainInstances)
       throws Exception {

    // Initialize the remaining instance variables.
    m_numSubsets = 0;
    m_splitPoint = Double.MAX_VALUE;
    m_infoGain = 0;
    m_gainRatio = 0;

    // Different treatment for enumerated and numeric
    // attributes.
    if (trainInstances.attribute(m_attIndex).isNominal()){
      handleEnumeratedAttribute(trainInstances);
    }else{
      trainInstances.sort(trainInstances.attribute(m_attIndex));
      handleNumericAttribute(trainInstances);
    }
  }    
m_attIndex就是选择的分裂属性的下标。 下面的if判断该属性值如果是离散(Nominal)的,那么调用handleEnumeratedAttribute,如果是连续的(numeric),那么调用handleNumericAttribute。

handleEnumeratedAttribute:

private void handleEnumeratedAttribute(Instances trainInstances)
       throws Exception {
    
    Distribution newDistribution,secondDistribution;
    int numAttValues; //m_attIndex对应属性的取值个数
    double currIG,currGR;
    Instance instance;
    int i;

    numAttValues = tra
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值