Python|Python Numpy中的范数
数学概念
范数,是具有 “长度” 概念的函数。在线性代数、泛函分析及相关的数学领域,范数是一个函数,是矢量空间内的所有矢量赋予非零的正长度或大小。
在数学上,范数包括向量范数
和矩阵范数
L1 范数和 L2 范数,用于机器学习的 L1 正则化、L2 正则化。对于线性回归模型,使用 L1 正则化的模型建叫做 Lasso 回归,使用 L2 正则化的模型叫做 Ridge 回归(岭回归)。
其作用是:
L1 正则化是指权值向量 w 中各个元素的绝对值之和,可以产生稀疏权值矩阵(稀疏矩阵指的是很多元素为 0,只有少数元素是非零值的矩阵,即得到的线性回归模型的大部分系数都是 0. ),即产生一个稀疏模型,可以用于特征选择;
L2 正则化是指权值向量 w 中各个元素的平方和然后再求平方根,可以防止模型过拟合(overfitting);一定程度上,L1 也可以防止过拟合。
Numpy函数介绍
np.linalg.norm(x, ord=None, axis=None, keepdims=False)
np.linalg.norm:linalg=linear(线性)+algebra(代数),norm则表示范数
-
x
:表示矩阵(也可以是一维) -
ord
:范数类型 -
axis
:轴向
axis=1表示按行向量处理,求多个行向量的范数
axis=0表示按列向量处理,求多个列向量的范数
axis=None表示矩阵范数。 -
keepdims
:是否保持矩阵的二维特性
True表示保持矩阵的二维特性,False相反
文章图片
范数 例子
- 向量
>>> import numpy as np
>>> x=np.array([1,2,3,4])
>>> np.linalg.norm(x)#默认是二范数,所有向量元素绝对值的平方和再开方
5.477225575051661
>>> np.sqrt(1**2+2**2+3**2+4**2)
5.477225575051661
>>> np.linalg.norm(x,ord=1)#所有向量元素绝对值之和
10.0
>>> 1+2+3+4
10
>>> np.linalg.norm(x,ord=np.inf)#max(abs(x_i)),所有向量元素绝对值中的最大值
4.0
>>> np.linalg.norm(x,ord=-np.inf)#min(abs(x_i)),所有向量元素绝对值中的最小值
1.0
- 矩阵
>>> import numpy as np
>>> x=np.arange(12).reshape(3,4)
>>> x
array([[ 0,1,2,3],
[ 4,5,6,7],
[ 8,9, 10, 11]])
>>> np.linalg.norm(x)#默认是二范数,最大特征值的算术平方根
22.494443758403985
>>> np.linalg.norm(x,ord=1)#所有矩阵列向量绝对值之和的最大值
21.0
>>> x
array([[ 0,1,2,3],
[ 4,5,6,7],
[ 8,9, 10, 11]])
>>> np.linalg.norm(x,ord=1,axis=1)#行向量的一范数
array([ 6., 22., 38.])
>>> np.linalg.norm(x,ord=2,axis=1)#行向量的二范数
array([ 3.74165739, 11.22497216, 19.13112647])
>>> np.linalg.norm(x,ord=1,axis=1,keepdims=True)#结果仍然是个矩阵
array([[ 6.],
[22.],
[38.]])
历史相关文章
- Pythoner还在为了练习Numpy而没有真实数据而烦恼吗?
- Numpy中的shuffle和permutation区别
文章图片
【Python|Python Numpy中的范数】
推荐阅读
- 热闹中的孤独
- JS中的各种宽高度定义及其应用
- 我眼中的佛系经纪人
- 《魔法科高中的劣等生》第26卷(Invasion篇)发售
- python学习之|python学习之 实现QQ自动发送消息
- Android中的AES加密-下
- 逻辑回归的理解与python示例
- 放下心中的偶像包袱吧
- C语言字符函数中的isalnum()和iscntrl()你都知道吗
- C语言浮点函数中的modf和fmod详解