要求:有以下資料集(二維陣列)data,
[[3, 4, 1, 6, 4],
[2, 3, 5, 4, 0],
[3, 3, 1, 0, 0],
[5, 5, 6, 2, 2],
[0, 2, 3, 3, 3],
[0, 0, 0, 6, 6]]
對其svd分解,並列印輸出分解後的結果
在pca降維演算法中,我們要計算樣本資料的協方差。
協方差表示的是兩個變數的總體的誤差,這與只表示乙個變數誤差的方差不同。 如果兩個變數的變化趨勢一致,也就是說如果其中乙個大於自身的期望值,另外乙個也大於自身的期望值,那麼兩個變數之間的協方差就是正值。 如果兩個變數的變化趨勢相反,即其中乙個大於自身的期望值,另外乙個卻小於自身的期望值,那麼兩個變數之間的協方差就是負值。
在矩陣m的奇異值分解中
· u的列(columns)組成一套對m的正交"輸入"或"分析"的基向量。這些向量是mm的特徵向量。
· v的列(columns)組成一套對m的正交"輸出"的基向量。這些向量是mm的特徵向量。
· σ對角線上的元素是奇異值,可視為是在輸入與輸出間進行的標量的"膨脹控制"。這些是mm及mm的奇異值,並與u和v的列向量相對應。
奇異值分解在統計中的主要應用為主成分分析(pca),一種資料分析方法,用來找出大量資料中所隱含的「模式」,它可以用在模式識別,資料壓縮等方面。pca演算法的作用是把資料集對映到低維空間中去。 資料集的特徵值(在svd中用奇異值表徵)按照重要性排列,降維的過程就是捨棄不重要的特徵向量的過程,而剩下的特徵向量組成的空間即為降維後的空間。
import numpy as np
data = np.array([[
3,4,
1,6,
4],[
2,3,
5,4,
0],[
3,3,
1,0,
0],[
5,5,
6,2,
2],[
0,2,
3,3,
3],[
0,0,
0,6,
6]])
data = data.t
# 將資料均值縮放
data_mean = np.mean(data)
data = data - data_mean.reshape(-1
,1)# 計算協方差
cov_mat = np.cov(data)
# 奇異值分解
u,s,v = np.linalg.svd(cov_mat)
print
(u)print()
print
(s)print()
print
(v)# 奇異值分解後的u是按特徵值大小排序好的特徵向量,這為我們降維提供了可能,我們要降到幾維,就取u的前幾列和原來的樣本做乘積就可以了。
# 比如降到2維
# u_new = u[:,:2]
# data_new = np.dot(data,u_new) # 這就是降維後的樣本
機器學習 奇異值分解
奇異值分解是一種矩陣因子分解方法,是線性代數概念,但在統計學習中被廣泛使用,成為其重要工具 主要應用 在主成分分析 潛在語義分析上 奇異值分解的矩陣不需要是方陣,任意矩陣都可以進行分解,都可以表示為三個矩陣的乘積 因子分解 形式,分別是m階正交矩陣 由降序排列的非負對角線元素組成的m n矩形對角矩陣...
奇異值分解SVD eigen opencv實現
opencv 實現 先貼上奇異值分解的物理意義 再貼一下之前寫的筆記 分離通道 std vector src split img,src for int i 0 i src.size channels i svd std vectorw,u,vt,s for int i 0 i channels i...
SVD奇異值分解 機器學習
簡介 奇異值分解 singular value decomposition 是線性代數中一種重要的矩陣分解,是在機器學習領域廣泛應用的演算法,它不光可以用於降維演算法中的特徵分解,還可以用於推薦系統,以及自然語言處理等領域。是很多機器學習演算法的基石。奇異值分解在資料降維中有較多的應用,這裡把它的原...