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

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值