WekaAdaboost源代码分析.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
WekaAdaboost源代码分析

Weka[14] Adaboost 源代码分析 作者:Koala++/屈伟 需要注意的是 AdaBoostM1 继承自 RandomizableIteratedSingleClassifierEnhancer,天哪, 这么长的名字,他们也起的出来。 这个要看一下构造函数: public AdaBoostM1() { m_Classifier = new weka.classifiers.trees.DecisionStump(); } 这里的 m_Classifier 是继承自曾祖父 SingleClassifierEnhancer 的,DecisionStump 就是只 有一个结点的决策树,stump 是树桩的意思,蛮形象的。 public void buildClassifier(Instances data) throws Exception { super.buildClassifier(data); // can classifier handle the data? getCapabilities().testWithFail(data); // remove instances with missing class data = new Instances(data); data.deleteWithMissingClass(); // only class? - build ZeroR model if (data.numAttributes() == 1) { System.err .println(Cannot build model (only class attribute present in data!), + using ZeroR model instead!); m_ZeroR = new weka.classifiers.rules.ZeroR(); m_ZeroR.buildClassifier(data); return; } else { m_ZeroR = null; } m_NumClasses = data.numClasses(); if ((!m_UseResampling) (m_Classifier instanceof WeightedInstancesHandler)) { buildClassifierWithWeights(data); } else { buildClassifierUsingResampling(data); } } 这里 buildClassifier 就是复制 m_NumIterations 个分类器,具体的代码如下: public void buildClassifier(Instances data) throws Exception { if (m_Classifier == null) { throw new Exception(A base classifier has not been specified!); } m_Classifiers = Classifier.makeCopies(m_Classifier, m_NumIterations); } 如果就只有 1 个属性,那么表示只有类别属性,用 m_ZeroR 来分类就可以了,ZeroR 分 类是返回类别数最多的那个类别。再向下,判断是否使用重新采样,分类器是否可以考虑带 权样本。先看一下 buildClassifierWithWeights(删除了前面的部分代码): protected void buildClassifierWithWeights(Instances data) throws Exception { // Do boostrap iterations for (m_NumIterationsPerformed = 0; m_NumIterationsPerformed m_Classifiers.length; m_NumIterationsPerformed++) { // Select instances to train the classifier on if (m_WeightThreshold 100) { trainData = selectWeightQuantile(training, (double) m_WeightThreshold / 100); } else { trainData = new Instances(training, 0, numInstances); } // Build the classifier if (m_Classifiers[m_NumIterationsPerformed] i

文档评论(0)

haihang2017 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档