Weka算法Classifier-tree-RandomForest源码分析(二)代码实现

Java用weka写随机森林算法 随机森林是一种集成学习算法,它通过结合多棵决策树来进行分类或回归任务。想象一下,你要做一个重要的决定,比如选哪所大学。为了做出最好的选择,你决定咨询很多专家的意见,而不是只听一个人的建议。随机森林的工作原理类似,它通过结合多棵决策树的意见来做出更准确和可靠的预测。具体来说:1.创建多棵决策树:随机森林算法会生成许多决策树,每棵树都在不同的随机数据子集上进行训练。每个子集是从原始数据集中随机抽取的样本(随机森林采用了一种称为的方法,这种方法也称为。 阅读详情



RandomForest的实现异常的简单,简单的超出博主的预期,Weka在实现方式上组合了Bagging和RandomTree。


一、RandomForest的训练

构建RandomForest的代码如下:

  public void buildClassifier(Instances data) throws Exception {

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

    // remove instances with missing class
    data = new Instances(data);
    data.deleteWithMissingClass();

    m_bagger = new Bagging();
    RandomTree rTree = new RandomTree();

    // set up the random tree options
    m_KValue = m_numFeatures;
    if (m_KValue < 1)
      m_KValue = (int) Utils.log2(data.numAttributes()) + 1;
    rTree.setKValue(m_KValue);
    rTree.setMaxDepth(getMaxDepth());

    // set up the bagger and build the forest
    m_bagger.setClassifier(rTree);
    m_bagger.setSeed(m_randomSeed);
    m_bagger.setNumIterations(m_numTrees);
    m_bagger.setCalcOutOfBag(true);
    m_bagger.buildClassifier(data);
  }
通过这段代码很直观的可以看出首先把无效数据去掉,然后建立了一个Bag,设置随机森林中每棵树所用到的属性的值,设置最大深度,接着把这棵RandomTree当做基分类器传递给Bagging,最后调用bagging的训练方法进行训练。


二、RandomForest分类

看完训练过程看具体的分类过程,也就是classifyInstance函数,值得注意的是,RandomForest继承自Classifier,却没有队classifyInstance方法进行重载,使用的是基类Classifier的classifyInstance函数,但却重载了distributionForInstance,而distributionForInstance却是Classifier的classifyInstance函数所用到的一个函数,返回一个instance在所有类上的概率。代码如下:

  public double[] distributionForInstance(Instance instance) throws Exception {

    return m_bagger.distributionForInstance(instance);
  }
可以看到,算出给定instance在各class上的分布是委托给bagger去做的(真懒),所以这里也不做详细分析,详细分析留到分析bagger的时候再说。

接下来看基类Classifier是如何使用distribution来给出分类结果的。

  public double classifyInstance(Instance instance) throws Exception {

    double[] dist = distributionForInstance(instance);
    if (dist == null) {
      throw new Exception("Null distribution predicted");
    }
    switch (instance.classAttribute().type()) {
    case Attribute.NOMINAL:
      double max = 0;
      int maxIndex = 0;

      for (int i = 0; i < dist.length; i++) {
        if (dist[i] > max) {
          maxIndex = i;
          max = dist[i];
        }
      }
      if (max > 0) {
        return maxIndex;
      } else {
        return Instance.missingValue();
      }
    case Attribute.NUMERIC:
    case Attribute.DATE:
      return dist[0];
    default:
      return Instance.missingValue();
    }
  }
可以很直观的看到,如果要是一个分类,则给出概率最大值,如果是一个回归(即classIndex对应的属性是数值),则返回dist[0],这里是使用了一个约定,第一个元素代表回归值。


三、总结

对于RandomForest的代码分析差不多就结束了,基本没什么实质内容,因为算法的主要工作都交由Bagging和RandomForest去做了,值得注意的是,当没有指定抽样属性的数量时,Weka使用的log2(K)作为经验值。


下一篇博客将分析Weka的RandomTree,之后将分析Bagging,这样就算把RandomForest补全了。



机器学习weka,java api调用随机森林及保存模型 工作需要,了解了一下weka的java api,主要是随机森林这一块,刚开始学习,记录下。 了解不多,直接上demo,里面有一些注释说明: package weka; import java.io.File; import weka.classifiers.Classifier; import weka.classifiers.trees.Random... 阅读详情

相关推荐

Weka 常用分类算法效果比较

本实验是福建矿产分布分类识别实验,使用常用的weka 分类识别算法,第一组实验只使用数据中的数值型数据,第二组实验在数值型特征基础上加上了标称属性分类。

Vinicier的专栏 2万+

数据分享|WEKA用决策树、随机森林、支持向量机SVM、朴素贝叶斯、逻辑回归信贷违约预测报告

特征转换数据变得越来越重要,其核心应用“预测”也成为互联网行业以及产业变革的重要力量。近年来网络 P2P借贷发展形势迅猛,一方面普通用户可以更加灵活、便快捷地获得中小额度的贷款,另一方面由于相当多数量用户出现违约问题而给 P2P信贷平台以及借贷双方带来诸多纠纷,因此根据用户历史款情况准确预测潜在是否还会发生违约就非常有必要。解决方案任务/目标对于用户贷款是否违约的预测,结果解释。数据源准备。

大数据部落 3911

随机森林简单案例

利用matlab自带的数据、决策树函数classregtree来构造决策树,将数据分别train和Test,并用Test对构造的随机森林进行验证。

调用Weka API,在使用分类器(以随机森林Random Forest为例)的同时使用特征选择方法

这也是在科研中的现实需求,本来不是很想用weka的,但感觉相比之下比R工作量小些。 说一下这个问题的背景和需求,我们都知道,特征选择是机器学习算法正确发挥作用的前提,我在之前这篇博客中也大概介绍了Weka中使用的特征选择算法。按照网友的介绍,其实一般不用单独使用Weka的特征选择类,例如这里说的:http://blog.sciencenet.cn/blog-713110-568654.html。

qysh123的专栏 7078

weka3.8桌面版

基于java的数据挖掘工具 可用来做随机森林 机器学习数据拟合。集合了大量能承担数据挖掘任务的机器学习算法,包括对数据进行预处理,分类,回归、聚类、关联规则以及在新的交互式界面上的可视化。如果想自己实现数据挖掘算法的话,可以参考Weka的接口文档

isolationForest1.0.2.zip

孤立森林算法 java实现 iforest算法是用于检测异常点的。对于电商、金融领域的欺诈检测应用广泛

Weka算法Classifier-tree-RandomForest源码分析(一)算法

Weka算法Classifier-tree-RandomForest源码分析(一)算法

锐之锋芒 1万+

STC8G1K08A的10位PWM避坑指南:为什么你的占空比调节总失效?(附寄存器操作时序图)

本文深入剖析了STC8G1K08A单片机10位PWM功能中占空比调节失效的核心原因,揭示了数据手册未明确指出的寄存器操作时序陷阱。通过对比错误与正确配置的波形,文章指出关键在于更新占空比高2位前需临时关闭PWM输出,并提供了经过验证的安全操作宏与函数库,帮助开发者彻底解决此问题,实现0%-100%的平滑控制。

yyy34的博客 747

Weka算法Classifier-tree-RandomForest源码分析(二)代码实现,randomforest

http://www.bkjia.com/ASPjc/876833.html RandomForest的实现异常的简单,简单的超出博主的预期,Weka在实现方式上组合了Bagging和RandomTree。 一、RandomForest的训练 构建RandomForest的代码如下: public void buildClassifier(Insta

荪荪的博客 1486

HFSS与AI融合:智能算法如何重塑天线设计流程

本文探讨了HFSS与AI融合如何通过智能算法革新天线设计流程。在5G/6G通信时代,AI技术如机器学习和遗传算法显著提升了高频电磁场仿真效率,将传统设计周期从数周缩短至数小时,并优化了天线性能。文章详细介绍了AI与HFSS的集成策略、关键技术突破及典型应用案例,展示了智能算法在天线设计中的巨大潜力。

weixin_29035147的博客 778

Viobot使用教程总贴

使用教程总贴

weixin_66666206的博客 1409

Weka算法Classifier-tree-RandomForest分析(一)算法

对WEKA中的随机森林算法进行总结

smilehehe110的博客 7602

视觉语言模型对抗攻击与防御:从传统方法到多模态挑战

本文深入探讨了视觉语言模型(VLM)面临的对抗攻击与防御挑战,从传统单模态攻击到多模态威胁的演进。分析了包括FGSM、PGD等经典攻击方法,以及新兴的多模态攻击如跨模态对抗样本和越狱攻击。同时提出了跨模态一致性检查、动态防御机制等创新防御策略,并结合医疗影像诊断等实战案例,为提升AI系统安全性提供了重要见解。

weixin_29231725的博客 392

JAVA学习-练习试用Java实现“Weka集成:使用Weka的Java API调用分类算法(如SVM、随机森林)”

要使用Weka的Java API调用分类算法,如SVM或随机森林,你首先需要将Weka库添加到你的Java项目中。以下是一个简单的Java程序示例,它演示了如何使用Weka的SVM和随机森林分类器进行数据分类。'来设置目标属性的索引。(文章为作者在学习java过程中的一些个人体会总结和借鉴,如有不当、错误的地方,请各位大佬批评指正,定当努力改正,如有侵权请联系作者删帖。3. 'SMO'是Weka中用于支持向量机(SVM)的分类器,而'RandomForest'是用于随机森林分类器的类。

weixin_69763181的博客 844

Agentic AI为教育行业赋能,提示工程架构师解析应用潜力

然而,即便是最先进的 LLMs,在面对复杂、动态、需要持续规划和调整的教育场景时,也常常显得力不从心,它们更像是强大的“问答机器”,而非真正意义上的“学习伙伴”或“教学助手”。在教育场景中,传统的 AI 工具可能只能回答学生提出的特定问题,或者根据预设的规则推送一些学习材料。无论您是教育技术领域的开发者、产品经理,还是一线的教育工作者、教育管理者,抑或是对 AI 教育应用充满好奇的研究者,本文都将为您提供宝贵的 insights,助您把握 Agentic AI 时代教育创新的脉搏。

架构师的AI之路,分享AI应用开发架构的学习与实践。 466

基于转录逆转的药物重定向 GPS 模型

GPS是一个基于分子结构预测基因表达扰动的开源平台,由三个模块组成:RCL(在LINCS扰动数据上训练抗噪MLP)、GPS4Drugs(预测新化合物的基因表达谱并进行逆转评分)、MolSearch(基于MCTS的分子优化)。平台使用Morgan指纹和Gene Ontology注释作为特征输入,将基因表达扰动离散为三分类标签。训练数据来自LINCS Phase I的18,746个化合物和978个landmark基因,支持四细胞系独立训练,可用于药物重定向与化合物筛选。

听雨草堂 83

Weka的聚类器SimpleKMeans中为什么还有distributionForInstance呢?

了解KM算法和EM算法的都知道,它们两个的区别就是,聚类分析完成后,KM将实例分到了每个簇里边,而EM并没有将每个实例分配给簇,而是计算出了每个实例属于每个簇的概率分布,而这个概率分布我们便可以通过方法distributionForInstance得到,然而KM却也有这个算法,不过它的概率取值只有1和0了

u010968153的专栏 1599

C# + YOLO 实时摄像头检测:Emgu CV + ONNX Runtime,30FPS+ 流畅运行

很多教程只给“单张图片推理”代码,一上摄像头就卡成 PPT(<5 FPS)。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 215

Weka源码分析(4)——算法系统

1. Classifier package1.1 Classifier继承体系//TODO:图太大,优化中…1.2 Classifier图 算法的2个过程: 1. build过程:算法build的过程其实就是算法参数(算法类的field)被赋值(可能是一次性的,也可能是迭代式的) 2. score过程:利用field-backed的公式或代码逻辑,计算概率分布或者分类值的过程。 Classi

重来 1218

控制科学与工程(自动化)保研经验【4】——浙大篇

控制科学与工程(自动化)保研经验【4】——浙大篇

Control Everything 1万+

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Weka 3.7.12源码学习、阅读、分析(2)

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33918357的博客 209

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Weka算法Classifier-trees-RandomTree源码分析

主要讲述了Weka算法中Classifier-trees-RandomTree的源码分析(随机森林算法)

smilehehe110的博客 2807

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

随机森林 java_机器学习weka,java api调用随机森林及保存模型

工作需要,了解了一下weka的java api,主要是随机森林这一块,刚开始学习,记录下。了解不多,直接上demo,里面有一些注释说明:package weka;import java.io.File;import weka.classifiers.Classifier;import weka.classifiers.trees.RandomForest;import weka.core.Inst...

weixin_34107887的博客 860

Weka的命令行构建分类器

Weka是对于机器学习初学者的很友好的软件,这里主要讲一下weka使用命令行构建分类器的方法

tu__zi的博客 827

weka[6] - Random Forest

终于来到Random Forests啦。 关于Random FP

狂奔的番茄 8892
上一篇: Weka算法Classifier-tree-RandomForest源码分析(一)算法
下一篇: Weka算法Classifier-meta-Bagging源码分析
ROger__Wong
博客等级 码龄14年 250粉丝 78原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值