class_docstr: Implements the MMHC hybrid structure estimation procedure for
  learning BayesianNetworks from discrete data.
  
  Parameters
  ----------
  data: pandas DataFrame object
      dataframe object where each column represents one variable.
      (If some values in the data are missing the data cells should be set to `numpy.NaN`.
      Note that pandas converts each column containing `numpy.NaN`s to dtype `float`.)
  
  state_names: dict (optional)
      A dict indicating, for each variable, the discrete set of states (or values)
      that the variable can take. If unspecified, the observed values in the data set
      are taken to be the only possible states.
  
  References
  ----------
  Tsamardinos et al., The max-min hill-climbing Bayesian network structure learning algorithm (2005)
  http://www.dsl-lab.org/supplements/mmhc_paper/paper_online.pdf
class_docstr_tok: ["Implements","the","MMHC","hybrid","structure","estimation","procedure","for","learning","BayesianNetworks","from","discrete","data",".","Parameters","--","--","--","--","--","data",":","pandas","DataFrame","object","dataframe","object","where","each","column","represents","one","variable",".","(","If","some","values","in","the","data","are","missing","the","data","cells","should","be","set","to","`","numpy.NaN","`",".","Note","that","pandas","converts","each","column","containing","`","numpy.NaN","`","s","to","dtype","`","float","`",".",")","state_names",":","dict","(","optional",")","A","dict","indicating",",","for","each","variable",",","the","discrete","set","of","states","(","or","values",")","that","the","variable","can","take",".","If","unspecified",",","the","observed","values","in","the","data","set","are","taken","to","be","the","only","possible","states",".","References","--","--","--","--","--","Tsamardinos","et","al.",",","The","max-min","hill-climbing","Bayesian","network","structure","learning","algorithm","(","2005",")","http",":","\/\/www.dsl-lab.org\/supplements\/mmhc_paper\/paper_online.pdf"]
code: def __init__(self, data, **kwargs):
      super(MmhcEstimator, self).__init__(data, **kwargs)
  
file_path: pgmpy/pgmpy/estimators/MmhcEstimator.py
imports: from pgmpy.base import UndirectedGraph
  from pgmpy.estimators import BDeuScore, HillClimbSearch, StructureEstimator
  from pgmpy.estimators.CITests import chi_square
  from pgmpy.independencies import IndependenceAssertion, Independencies
  from pgmpy.models import BayesianNetwork
  from pgmpy.utils.mathext import powerset
label_desc: Use image node_id 1 to create a new MmhcEstimator object from inherited base classes: StructureEstimator with example: obj = MmhcEstimator(data)