Statistics
| Branch: | Revision:

## iof-tools / networkxMiCe / networkx-master / networkx / algorithms / approximation / clustering_coefficient.py @ 5cef0f13

 1 ```# -*- coding: utf-8 -*- ``` ```# Copyright (C) 2013 by ``` ```# Fred Morstatter ``` ```# Jordi Torrents ``` ```# All rights reserved. ``` ```# BSD license. ``` ```import random ``` ```from networkx.utils import not_implemented_for ``` ```from networkx.utils import py_random_state ``` ```__all__ = ['average_clustering'] ``` ```__author__ = """\n""".join(['Fred Morstatter ', ``` ``` 'Jordi Torrents ']) ``` ```@py_random_state(2) ``` ```@not_implemented_for('directed') ``` ```def average_clustering(G, trials=1000, seed=None): ``` ``` r"""Estimates the average clustering coefficient of G. ``` ``` ``` ``` The local clustering of each node in `G` is the fraction of triangles ``` ``` that actually exist over all possible triangles in its neighborhood. ``` ``` The average clustering coefficient of a graph `G` is the mean of ``` ``` local clusterings. ``` ``` ``` ``` This function finds an approximate average clustering coefficient ``` ``` for G by repeating `n` times (defined in `trials`) the following ``` ``` experiment: choose a node at random, choose two of its neighbors ``` ``` at random, and check if they are connected. The approximate ``` ``` coefficient is the fraction of triangles found over the number ``` ``` of trials _. ``` ``` ``` ``` Parameters ``` ``` ---------- ``` ``` G : NetworkX graph ``` ``` ``` ``` trials : integer ``` ``` Number of trials to perform (default 1000). ``` ``` ``` ``` seed : integer, random_state, or None (default) ``` ``` Indicator of random number generation state. ``` ``` See :ref:`Randomness`. ``` ``` ``` ``` Returns ``` ``` ------- ``` ``` c : float ``` ``` Approximated average clustering coefficient. ``` ``` ``` ``` References ``` ``` ---------- ``` ``` ..  Schank, Thomas, and Dorothea Wagner. Approximating clustering ``` ``` coefficient and transitivity. Universität Karlsruhe, Fakultät für ``` ``` Informatik, 2004. ``` ``` http://www.emis.ams.org/journals/JGAA/accepted/2005/SchankWagner2005.9.2.pdf ``` ``` ``` ``` """ ``` ``` n = len(G) ``` ``` triangles = 0 ``` ``` nodes = list(G) ``` ``` for i in [int(seed.random() * n) for i in range(trials)]: ``` ``` nbrs = list(G[nodes[i]]) ``` ``` if len(nbrs) < 2: ``` ``` continue ``` ``` u, v = seed.sample(nbrs, 2) ``` ``` if u in G[v]: ``` ``` triangles += 1 ``` ``` return triangles / float(trials) ```