networkx.algorithms.eigenvector_centrality¶
-
networkx.algorithms.eigenvector_centrality(G, max_iter=100, tol=1e-06, nstart=None, weight='weight')[source]¶ Compute the eigenvector centrality for the graph G.
Eigenvector centrality computes the centrality for a node based on the centrality of its neighbors. The eigenvector centrality for node i is
\[\mathbf{Ax} = \lambda \mathbf{x}\]where A is the adjacency matrix of the graph G with eigenvalue \(\lambda\). By virtue of the Perron–Frobenius theorem, there is a unique and positive solution if \(\lambda\) is the largest eigenvalue associated with the eigenvector of the adjacency matrix A ([R669]).
Parameters: G : graph
A networkx graph
max_iter : integer, optional
Maximum number of iterations in power method.
tol : float, optional
Error tolerance used to check convergence in power method iteration.
nstart : dictionary, optional
Starting value of eigenvector iteration for each node.
weight : None or string, optional
If None, all edge weights are considered equal. Otherwise holds the name of the edge attribute used as weight.
Returns: nodes : dictionary
Dictionary of nodes with eigenvector centrality as the value.
Raises: NetworkXPointlessConcept
If the graph G is the null graph.
NetworkXError
If each value in nstart is zero.
See also
Notes
The measure was introduced by [R668] and is discussed in [R669].
The power iteration method is used to compute the eigenvector and convergence is not guaranteed. Our method stops after max_iter iterations or when the change in the computed vector between two iterations is smaller than an error tolerance of
G.number_of_nodes() * tol. This implementation uses (A + I) rather than the adjacency matrix A because it shifts the spectrum to enable discerning the correct eigenvector even for networks with multiple dominant eigenvalues.For directed graphs this is “left” eigenvector centrality which corresponds to the in-edges in the graph. For out-edges eigenvector centrality first reverse the graph with
G.reverse().References
[R668] (1, 2) Phillip Bonacich. “Power and Centrality: A Family of Measures.” American Journal of Sociology 92(5):1170–1182, 1986 <http://www.leonidzhukov.net/hse/2014/socialnetworks/papers/Bonacich-Centrality.pdf> [R669] (1, 2, 3) Mark E. J. Newman. Networks: An Introduction. Oxford University Press, USA, 2010, pp. 169. Examples
>>> G = nx.path_graph(4) >>> centrality = nx.eigenvector_centrality(G) >>> sorted((v, '{:0.2f}'.format(c)) for v, c in centrality.items()) [(0, '0.37'), (1, '0.60'), (2, '0.60'), (3, '0.37')]