# svd实验
import numpy as np
a = np.arange(24).reshape(4, 6)
print "a:", a
u, sigma, v = np.linalg.svd(a)
print "u:", u # 分解出的u矩阵
print "sigma:", sigma # 分解出的奇异值向量
print "v:", v # 分解出的v矩阵
def restore(sigma, u, v, k): # 取k个特征,对矩阵重新进行计算
m = len(u)
n = len(v)
b = np.zeros((m, n))
for j in range(k-1):
for i in range(m):
b[i] += sigma[j] * u[i][j] * v[j]
return b
print restore(sigma, u, v, 2)
python svd分解矩阵
最新推荐文章于 2024-08-25 10:41:32 发布