Example #1
0
    def init_model(self, ebunch, cpdtables, plot=False, pgm_id='pgm'):
        """
		Creo el PGM usando PGMPY. Por ahora es un modelo Bayesiano. Recibe 
		la listas de aristas y las tablas CPD.

		Args:
			ebunch (list) : una lista de que contiene a las aristas del grafo.
			cpdtables (list) : un arreglo de diccionarios donde cada diccionario 
			contiene la informaciĆ³n necesaria para crear una tabla de probabilidad.
			plot (boolean) : una bandera para saber si guardo una imagen del grafo
			usando matplotlib.
			graph_id (str): el nombre para identificar el grafo. 
		"""
        for cpdtable in cpdtables:
            self.variables_dict[cpdtable['variable']] = [\
             _ for _ in range(cpdtable['variable_card'])]
            table = TabularCPD(variable=cpdtable['variable'],\
               variable_card=cpdtable['variable_card'],\
               values=cpdtable['values'],\
               evidence_card=cpdtable.get('evidence_card'),\
               evidence=cpdtable.get('evidence'))
            if cpdtable.get('evidence'):
                table.reorder_parents(sorted(cpdtable.get('evidence')))
            self.pgmodel.add_cpds(table)
        if not self.pgmodel.check_model():
            raise ValueError("Error with CPDTs")
        self.update_infer_system()
        if plot: self.save_pgm_as_img(pgm_id)