SVD的PYTHON实现
•# 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矩阵
•
•defrestore(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))