|
|
不爱学习的番茄 · 这效果炸了系列 豆瓣影音炫酷堆叠列表效果_item· 2 年前 · |
|
|
曾深爱过的黄瓜 · 迭代 #7 – (C#) 添加 Ajax ...· 2 年前 · |
|
|
不敢表白的香菇 · 【解决】Electron 引用JQuery ...· 2 年前 · |
|
|
强健的蚂蚁 · org.w3c.dom.node ...· 3 年前 · |
|
|
寂寞的烤红薯 · 处理并发冲突- EF Core | ...· 3 年前 · |
定义二(拉普拉斯矩阵,Laplacian Matrix) :
定义三(对称归一化的拉普拉斯矩阵,Symmetric normalized Laplacian) :
这是networkX库对稀疏矩阵A的处理方式,有少量改进(将所有内容保持稀疏):
n,m = A.shape diags = A.sum(axis=1) D = sps.spdiags(diags.flatten(), [0], m, n, format='csr') D - A
numpy和scipy两个库中模块中都提供了线性代数的库linalg,但scipy的linalg的更全面一些。# laplacian矩阵 import numpy as np def unnormalized_laplacian(adj_matrix): # 先求度矩阵 R = np.sum(adj_matrix, axis=1) degreeMatrix = np.diag(R) return degreeMatrix - adj_matrix # 对称归一化的laplacian矩阵 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 - np.matmul(np.matmul(D_sqrt, adj_matrix), D_sqrt)matlab的代码实现为:
L = diag( sum(A,2)) - A % or L=diag(sum(A))-A because A is symmetric那么如何求矩阵的特征值呢——利用numpy的
linalg.eig:# !/usr/bin/python ## -*-coding:utf-8 -*- import numpy as np A = np.array([[3,-1],[-1,3]]) print('打印A:\n{}'.format(A)) a, b = np.linalg.eig(A) print('打印特征值a:\n{}'.format(a)) print('打印特征向量b:\n{}'.format(b))得到特征值和特征向量:
[[ 3 -1] [-1 3]] 打印特征值a: [4. 2.] 打印特征向量b: [[ 0.70710678 0.70710678] [-0.70710678 0.70710678]]三阶矩阵试试,回归考研线代的题目:
import numpy as np A = np.array([[2,-3,1],[1,-2,1],[1,-3,2]]) print('打印A:\n{}'.format(A)) a, b = np.linalg.eig(A) print('打印特征值a:\n{}'.format(a)) print('打印特征向量b:\n{}'.format(b))结果如下,看结果的特征向量矩阵,每一列代表一个一个特征向量,都是
[[ 2 -3 1] [ 1 -2 1] [ 1 -3 2]] 打印特征值a: [2.09037533e-15+0.00000000e+00j 1.00000000e+00+5.87474805e-16j 1.00000000e+00-5.87474805e-16j] 打印特征向量b: [[0.57735027+0.j 0.84946664+0.j 0.84946664-0.j ] [0.57735027+0.j 0.34188085-0.11423045j 0.34188085+0.11423045j] [0.57735027+0.j 0.17617591-0.34269135j 0.17617591+0.34269135j]]三、关于图Fourier变换
根据卷积原理,卷积公式可以写成
D(i, j)=\left\{\begin{array}{ll}{d_{i}} & {\text { if } i=j} \\ {0} & {\text { otherwise }}\end{array}\right. D(i,j)={di0 if i=j otherwise
A(i, j)=\left\{\begin{array}{ll}{1} & {\text { if } x_{i} \sim x_{j}} \\ {0} & {\text { otherwise }}\end{array}\right. A(i,j)={10 if xi∼xj otherwise
那么图上的Laplacian算子可以写成
学习心得(1)laplacian matrix就是无向图中定义 L=D−AL=D-AL=D−A,其中D为邻接矩阵,A为度矩阵(是一个对角矩阵)。(2)本文用的python计算拉普拉斯矩阵及其特征值、特征向量。文章目录学习心得一、背景介绍二、Python代码实现三、关于图Fourier变换Reference一、背景介绍定义一(图的邻接矩阵):给定一个图G={V,E}\mathcal{G}=\{\mathcal{V}, \mathcal{E}\}G={V,E},其对应的邻接矩阵被记为A∈{0,1 def laplacian_matrix(graph): # 求邻接矩阵 A = np.array(nx.adjacency_matrix(graph).todense()) A = -A for i in range(len(A)): # 求顶点的度图神经网络(Graph Neural Network,GNN)是一类能够从图结构数据中学习特征规律的神经网络,是解决图结构数据(非欧氏空间数据)机器学习问题的最重要的技术。 1 图神经网络的基础知识 图神经网络(Graph Neural Network,GNN)是一类能够从图结构数据中学习特征规律的神经网络,是解决图结构数据(非欧氏空间数据)机器学习问题的最重要的技术之一。 前面章节中主要介绍了神经网络的相关知识。接下来,让我们了解一下图神经网络相关的基础知识。 1.1 欧氏...从图中可以看出当前点的位置与周围4个点位置之差, 即周围四个点之和 - 4*当前位置像素点,这种算法容易受到噪声点的干扰,不存在x和y轴的计算过程 P5lap =( P2 + P4 + P6 + P8 ) - 4* P5 import cv2 img = cv2.imread("images/img2_small.jpg", cv2.IMREAD_GRAYSCALE) laplacian = cv2.Laplacian(img,cv2.CV_64F) laplaci谱聚类算法步骤 整体来说,谱聚类算法要做的就是先求出相似性矩阵,然后对该矩阵归一化运算,之后求前个特征向量,最后运用K-means算法分类。实际上,谱聚类要做的事情其实就是将高维度的数据,以特征向量的形式简洁表达,属于一种降维的过程。本来高维度用k-means不好分的点,在经过线性变换以及降维之后,十分容易求解。谱聚类的步骤如下: 1.按照式计算相似性矩阵 2.使用KNN计算邻接矩阵A...
|
|
不爱学习的番茄 · 这效果炸了系列 豆瓣影音炫酷堆叠列表效果_item 2 年前 |