scipy在机器学习中的应用(2):线性代数相关
·
scipy线性代数矩阵相关运算在他的linalg类中
(1)求方阵的行列式值det
A = np.array([[1,2],[3,4]])
print(linalg.det(A))
(2)求矩阵逆inv
B=linalg.inv(A)
print(B)
(3)求转职
print(A.T)
(4)求范数
这里先讲一下几类范数:
0范数:向量中的非0数
1范数:所有元素的绝对值之和
2范数:所有元素平方和 再开根号
无穷范数:所有元素的绝对值最大值
如何求呢?主要使用norm函数,传入不同的ord
B=np.array([1,2,3,4,0,0])
print(linalg.norm(B,ord=0))#非0 个数
print(linalg.norm(B,ord=1))#绝对值之和
print(linalg.norm(B,ord=2))#平方和开根号
print(linalg.norm(B,ord=np.inf))#绝对值最大值 无穷范数
print(linalg.norm(B))#默认2范数
(5)求特征值和特征向量eig
#特征值与特征向量
A = np.array([[1,2],[3,4]])
#特征值
print("特征值与特征向量")
print(linalg.eig(A))
输出为两个,第一个是特征值,第二个每一列是特征值对应特征向量
(6)求解线性方程组 solve
#线性方程组求解
#AX=B
#X=solve(A,B)
"""
1*x1 + 2*x2 + 3*x3 = 1
4*x1 + 9*x2 + 1*x3 = 1
27*x1 + 1*x2 + 8*x3 = 1
"""
a=np.array([[1,2,3],[4,9,1],[27,1,8]])
b=np.array([1,1,1])
x=linalg.solve(a,b)
print(x)
solve(a,b)a是未知数的系数,b是等号右边的常数构成的向量
(7)奇异值分解
#A=U*S*V.T
E=np.array([[0,1],[1,1],[1,0]])
u,s,vt=linalg.svd(E)
print('________________')
print(u,s,vt)
更多推荐
所有评论(0)