matlab求向量的二範數_Python Numpy中的範數
阿新 • • 發佈:2021-02-14
技術標籤:matlab求向量的二範數
數學概念
範數,是具有 “長度” 概念的函式。線上性代數、泛函分析及相關的數學領域,範數是一個函式,是向量空間內的所有向量賦予非零的正長度或大小。
在數學上,範數包括向量範數
和矩陣範數
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
:是否保持矩陣的二維特性
例子
向量
1>>>importnumpyasnp
2>>>x=np.array([1,2,3,4])
3>>>np.linalg.norm(x)#預設是二範數,所有向量元素絕對值的平方和再開方
45.477225575051661
5>>>np.sqrt(1**2+2**2+3**2+4**2)
65.477225575051661
7>>>np.linalg.norm(x,ord=1)#所有向量元素絕對值之和
810.0
9>>>1+2+3+4
1010
11>>>np.linalg.norm(x,ord=np.inf)#max(abs(x_i)),所有向量元素絕對值中的最大值
124.0
13>>>np.linalg.norm(x,ord=-np.inf)#min(abs(x_i)),所有向量元素絕對值中的最小值
141.0
矩陣
1>>>importnumpyasnp
2>>>x=np.arange(12).reshape(3,4)
3>>>x
4array([[0,1,2,3],
5[4,5,6,7],
6[8,9,10,11]])
7>>>np.linalg.norm(x)#預設是二範數,最大特徵值的算術平方根
822.494443758403985
9>>>np.linalg.norm(x,ord=1)#所有矩陣列向量絕對值之和的最大值
1021.0
11>>>x
12array([[0,1,2,3],
13[4,5,6,7],
14[8,9,10,11]])
15>>>np.linalg.norm(x,ord=1,axis=1)#行向量的一範數
16array([6.,22.,38.])
17>>>np.linalg.norm(x,ord=2,axis=1)#行向量的二範數
18array([3.74165739,11.22497216,19.13112647])
19>>>np.linalg.norm(x,ord=1,axis=1,keepdims=True)#結果仍然是個矩陣
20array([[6.],
21[22.],
22[38.]])
歷史相關文章
Pythoner還在為了練習Numpy而沒有真實資料而煩惱嗎?
Numpy中的shuffle和permutation區別
以上是自己實踐中遇到的一些問題,分享出來供大家參考學習,歡迎關注微信公眾號,不定期分享乾貨