问题描述
我有一个图的邻接矩阵,然后我将图的拉普拉斯矩阵 (https://en.wikipedia.org/wiki/Laplacian_matrix) 构建为 L = D - A
,其中 D 是度矩阵,A 是图的邻接矩阵.
数据: https://filebin.net/v9ksmt3loy3xt7g3
代码:
from scipy.io import loadmat
import numpy as np
import matplotlib.pyplot as plt
X = np.array(loadmat('/Users/sera/Downloads/113922_TCS_Glasser360.mat')['TCS'])
# build adjacency
X = stats.zscore(X,axis=1)
u,l = 0.0,0.0
Xu,Xl = np.zeros((X.shape),dtype=np.float64),np.zeros((X.shape),dtype=np.float64)
Xu[X >= u] = X[X >= u]
Xl[X <= l] = X[X <= l]
Ac = (np.dot(Xu,Xu.T) + np.dot(Xl,Xl.T) ) / (Xu.shape[1]-1.)
np.fill_diagonal(Ac,0.0)
# plot the adjacency
plt.imshow(Ac);plt.colorbar()
# build laplacian
D = np.diag(np.sum(Ac,axis=1))
L = D - Ac
# eigh
l,v = np.linalg.eigh(L)
i = l.argsort() # sorting
l,v = l[i],v[:,i]
# scree plot of eigenvalues
plt.plot(l[:],'o-')
# plot first eigenvector -should be constant
plt.plot(v[:,0])
# Sanity check 1: plot fiedler vector -- should be smooth
plt.plot(v[:,1])
# Sanity check 2: it must be $ L v[:,i] -\lambda v[:,i] = 0 $ for every $i$
ii=1;
plt.plot(np.dot(L,ii]) - l[ii]*v[:,ii])
plt.plot(v[:,1])
返回:
很明显,尖峰和这个特征向量是算法崩溃的产物。
为什么会这样?我该如何解决这个问题?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)