bethe_hessian_matrix#
- bethe_hessian_matrix(G, r=None, nodelist=None)[source]#
Returns the Bethe Hessian matrix of G.
The Bethe Hessian is a family of matrices parametrized by r, defined as H(r) = (r^2 - 1) I - r A + D where A is the adjacency matrix, D is the diagonal matrix of node degrees, and I is the identify matrix. It is equal to the graph laplacian when the regularizer r = 1.
The default choice of regularizer should be the ratio [2]
\[r_m = \left(\sum k_i \right)^{-1}\left(\sum k_i^2 \right) - 1\]- Parameters:
- GGraph
A NetworkX graph
- rfloat
Regularizer parameter
- nodelistlist, optional
The rows and columns are ordered according to the nodes in nodelist. If nodelist is None, then the ordering is produced by
G.nodes()
.
- Returns:
- Hscipy.sparse.csr_array
The Bethe Hessian matrix of
G
, with parameterr
.
See also
bethe_hessian_spectrum
adjacency_matrix
laplacian_matrix
References
[1]A. Saade, F. Krzakala and L. Zdeborová “Spectral Clustering of Graphs with the Bethe Hessian”, Advances in Neural Information Processing Systems, 2014.
[2]C. M. Le, E. Levina “Estimating the number of communities in networks by spectral methods” arXiv:1507.00827, 2015.
Examples
>>> k = [3, 2, 2, 1, 0] >>> G = nx.havel_hakimi_graph(k) >>> H = nx.bethe_hessian_matrix(G) >>> H.toarray() array([[ 3.5625, -1.25 , -1.25 , -1.25 , 0. ], [-1.25 , 2.5625, -1.25 , 0. , 0. ], [-1.25 , -1.25 , 2.5625, 0. , 0. ], [-1.25 , 0. , 0. , 1.5625, 0. ], [ 0. , 0. , 0. , 0. , 0.5625]]) ----
Additional backends implement this function
graphblas : OpenMP-enabled sparse linear algebra backend.