当前位置: 首页 > news >正文

numpy 中的降维与升维

升维(Dimensionality Augmentation):增加数据的维度,通常用于提供更多信息或从不同的角度看待数据。

降维(Dimensionality Reduction):减少数据的维度,通常用于简化数据或去除无关紧要的特征。

降维

最近在飞桨学习机器学习的时候发现一个概念让人摸不清头脑,计算梯度的时候使用了 np.mean 来进行降维。

z = net.forward(x)
gradient_w=(z-y)* x
gradient_w=np.mean(gradient_w,axis=0)
gradient_w= gradient_w[:,np.newaxis]
gradient_b=(z-y)
gradient_b=np.mean(gradient_b)
#此处b是一个数值,所以可以直接用np.mean得到一个标量
gradient_b
142.50289323156107

在这里插入图片描述
‌numpy数组的维度(13,)和(13,1)的主要区别在于它们的维度和表示的数据结构。‌

当一个numpy数组的维度为(13,),它表示这是一个一维数组,只有一个索引维度,即数据只能通过一个单一的索引来进行访问。这种形状的数组通常用于表示一维的数据序列,如时间序列数据或简单的数值列表。在这种情况下,数组中的每个元素都可以通过一个单一的索引(从0到12)来访问。
相比之下,维度为(13,1)的数组是一个二维数组,但它只有一列。这种形状的数组在numpy中通常用于表示行向量,即它有一个行索引维度和一个列索引维度,尽管列维度只包含一个元素。这种形状的数组在数学和科学计算中特别有用,因为它允许对数据进行矩阵操作,即使这些矩阵实际上只有一行或一列。例如,一个(13,1)的数组可以看作是一个包含13个元素的列向量,每个元素都可以通过两个索引(一行和一列)来访问。
在这里插入图片描述
在这里要有个认识是这个公式:
在这里插入图片描述
或者有些公式在这个地方放的是 2N
mean 实际上是加和平均数。所以说不可被概念蒙蔽了双眼,机器学习的代码大多是基于理论,不像web 基于逻辑随便解释。
在这里插入图片描述

为什么降维?
1、随着数据维度不断降低,数据存储所需的空间也会随之减少。
2、低维数据有助于减少计算/训练用时。
3、一些算法在高维度数据上容易表现不佳,降维可提高算法可用性。
4、降维可以用删除冗余特征解决多重共线性问题。比如我们有两个变量:“一段时间内在跑步机上的耗时”和“卡路里消耗量”。这两个变量高度相关,在跑步机上花的时间越长,燃烧的卡路里自然就越多。因此,同时存储这两个数据意义不大,只需一个就够了。
5、降维有助于数据可视化。如果数据维度很高,可视化会变得相当困难,而绘制二维三维数据的图表非常简单。

减少数据的维度,通常用于简化数据或去除无关紧要的特征。

数组的降维

  1. array.ravel()
  2. np.squeeze(array)
  3. array.reshape(-1)
  4. array.flatten():返回源数据的副本

升维

增加数据的维度,通常用于提供更多信息或从不同的角度看待数据。
数组的升维

  1. np.atleast_2d(array) 转为二维数组
  2. np.atleast_3d(array) 转为三维数组
  3. array[:,np.newaxis] 升维一次 n行一列
  4. array[np.newaxis,:] 升维一次 一行n列
  5. array.reshape(-1,1) 变成n行一列
  6. array.reshape(1,-1) 变成一行n列
  7. np.expand_dims(a, axis)

参考:

https://www.jb51.net/python/3024442as.htm
https://huaweicloud.csdn.net/6380889adacf622b8df89aba.html

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Typora + PicGo + Gitee 实现图片自动上传
  • 建设工程经济之工程经济(二)
  • Git和SVN了解
  • 监控平台之请求监控
  • R语言统计分析——方差分析之ANOVA模型拟合
  • Maven 快照(SNAPSHOT)
  • 开源 AI 智能名片 O2O 商城小程序:助力私域电商多元角色绽放光芒
  • Linux(更新中~)
  • Python 轻松去除验证码干扰点,让识别不再犯难
  • 【职责链】设计模式:构建灵活的请求处理系统
  • 【C++】—— 内存管理
  • 2.【R语言】RStudio的下载和安装
  • 【产品那些事】什么是软件成分分析(SCA)?
  • Java大文件下载方案(vue+饿了么):分片下载、断点续载!
  • MySQL——多表操作(三)连接查询(2)内连接
  • 深入了解以太坊
  • Apache Spark Streaming 使用实例
  • bootstrap创建登录注册页面
  • CSS实用技巧干货
  • el-input获取焦点 input输入框为空时高亮 el-input值非法时
  • ES6核心特性
  • JavaScript实现分页效果
  • Java反射-动态类加载和重新加载
  • JDK9: 集成 Jshell 和 Maven 项目.
  • Objective-C 中关联引用的概念
  • Promise初体验
  • supervisor 永不挂掉的进程 安装以及使用
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • vue中实现单选
  • 阿里研究院入选中国企业智库系统影响力榜
  • 基于游标的分页接口实现
  • 聊聊sentinel的DegradeSlot
  • 前端面试之闭包
  • 如何在 Tornado 中实现 Middleware
  • 入口文件开始,分析Vue源码实现
  • 入手阿里云新服务器的部署NODE
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • 我看到的前端
  • 学习笔记TF060:图像语音结合,看图说话
  • - 转 Ext2.0 form使用实例
  • Redis4.x新特性 -- 萌萌的MEMORY DOCTOR
  • 好程序员web前端教程分享CSS不同元素margin的计算 ...
  • 完善智慧办公建设,小熊U租获京东数千万元A+轮融资 ...
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • ​力扣解法汇总946-验证栈序列
  • # AI产品经理的自我修养:既懂用户,更懂技术!
  • #### go map 底层结构 ####
  • #gStore-weekly | gStore最新版本1.0之三角形计数函数的使用
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • (1)Hilt的基本概念和使用
  • (14)学习笔记:动手深度学习(Pytorch神经网络基础)
  • (4.10~4.16)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (Java入门)学生管理系统
  • (Matlab)遗传算法优化的BP神经网络实现回归预测