SVD
是一种因子分解运算, 将一个矩阵分解为3个矩阵的乘积
其中, 奇异值矩阵是对角线矩阵
Key_Function
np.linalg.svd函数, 可以对矩阵进行奇异值分解.
U: 正交矩阵
sigma: 表示奇异值矩阵对角线的数组, 其他非对角线元素均为0
V: 正交矩阵
np.diag函数, 得出完整的奇异值矩阵
Code
import numpy as np
A = np.mat("4 11 14; 8 7 -2")
print(A)
'''
[[ 4 11 14]
[ 8 7 -2]]
'''
U, Sigma, V = np.linalg.svd(A, full_matrices=False)
print(U)
'''
[[-0.9486833 -0.31622777]
[-0.31622777 0.9486833 ]]
'''
print(Sigma) # 这个Sigma只是奇异值矩阵对角线上的值
'''
[ 18.97366596 9.48683298]
'''
print(np.diag(Sigma))
'''
[[ 18.97366596 0. ]
[ 0. 9.48683298]]
'''
print(V)
'''
[[-0.33333333 -0.66666667 -0.66666667]
[ 0.66666667 0.33333333 -0.66666667]]
'''
print(U * np.diag(Sigma) * V)
'''
[[ 4. 11. 14.]
[ 8. 7. -2.]]
'''
广义逆矩阵
Key_Function
np.linalg.pinv函数
np.inv函数
Code
import numpy as np
A = np.mat("4 11 14; 8 7 -2")
print(A)
'''
[[ 4 11 14]
[ 8 7 -2]]
'''
pseudoinv = np.linalg.pinv(A)
print(pseudoinv)
'''
[[-0.00555556 0.07222222]
[ 0.02222222 0.04444444]
[ 0.05555556 -0.05555556]]
'''
print(A * pseudoinv)
'''十分接近单位矩阵
[[ 1.00000000e+00 0.00000000e+00]
[ 8.32667268e-17 1.00000000e+00]]
'''
数学概念

广义逆矩阵的定义

或者

广义逆矩阵的求解

行列式
Key_Function
np.linalg.det函数, 计算矩阵的行列式
Code
import numpy as np
A = np.mat("3 4; 5 6")
print(A)
'''
[[3 4]
[5 6]]
'''
print(np.linalg.det(A))
# -2.0