def setUp(self): reader = XMLBIFReader(string=TEST_FILE) self.expected_model = reader.get_model() self.writer = XMLBIFWriter(self.expected_model) self.model_stateless = BayesianModel([('D', 'G'), ('I', 'G'), ('G', 'L'), ('I', 'S')]) self.cpd_d = TabularCPD(variable='D', variable_card=2, values=[[0.6, 0.4]]) self.cpd_i = TabularCPD(variable='I', variable_card=2, values=[[0.7, 0.3]]) self.cpd_g = TabularCPD(variable='G', variable_card=3, values=[[0.3, 0.05, 0.9, 0.5], [0.4, 0.25, 0.08, 0.3], [0.3, 0.7, 0.02, 0.2]], evidence=['I', 'D'], evidence_card=[2, 2]) self.cpd_l = TabularCPD(variable='L', variable_card=2, values=[[0.1, 0.4, 0.99], [0.9, 0.6, 0.01]], evidence=['G'], evidence_card=[3]) self.cpd_s = TabularCPD(variable='S', variable_card=2, values=[[0.95, 0.2], [0.05, 0.8]], evidence=['I'], evidence_card=[2]) self.model_stateless.add_cpds(self.cpd_d, self.cpd_i, self.cpd_g, self.cpd_l, self.cpd_s) self.writer_stateless = XMLBIFWriter(self.model_stateless)
def setUp(self): reader = XMLBIFReader(string=TEST_FILE) self.expected_model = reader.get_model() self.writer = XMLBIFWriter(self.expected_model) self.model_stateless = BayesianModel([("D", "G"), ("I", "G"), ("G", "L"), ("I", "S")]) self.cpd_d = TabularCPD(variable="D", variable_card=2, values=[[0.6, 0.4]]) self.cpd_i = TabularCPD(variable="I", variable_card=2, values=[[0.7, 0.3]]) self.cpd_g = TabularCPD( variable="G", variable_card=3, values=[ [0.3, 0.05, 0.9, 0.5], [0.4, 0.25, 0.08, 0.3], [0.3, 0.7, 0.02, 0.2], ], evidence=["I", "D"], evidence_card=[2, 2], ) self.cpd_l = TabularCPD( variable="L", variable_card=2, values=[[0.1, 0.4, 0.99], [0.9, 0.6, 0.01]], evidence=["G"], evidence_card=[3], ) self.cpd_s = TabularCPD( variable="S", variable_card=2, values=[[0.95, 0.2], [0.05, 0.8]], evidence=["I"], evidence_card=[2], ) self.model_stateless.add_cpds(self.cpd_d, self.cpd_i, self.cpd_g, self.cpd_l, self.cpd_s) self.writer_stateless = XMLBIFWriter(self.model_stateless)
def setUp(self): edges = [['family-out', 'dog-out'], ['bowel-problem', 'dog-out'], ['family-out', 'light-on'], ['dog-out', 'hear-bark']] cpds = { 'bowel-problem': np.array([[0.01], [0.99]]), 'dog-out': np.array([[0.99, 0.01, 0.97, 0.03], [0.9, 0.1, 0.3, 0.7]]), 'family-out': np.array([[0.15], [0.85]]), 'hear-bark': np.array([[0.7, 0.3], [0.01, 0.99]]), 'light-on': np.array([[0.6, 0.4], [0.05, 0.95]]) } states = { 'bowel-problem': ['true', 'false'], 'dog-out': ['true', 'false'], 'family-out': ['true', 'false'], 'hear-bark': ['true', 'false'], 'light-on': ['true', 'false'] } parents = { 'bowel-problem': [], 'dog-out': ['family-out', 'bowel-problem'], 'family-out': [], 'hear-bark': ['dog-out'], 'light-on': ['family-out'] } properties = { 'bowel-problem': ['position = (190, 69)'], 'dog-out': ['position = (155, 165)'], 'family-out': ['position = (112, 69)'], 'hear-bark': ['position = (154, 241)'], 'light-on': ['position = (73, 165)'] } self.model = BayesianModel(edges) tabular_cpds = [] for var, values in cpds.items(): cpd = TabularCPD(var, len(states[var]), values, evidence=parents[var], evidence_card=[ len(states[evidence_var]) for evidence_var in parents[var] ]) tabular_cpds.append(cpd) self.model.add_cpds(*tabular_cpds) for node, properties in properties.items(): for prop in properties: prop_name, prop_value = map(lambda t: t.strip(), prop.split('=')) self.model.node[node][prop_name] = prop_value self.writer = XMLBIFWriter(model=self.model)