使用spark scala计算信息熵,信息增益,信息增益率

特征选择--信息熵(information entropy)--spark实现和优化 准备了很久,终于开始决定开始写关于机器学习相关的文章。深刻体会刚刚涉足一个新领域时的那种茫然和不知所措,而后在各个大神的文章帮助下渐渐走出了自己的一条路。现在想以分享设计方案的方式回馈技术社区和技术分享平台。虽然,这些不一定是最优的设计方案,希望这些技术方案对正在开发中正在迷惑的你有所帮助。 【背景】 在spark的架构中MLlib的工具库非常的全面,几... 阅读详情

找了下,没找到现成的代码,自己写了个,速度还能接受,可以用来做简单的特征选择

import org.apache.spark.rdd.RDD

class FeatureSelect {
  //信息熵
  def entropyRDD(data:RDD[String])={
    val size=data.count()
    val p=data.map(x=>(x,1)).reduceByKey(_+_).map{
      case(value,num)=>num.toDouble/size
    }
    p.map{x=>
      -x*(Math.log(x)/Math.log(2))
    }.sum
  }

  //条件熵 data:label,feature
  def conditionalEntropy(data:RDD[(String,String)])={
    val size=data.count()
    data.map{case(label,feature)=>((feature,label),1)
    }.reduceByKey(_+_).map{case((feature,label),num)=>
      (feature,List((label,num)))   //feature,label,cnt
    }.reduceByKey(_:::_).mapValues{x=>
      val size_entro=x.map(_._2).sum
      val res=x.map(_._2.toDouble/size_entro).map{t=>
        -t*(Math.log(t)/Math.log(2))
      }.sum
      size_entro*res
    }.mapValues{x=>x/size}.map(_._2).sum
  }

  //信息增益 data:label,feature
  def infoGain(data:RDD[(String,String)])={
    entropyRDD(data.map(_._1))-conditionalEntropy(data)
  }

  //信息增益率 data:label,feature
  def infoRatio(data:RDD[(String,String)])={
    infoGain(data)/entropyRDD(data.map(_._2))
  }
}

 

Spark2 机器学习之决策树分类Decision tree classifier 分类决策树代码import org.apache.spark.sql.SparkSession import org.apache.spark.sql.Dataset import org.apache.spark.sql.Row import org.apache.spark.sql.DataFrame import org.apache.spark.sql.Column import org.a 阅读详情

相关推荐

第二章 分类模型-决策树知识点详细总结

机器学习算法系列 目录 机器学习算法系列 前言 二、决策树的生成原则 三、信息增益 四、分类条件选择 五、停止规则 六、决策树预剪枝和后剪枝 七、决策树分类模型参数说明 八、决策树优缺点 九、决策树代码 前言 本章节内容主要介绍决策树,包括决策树简介、生成规则、信息增益、决策树分类条件选择、决策树预剪枝和后剪枝、决策树参数说明并附上部分代码、决策树优缺点。 一、决策树简介 决策树是一种树形结构,树内部每个节点表示一个属性上的测试,每个分支代表一个测试输出,每个叶子节点代表.

kerry_55的博客 2921

机器学习实验------决策树

机器学习实验------决策树

m0_74459049的博客 1536

PySpark入门二十三:ML--随机森林

随机森林相关概念介绍 随机森林 随机森林是由许多决策树构成,是一种有监督学习方法,可以用于分类和回归,通过合并汇总来自个体决策树的结果来进行预测,采用多数选票作为分类结果,采用预测结果平均值作为回归结果。 “随机”是针对森林中的每一颗决策树,有两种含义: 1. 数据采样随机 构建决策树的训练数据集通过有放回的随机采样,并且只会选择一定百分比的样本,这样可以在数据集合存在噪声点、异常点的情况下,有些决策树的构造过程中不会选择到这些噪声点、异常点从而达到一定的泛化作用在一定程度上抑制过拟合; 2. 特征随机 训

默默经营自己的小世界 1843

[头歌]-信息熵与信息增益

[头歌]-信息熵与信息增益

weixin_45794390的博客 2828

机器学习笔记之信息熵、信息增益和决策树(ID3算法)

机器学习笔记之信息熵、信息增益和决策树(ID3算法)

睿不可挡的专栏 2万+

基于spark的系统信息熵 条件熵计算

不错的开源利用spark计算CMIM, MRMR,MIFS等方法的spark库, 作者仿照spark ml mllib库的feature selection的功能, 扩展了支持系统信息熵计算的方式。 如果需要具体结果, 可以直接调用ml.feature中对应方法

机器学习——决策树

机器学习——决策树

m0_54376774的博客 525

Plot3d 网格数据格式

PLOT3D是一个计算机图形程序,旨在可视化计算流体力学的网格和解决方案。PLOT3D文件可以是ASCII, 也可是Fortran unformatted 或 C binary形式。PLOT3D文件分为网格文件(XYZ 文件), 空气动力学结果文件 (Q 文件)和通用结果文件(函数文件 + 函数名称文件)。网格文件中可加入所谓的IBlank参数。

weixin_62592231的博客 3721

特征选择方法总结

1、引言 最近,在做用户画像,利用文本分类方法挖掘用户兴趣模型。虽然文本分类不是很难,但是简单的事情,细节却是相当的重要。这篇文章我主要是想记录一下,我在做分类的时候,使用到的特征选择的方法,以及相关的是实现方法。 2、特征选择的方法 (1)信息增益   信息增益这一词来自通信领域,香浓提出的信息熵理论。信息熵的定义如下:  它的本质是衡量一个事件的不确定性的大小。而信息...

weixin_30555125的博客 206

网络抓包实战:如何捕获与解析802.1Q VLAN标签报文

在网络通信中,数据包是信息传输的基本单元,而VLAN(虚拟局域网)技术通过在数据链路层插入802.1Q标签,实现了网络流量的逻辑隔离与高效管理。其核心原理是在标准以太网帧头中嵌入4字节的VLAN标识,使交换机能够根据VID(VLAN ID)进行精准转发。掌握VLAN报文的捕获与解析技术,对于网络故障排查、安全审计和性能优化具有重要价值,尤其在需要验证网络隔离策略或诊断Trunk链路异常时。本文聚焦于使用Wireshark工具,结合端口镜像等实操方法,详细演示如何抓取并解读携带802.1Q标签的原始报文,帮助

weixin_33417488的博客 383

vietjetair 航空的webpack多参数生成学习

工作内不是特别多,居安思危,有一个抓机票信息的公司面试前竟然需要做面试题,这就是一个题。看了下,有点麻烦,webpack 最初不得要领,看了下资料,找了个框架,练了两个简单的,搞这个吧。入库需要自己找,有几个参数不是明文的,算法不是很复杂,位置不太好找。整体难度一般。

liu_yueyang的博客 1510

【机器学习】--决策树和随机森林

一、前述 决策树是一种非线性有监督分类模型,随机森林是一种非线性有监督分类模型。线性分类模型比如说逻辑回归,可能会存在不可分问题,但是非线性分类就不存在。二、具体原理 ID3算法 1、相关术语 根节点:最顶层的分类条件 叶节点:代表每一个类别号 中间节点:中间分类条件 分枝:代表每一个条件的输出 二叉树:每一个节点上有两个分枝 多叉树:每一个节点上至少有两个分枝 2、决策树的生成:...

L先生AI课堂 661

VS2022错误列表高效处理:从复制到Excel表格的完整指南

本文详细介绍了在Visual Studio 2022中高效处理错误列表的实用技巧,重点讲解了如何将错误信息一键复制并粘贴到Excel表格中。通过基础操作、自定义视图、筛选功能及常见问题解决方案,帮助开发者将杂乱的编译错误整理成清晰、可排序、可筛选的数据表,极大提升了团队协作、错误分析和项目管理的效率。

weixin_28837817的博客 360

【机器学习】决策树(上)——从原理到算法实现

决策树模型呈树形结构,在分类问题中,表示基于特征对实例进行分类的过程。它可以认为是if-then规则的集合,也可以认为是定义在特征空间与类空间上的条件概率分布。

HerosOfEarth的博客 7万+

Linux 常用命令大全(2025 最新版)

掌握这些命令,你已能应对80% 的 Linux 日常操作!更多高级技巧(如crontab定时任务、iptables防火墙配置)可参考手册(man 命令名)或官方文档。实践是学习命令的最佳方式,建议在虚拟机或云服务器中多动手操作!

2302_79600390的博客 1902

PostgreSQL:Patroni 高可用架构,基于etcd的自动故障转移集群

本文详细介绍了基于Patroni和etcd构建PostgreSQL高可用集群的方案。Patroni作为外部守护进程,通过etcd分布式协调服务实现自动故障转移、主节点选举等关键功能,弥补了PostgreSQL原生缺乏自动故障转移的不足。文章涵盖核心架构(3节点PG+3节点etcd)、环境规划、etcd集群部署(包括配置验证)以及Patroni安装配置的关键步骤,特别强调了Patroni自动初始化PG实例、配置同步复制等生产级特性。该方案通过外部组件协同工作,在不修改PG源码的情况下实现了生产环境所需的高可用

数据知道的博客 2492

机器学习 --- 决策树 python

简介 决策树说通俗点就是一棵能够替我们做决策的树,或者说是我们人类在要做决策时脑回路的一种表现形式。 本实训项目的主要内容是基于 python 语言搭建出决策树模型对数据分类,并使用 sklearn 的决策时模型对鸢尾花数据进行分类。 信息熵与信息增益 import numpy as np def calcInfoGain(feature, label, index): ''' 计算信息增益 :param feature:测试用例中字典里的feature,类型为ndarray

weixin_44196785的博客 1万+

Autosar诊断实战系列02-Dem(DTC&Event)要点及配置开发详解

Dem模块及其与Dcm等其他模块的交互是整个诊断Stack的重中之重,本文先对与其他模块的交互逻辑进行介绍,有一定掌握后继续重点介绍配置部分的开发。

initiallizer的博客 3332

[数据挖掘]决策树ID3和C45

数据分类数据分类就是建立模型把具有某种共同属性或特征的数据归并在一起,通过其类别的属性或特征来对数据进行区别。这个模型称为分类器,预测分类的(无序,离散)类标号。数据分类通常分为两个过程,学习阶段(模型构建)和分类阶段(预测类标号)。例如下图我们预测客户是否会购买计算机a) 学习过程 b) 分类过程决策树归纳决策树(Decision Tree)是在已知各种情况发生...

weixin_30772261的博客 430

华为流程L1-L6业务流程深度细化到可执行【附全文阅读】

该文档主要介绍了华为业务流程的深度细化及相关内容,包括流程框架、建模方法、流程模块描述、流程图建模等,旨在帮助企业构建有效的流程体系,实现战略目标。

cdfunlove的博客 4004

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

机器学习-第2关:信息熵与信息增益

importnumpyasnp defcalcInfoGain(feature,label,index): ''' 计算信息增益 :paramfeature:测试用例中字典里的feature,类型为ndarray :paramlabel:测试用例中字典里的label,类型为ndarray :paramindex:测试用例中字典里的index,即feature部分特征列的索引。该索引指的是feature中第几个特征,如i...

qq_55882332的博客 4012

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

《机器学习实战(Scala实现)》(三)——决策树

【代码】《机器学习实战(Scala实现)》(三)——决策树。

5473

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

特征选择--信息增益(information gain)--spark实现和优化

【背景】 首先我们先看一下,本期度词条对信息增益的广义定义: 其实,我们主要用到信息增益,还是在特征选择上。个人理解信息增益就是目标列(y)整体信息熵和特征列每一个类别分组下对应目标列信息熵期望的差值,所有在命名时会用到增益。整体来看是y值的整体分布和y值在不同特征类型别下分布累加的差距。依此来衡量变量对目标(y)列的区分度,或者叫纯度。但是信息增益评价指标...

u010990043的博客 2549

一条SQL搞定信息增益的计算

欢迎大家关注腾讯云技术社区-博客园官方主页,我们将持续在博客园为大家推荐技术精品文章哦~ 周东谕,2011年加入腾讯,现任职于腾讯互娱运营部数据中心,主要从事游戏相关的数据分析和挖掘工作。 信息增益原理介绍 介绍信息增益之前,首先需要介绍一下熵的概念,这是一个物理学概念,表示“一个系统的混乱程度”。系统的不确定性越高,熵就越大。假设集合中的变量X={x1,x2…xn},它对应在集合的概率分别是...

weixin_33860553的博客 899

熵,信息增益,信息增益率,Gini

话说今天《机器学习》上课被很深地打击了,标名为“数据挖掘”专业的我居然连个信息增益的例子都没能算正确。唉,自看书以来,这个地方就一直没有去推算过,每每看到决策树时看完Entropy就直接跳过后面增益计算了。因而,总想找个时间再回过来好好看一下,这不,被逼上了呢。神奇的墨菲定律呢:你担心它发生的,它就一定会发生。 回正题了,这三个指标均是决策树用来划分属性的时候用到的,其中信息增益(Info

冰枫的随笔 1万+

SVM参数详解

svm参数说明---------------------- 如果你要输出类的概率,一定要有-b参数 svm-train training_set_file model_file svm-predict test_file model_fileoutput_file 自动脚本:python easy.py train_data test_data 自动选择最优参数,自动

Bryan__的专栏 8万+
上一篇: win7+spark
下一篇: spark的join和leftJoin使用union和reduce实现
Bryan__
博客等级 码龄12年 2500粉丝 166原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值