【发布时间】:2019-09-03 21:12:06
【问题描述】:
我遇到了why-laplacian-matrix-need-normalization-and-how-come-the-sqrt-of-degree-matrix。
我有一个加权邻接矩阵adjm(Google Drive 上的文件data.csv)。矩阵adjm 是非对称的。我已经构建了有向图graph,然后删除了循环和多条边。结果图是连接的和简单的。我使用了igraph 包中的graph.laplacian() 函数。我希望得到对称矩阵,但是矩阵L_matrix 不是对称的。
library(igraph)
# read from file
adjm = as.matrix(read.csv("data.csv", sep=",", row.names = 1))
isSymmetric(adjm) # FALSE
graph <- graph_from_adjacency_matrix(adjm, weighted=TRUE)
table(count_multiple(graph))
# remove loops and multiple edges
graph <- simplify(graph)
is_connected(graph) # TRUE
L_matrix <- graph.laplacian(graph, norm=TRUE,
weights = E(graph)$weight,
sparse=FALSE)
isSymmetric(L_matrix) # FALSE
编辑。我尝试将容差 tol 从 0.1 更改为 0.0001,但结果是 FALSE。
isSymmetric(L_matrix, tol = 0.01) # FALSE
L_matrix 是 104 与 104 矩阵的平方。我发现了第一行和第一列之间的区别。然后我计算了零的个数,小于104。
test0 <- L_matrix[1,] - L_matrix[,1]
test0 <- test0[test0 == 0]
length(test0[test0 == 0])
[1] 90
编辑 2。
我想做一个谱聚类。
问题。 为什么拉普拉斯矩阵不对称?
【问题讨论】: