class_docstr: An implementation of `"BigClam" <http://infolab.stanford.edu/~crucis/pubs/paper-nmfagm.pdf>`_
  from the WSDM '13 paper "Overlapping Community Detection at Scale: A Non-negative Matrix
  Factorization Approach". The procedure uses gradient ascent to create an embedding which is
  used for deciding the node-cluster affiliations.
  
  Args:
      dimensions (int): Number of embedding dimensions. Default 8.
      iterations (int): Number of training iterations. Default 50.
      learning_rate (float): Gradient ascent learning rate. Default is 0.005.
      seed (int): Random seed value. Default is 42.
class_docstr_tok: ["An","implementation","of","`","``","BigClam","''","<","http",":","\/\/infolab.stanford.edu\/~crucis\/pubs\/paper-nmfagm.pdf",">","`","_","from","the","WSDM","'13","paper","``","Overlapping","Community","Detection","at","Scale",":","A","Non-negative","Matrix","Factorization","Approach","''",".","The","procedure","uses","gradient","ascent","to","create","an","embedding","which","is","used","for","deciding","the","node-cluster","affiliations",".","Args",":","dimensions","(","int",")",":","Number","of","embedding","dimensions",".","Default","8.","iterations","(","int",")",":","Number","of","training","iterations",".","Default","50.","learning_rate","(","float",")",":","Gradient","ascent","learning","rate",".","Default","is","0.005.","seed","(","int",")",":","Random","seed","value",".","Default","is","42","."]
docstr: Fitting a BigClam clustering model.
  
  Arg types:
      * **graph** *(NetworkX graph)* - The graph to be clustered.
docstr_tok: ["Fitting","a","BigClam","clustering","model",".","Arg","types",":","*","*","*","graph","*","*","*","(","NetworkX","graph",")","*","-","The","graph","to","be","clustered","."]
code: def fit(self, graph: nx.classes.graph.Graph):
      """
      Fitting a BigClam clustering model.
  
      Arg types:
          * **graph** *(NetworkX graph)* - The graph to be clustered.
      """
      self._set_seed()
      graph = self._check_graph(graph)
      number_of_nodes = graph.number_of_nodes()
      self._initialize_features(number_of_nodes)
      nodes = [node for node in graph.nodes()]
      for i in range(self.iterations):
          random.shuffle(nodes)
          for node in nodes:
              nebs = [neb for neb in graph.neighbors(node)]
              neb_features = self._embedding[nebs, :]
              node_feature = self._embedding[node, :]
              gradient = self._calculate_gradient(
                  node_feature, neb_features
              )
              self._do_updates(node, gradient, node_feature)
  
file_path: karateclub/karateclub/community_detection/overlapping/bigclam.py
imports: import random
  import community
  import numpy
  import networkx
  from typing import Dict
  from karateclub.estimator import Estimator
label_desc: Use image node_id 7 for calling the BigClam obj's underlying member method code with example usage: obj.fit(graph) without return types