weka[3] - J48(二)

本文深入分析了Weka中J48决策树的剪枝过程,主要探讨了PruneableClassifierTree类的buildClassify、prune和buildTree方法。通过比较节点错误率与叶节点错误率来决定是否剪枝,同时提到了C45PruneableClassifierTree的剪枝策略差异,该策略基于训练数据估算误差并考虑置信度。
摘要由CSDN通过智能技术生成

J48(一)中,主要分析了分裂的策略:二叉和多叉

这一节,主要看看源码中,关于剪枝的部分。主要看PruneableClassifierTree。

buildClassify:

 public void buildClassifier(Instances data) 
       throws Exception {

    // can classifier tree handle the data?
    getCapabilities().testWithFail(data);

    // remove instances with missing class
    data = new Instances(data);
    data.deleteWithMissingClass();
    
   Random random = new Random(m_seed);
   //这个看的不是太懂啊!!感觉就是随机化一下
   data.stratify(numSets);
   //trainCV:表示分成numSets后,返回前numSets-1个,然后样本随机排序
   //testCV: 表示分成numSets后,返回第numSets-1个
   buildTree(data.trainCV(numSets, numSets - 1, random),
	     data.testCV(numSets, numSets - 1), !m_cleanup);
   if (pruneTheTree) {
     prune();
   }
   if (m_cleanup) {
     cleanup(new Instances(data, 0));
   }
  }
这里主要就是buildTree,这个函数在classifierTree中。(PruneableClassifierTree继承自ClassifierTree)

还有一个是prune(),待会会分析,就是如何剪枝。

clearnup就是节省内存,把不需要的删掉。这里只是删掉数据的信息。

先看prune,再看buildTree。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值