code: def jaccard_coefficient(G, ebunch=None):
      r"""Compute the Jaccard coefficient of all node pairs in ebunch.
  
      Jaccard coefficient of nodes `u` and `v` is defined as
  
      .. math::
  
          \frac{|\Gamma(u) \cap \Gamma(v)|}{|\Gamma(u) \cup \Gamma(v)|}
  
      where $\Gamma(u)$ denotes the set of neighbors of $u$.
  
      Parameters
      ----------
      G : graph
          A NetworkX undirected graph.
  
      ebunch : iterable of node pairs, optional (default = None)
          Jaccard coefficient will be computed for each pair of nodes
          given in the iterable. The pairs must be given as 2-tuples
          (u, v) where u and v are nodes in the graph. If ebunch is None
          then all nonexistent edges in the graph will be used.
          Default value: None.
  
      Returns
      -------
      piter : iterator
          An iterator of 3-tuples in the form (u, v, p) where (u, v) is a
          pair of nodes and p is their Jaccard coefficient.
  
      Raises
      ------
      NetworkXNotImplemented
          If `G` is a `DiGraph`, a `Multigraph` or a `MultiDiGraph`.
  
      NodeNotFound
          If `ebunch` has a node that is not in `G`.
  
      Examples
      --------
      >>> G = nx.complete_graph(5)
      >>> preds = nx.jaccard_coefficient(G, [(0, 1), (2, 3)])
      >>> for u, v, p in preds:
      ...     print(f"({u}, {v}) -> {p:.8f}")
      (0, 1) -> 0.60000000
      (2, 3) -> 0.60000000
  
      References
      ----------
      .. [1] D. Liben-Nowell, J. Kleinberg.
             The Link Prediction Problem for Social Networks (2004).
             http://www.cs.cornell.edu/home/kleinber/link-pred.pdf
      """
  
      def predict(u, v):
          union_size = len(set(G[u]) | set(G[v]))
          if union_size == 0:
              return 0
          return len(list(nx.common_neighbors(G, u, v))) / union_size
  
      return _apply_prediction(G, predict, ebunch)
  
file_path: networkx/networkx/algorithms/link_prediction.py
imports: from math import log
  import networkx
  from networkx.utils import not_implemented_for
label_desc: Use image node_id 3 for calling a global function with example usage: jaccard_coefficient(G, ebunch) and returns: _apply_prediction, unknown, int