networkx.algorithms.assortativity.k_nearest_neighbors¶
- k_nearest_neighbors(G, source='in+out', target='in+out', nodes=None, weight=None)¶
Compute the average degree connectivity of graph.
The average degree connectivity is the average nearest neighbor degree of nodes with degree k. For weighted graphs, an analogous measure can be computed using the weighted average neighbors degree defined in [1], for a node
i
, as\[k_{nn,i}^{w} = \frac{1}{s_i} \sum_{j \in N(i)} w_{ij} k_j\]where
s_i
is the weighted degree of nodei
,w_{ij}
is the weight of the edge that linksi
andj
, andN(i)
are the neighbors of nodei
.- Parameters
- GNetworkX graph
- source“in”|”out”|”in+out” (default:”in+out”)
Directed graphs only. Use “in”- or “out”-degree for source node.
- target“in”|”out”|”in+out” (default:”in+out”
Directed graphs only. Use “in”- or “out”-degree for target node.
- nodeslist or iterable (optional)
Compute neighbor connectivity for these nodes. The default is all nodes.
- weightstring or None, optional (default=None)
The edge attribute that holds the numerical value used as a weight. If None, then each edge has weight 1.
- Returns
- ddict
A dictionary keyed by degree k with the value of average connectivity.
- Raises
- ValueError
If either
source
ortarget
are not one of ‘in’, ‘out’, or ‘in+out’.
See also
neighbors_average_degree
Notes
This algorithm is sometimes called “k nearest neighbors” and is also available as
k_nearest_neighbors
.References
- 1
A. Barrat, M. Barthélemy, R. Pastor-Satorras, and A. Vespignani, “The architecture of complex weighted networks”. PNAS 101 (11): 3747–3752 (2004).
Examples
>>> G = nx.path_graph(4) >>> G.edges[1, 2]["weight"] = 3 >>> nx.k_nearest_neighbors(G) {1: 2.0, 2: 1.5} >>> nx.k_nearest_neighbors(G, weight="weight") {1: 2.0, 2: 1.75}