24/8/15算法笔记 复习_决策树

news2024/9/20 20:41:06

#手动计算决策树到底是如何实现分类的
p1 = (y =='N').mean()
p2 = (y =='Y').mean()

p1 * np.log2(1/p1) +p2*np.log2(1/p2)

X['真实用户'] = y
x = X['日志密度'].unique()#.unique() 是一个方法,它返回一个数组,包含 X['日志密度'] 列中所有不同的值。
x.sort()#排序
print(x)

#目的是通过遍历可能的分割点来计算信息熵,进而评估数据在不同分割点的概率分布。
for i in range(len(x)-1):
    split = x[i:i+2].mean()
    #概率分布
    cond = X['日志密度']<=split
    
    #左边概率是多少,右边是多少
    p = cond.value_counts()/cond.size  #计算满足条件和不满足条件的样本数量,并将其归一化以得到概率分布。
    indexs = p.index
    entropy = 0
    for index in indexs:
        user = X[cond ==index]['真实用户']#取出了目标值y的数据 # 这行代码的目的是过滤X DataFrame,只保留那些满足cond条件等于当前index的行,并从这些行中提取'真实用户'列。
        
        p_user = user.value_counts()/user.size
        #每个分支的信息熵
        entropy += (p_user*np.log2(1/p_user)).sum()*p[index]
    print(split,entropy)

x = X['好友密度'].unique()
x.sort()#排序
print(x)
for i in range(len(x)-1):
    split = x[i:i+2].mean()
    #概率分布
    cond = X['好友密度']<=split
    
    #左边概率是多少,右边是多少
    p = cond.value_counts()/cond.size
    
    indexs = p.index#True,False
    
    entropy = 0
    for index in indexs:
        user = X[cond ==index]['真实用户']#取出了目标值y的数据
        
        p_user = user.value_counts()/user.size
        #每个分支的信息熵
        entropy += (p_user*np.log2(1/p_user)).sum()*p[index]
    print(split,entropy)

归一化(Normalization)是数据预处理中的一种常用技术,它将数据的数值范围调整到一个特定的区间,通常是0到1之间,或者-1到1。归一化的目的和好处包括:

  1. 统一尺度:不同特征的数值范围可能差异很大。归一化确保所有特征都在相同的尺度上,有助于算法更公平地对待每个特征。

  2. 提高计算效率:某些算法在数值范围较小的情况下收敛得更快。

  3. 避免数值问题:在数值计算中,非常大的数值可能导致计算精度问题或溢出。归一化可以减少这种风险。

  4. 改善模型性能:对于基于梯度的优化算法(如神经网络),归一化可以加速收敛并提高模型性能。

  5. 特征可比性:归一化后的特征可以更容易地进行比较和解释。

  6. 算法要求:某些算法,如k-最近邻(k-NN)和主成分分析(PCA),对数据的尺度非常敏感,归一化可以提高这些算法的效果。

  7. 概率解释:在处理概率分布或基于概率的算法时,归一化确保了概率的总和为1,这是概率论的一个基本要求。

  8. 公平性:在多目标优化或多任务学习中,归一化可以帮助平衡不同目标或任务的重要性。

  9. 兼容性:不同的数据源可能有不同的量纲和数值范围,归一化有助于将它们统一到一个可比较的标准。

  10. 可视化:在数据可视化中,归一化可以帮助更清晰地展示数据的分布和关系。

归一化用于计算概率分布,这是为了确保在计算信息熵时,每个类别的概率之和为1,从而正确地反映数据的分布情况。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2051982.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

读零信任网络:在不可信网络中构建安全系统21读后总结与感想兼导读

1. 基本信息 零信任网络&#xff1a;在不可信网络中构建安全系统 道格巴斯&#xff08;Doug Barth&#xff09; 著 人民邮电出版社,2019年8月出版 1.1. 读薄率 书籍总字数252千字&#xff0c;笔记总字数73194字。 读薄率73194252000≈29.5% 这个读薄率是最高的吧&#x…

客户端登录逻辑

将网关服务器发送的数据通过信号传递给 TcpMgr 中定义的槽函数 void LoginDialog::initHttpHandlers() {// 注册获取登录回包逻辑m_handlers.insert(ReqId::ID_LOGIN_USER, [this](QJsonObject jsonObj){int error jsonObj["error"].toInt();if(error ! ErrorCodes:…

Superset BI封装自定义组件(堆叠柱状图)

目录 前言 封装步骤 一、创建组件文件夹 二、预设组件信息 三、使用组件 往期回顾 前言 Superset 是一个现代化的、易于使用的、轻量级的数据可视化工具&#xff0c;它允许用户通过简单的点击操作来创建和分享图表。如果你想在 Superset 中创建自定义组件&#xff0c;你…

银河麒麟服务器操作系统Kylin-Server-V10-SP3-2403-Release-20240426-x86_64安装步骤

银河麒麟服务器操作系统 Kylin-Server-V10-SP3-2403-Release-20240426-x86_64安装步骤 一、准备工作1. 下载ISO镜像2. 制作安装介质3. 设置BIOS 二、安装过程1. 启动系统2. 选择安装语言3. 选择安装配置4. 配置root密码与创建用户5. 开始安装6. 重启系统7. 同意许可协议 三、系…

mac/win视频编辑软件Premiere Pro Pr安装装下载

目录 一、PR软件介绍 1.1 PR软件概览 1.2 独特优势 1.3 应用场景 二、安装与硬件要求 2.0下载 2.1 安装步骤 2.2 硬件要求 三、使用方法 3.1 基础操作 3.2 编辑技巧 3.3 高级功能 一、PR软件介绍 1.1 PR软件概览 Adobe Premiere Pro&#xff08;简称PR&#xff0…

项目推荐——一款开源、免费、轻量级的项目工时管理系统

平台介绍 无鱼工时管理系统&#xff0c;是一款轻量级工时记录和管理工具&#xff0c;包括项目管理&#xff0c;工时上报&#xff0c;工时日报&#xff0c;工时统计等功能。 无鱼工时管理系统可通过员工工时上报的方式&#xff0c;来记录项目所花费的工时&#xff0c;帮助企业…

机器学习:一元线性回归模型

目录 前言 一、讲在前面 1.data.csv&#xff1a; 2.完整代码&#xff1a; 3.运行结果&#xff1a; 二、实现步骤 1.导入库 2.导入数据 3.绘制散点图&#xff08;这步可以省略&#xff09; 4.求特征和标签的相关系数 5.建立并训练线性回归模型 6.检验模型 7.获取线…

Element-06.案例

一.目标 实现下面这个页面&#xff0c;表格中的数据使用axois异步加载数据 二.实现步骤 首先在vue项目的views文件夹中新建一个tlias文件夹&#xff0c;用来存储该案例的相关组件。员工页面组件&#xff08;EmpView.vue&#xff09;和部门页面组件&#xff08;DeptView.vue&…

[数据集][目标检测]电力场景轭式悬架锈蚀分类数据集6351张2类别

数据集格式&#xff1a;仅仅包含jpg图片&#xff0c;每个类别文件夹下面存放着对应图片 图片数量(jpg文件个数)&#xff1a;6351 分类类别数&#xff1a;2 类别名称[corrosion,good] 每个类别图片数&#xff1a; corrosion 图片数&#xff1a;310 good 图片数&#xff1a;6041 …

ChatGLM-6B 主要代码分析 RotaryEmbedding

ChatGLM-6B 主要代码分析 RotaryEmbedding flyfish 图片链接地址 传统的 Transformer 位置编码&#xff08;Positional Encoding&#xff09;被称为绝对位置编码 &#xff0c;而 Rotary Embedding 被称为相对位置编码 &#xff0c;主要是因为它们编码位置信息的方式不同&am…

python创建项目环境及项目打包

目录 创建项目环境conda创建环境常用命令创建项目虚拟环境创建虚拟环境激活虚拟环境安装第三方库 pyinstaller 打包常用参数组合 嵌入式打包下载嵌入式版本的python配置环境无参调用可完善 nuitka打包 创建项目环境 conda创建环境常用命令 conda create -n py310 python3.10.…

《学会 SpringBoot · 依赖管理机制》

&#x1f4e2; 大家好&#xff0c;我是 【战神刘玉栋】&#xff0c;有10多年的研发经验&#xff0c;致力于前后端技术栈的知识沉淀和传播。 &#x1f497; &#x1f33b; CSDN入驻不久&#xff0c;希望大家多多支持&#xff0c;后续会继续提升文章质量&#xff0c;绝不滥竽充数…

IntelliJ IDEA 集成 ShardingSphere-JDBC 访问分库分表

背景 众所周知&#xff0c;IntelliJ IDEA 是 Java 领域常用的开发工具之一&#xff0c;IDEA Ultimate&#xff08;旗舰版&#xff09;或其他例如 DataGrip 等 Intellij 平台的工具都集成了对数据库的访问能力。 但是&#xff0c;对于做了分库分表的项目&#xff0c;直接使用 …

微信支付代理商-自助提交资料源码之结算信息页面—微信支付商机版

一、支付代理上自助提交资料 一般在都在小程序完成提交 在网页中异常提示alert 但是很多小程序禁用了这个函数 并且不好看 那么久自定义一个组件每次直接调用 二、提示技术代码 function 未来之窗_VOS_通用提醒(msg){var 未来之窗内容message<cyberdiv style"font…

选择排序(直接选择排序与堆排序的比较)

选择排序 选择排序时间复杂度 1. 直接选择排序思考⾮常好理解&#xff0c;但是效率不是很好。实际中很少使用&#xff0c;思路是先进行遍历找到元最小的元素&#xff0c;然后与第一个进行交换 2. 时间复杂度&#xff1a;O&#xff08;&#xff09; 3. 空间复杂度&#…

gmapping算法核心部分

processScan函数 参考&#xff1a;https://blog.csdn.net/CV_Autobot/article/details/131058981 drawFromMotion:根据运动模型更新粒子位姿 scanMatch:进行扫描匹配 resample:重采样 逐步分解并详细解释代码 1. 获取当前扫描的相对位姿 OrientedPoint relPose reading.…

舜宇光学科技社招校招入职测评:商业推理测验真题汇总、答题要求、高分技巧

舜宇光学科技&#xff08;集团&#xff09;有限公司&#xff0c;成立于1984年&#xff0c;是全球领先的综合光学零件及产品制造商。2007年在香港联交所主板上市&#xff0c;股票代码2382.HK。公司专注于光学产品的设计、研发、生产及销售&#xff0c;产品广泛应用于手机、汽车、…

BEM架构

视频 总结&#xff1a; BEM架构&#xff1a;一个命名类的规范而已&#xff0c;说白了就是如何给类起名字使用sass的目的&#xff1a;在<style>中模块化的使用类名&#xff0c;同时减少代码数量 1、 BEM架构 &#xff08;通义灵码查询结果&#xff09; BEM (Block Ele…

【hot100篇-python刷题记录】【和为 K 的子数组】

R5-子串篇 目录 思路&#xff1a; 优化&#xff1a; tip: 代码&#xff1a; 结果&#xff1a; ps: 思路&#xff1a; 滑动&#xff0c;应该可以使用滑动窗口来解题。 貌似前缀和也可以&#xff0c;left&#xff0c;right两个指针&#xff0c;right的前缀和-left的前缀…

【学习笔记】printf中%m的含义

【学习笔记】printf中%m的含义 在有些代码中会看到如下的写法&#xff1a; printf("%m\n");printf中使用了%m来打印输出&#xff0c;那么%m又是什么意思呢&#xff1f; 其实%m 并不是在所有的 printf 实现中都通用或标准化的选项&#xff0c;而是在某些特定的编程语…