docs: def add_factors(self, *factors):
          """
          Associate a factor to the graph.
          See factors class for the order of potential values
  
          Parameters
          ----------
          *factor: pgmpy.factors.factors object
              A factor object on any subset of the variables of the model which
              is to be associated with the model.
  
          Returns
          -------
          None
  
          Examples
          --------
          >>> from pgmpy.models import ClusterGraph
          >>> from pgmpy.factors.discrete import DiscreteFactor
          >>> student = ClusterGraph()
          >>> student.add_node(('Alice', 'Bob'))
          >>> factor = DiscreteFactor(['Alice', 'Bob'], cardinality=[3, 2],
          ...                 values=np.random.rand(6))
          >>> student.add_factors(factor)
          """
          for factor in factors:
              factor_scope = set(factor.scope())
              nodes = [set(node) for node in self.nodes()]
              if factor_scope not in nodes:
                  raise ValueError('Factors defined on clusters of variable not'
                                   'present in model')
  
              self.factors.append(factor)