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)