当前位置:蜗牛素材网>综合资讯>图文>正文

python最简单怎么弄矩阵?Python求解特征向量和拉普拉斯矩阵

人气:448 ℃/2024-02-22 15:53:27

学过线性代数和深度学习先关的一定知道特征向量和拉普拉斯矩阵,这两者是很多模型的基础,有着很重要的地位,那用Python要怎么实现呢?

numpy和scipy两个库中模块中都提供了线性代数的库linalg,scipy更全面些。

特征值和特征向量

import scipy as sc#返回特征值,按照升序排列,num定义返回的个数def eignvalues(matrix, num): return sc.linalg.eigh(matrix, eigvalues(0, num-1))[0]#返回特征向量def eighvectors(matrix): return sc.linalg.eigh(matrix, eigvalues(0, num-1))[1]

调用实例

#创建一个对角矩阵,很容易得知它的特征值是1,2,3matrix = sc.diag([1,2,3])#调用特征值函数,获取最小的特征值minValue = eighvalues(matrix, 1)#调用特征向量函数,获取所有的特征向量vectors = eighvectors(matrix, 3)

拉普拉斯矩阵

很多图模型中都涉及到拉普拉斯矩阵,它有三种形式,这次给出的代码是D-A(度矩阵-邻接矩阵)和第二种标准化的形式:

#laplacian矩阵import numpy as npdef unnormalized_laplacian(adj_matrix): # 先求度矩阵 R = np.sum(adj_matrix, axis=1) degreeMatrix = np.diag(R) return degreeMatrix - adj_matrix def normalized_laplacian(adj_matrix): R = np.sum(adj_matrix, axis=1) R_sqrt = 1/np.sqrt(R) D_sqrt = np.diag(R_sqrt) I = np.eye(adj_matrix.shape[0]) return I - D_sqrt * adj_matrix * D_sqrt

搜索更多有关“python最简单怎么弄矩阵?Python求解特征向量和拉普拉斯矩阵”的信息 [百度搜索] [SoGou搜索] [头条搜索] [360搜索]
本网站部分内容、图文来自于网络,如有侵犯您的合法权益,请及时与我们联系,我们将第一时间安排核实及删除!
CopyRight © 2008-2024 蜗牛素材网 All Rights Reserved. 手机版