from pgmpy.factors.discrete import TabularCPD
cpd_X = TabularCPD('X', 2, [[1 - 0.002, 0.002]])
print(cpd_X)
+-----+-------+ | X_0 | 0.998 | +-----+-------+ | X_1 | 0.002 | +-----+-------+
cpd_Y_on_X = TabularCPD('Y', 2, np.array([[0.95, 0.01], [0.05, 0.99]]),
evidence=['X'], evidence_card=[2])
print(cpd_Y_on_X)
+-----+------+------+ | X | X_0 | X_1 | +-----+------+------+ | Y_0 | 0.95 | 0.01 | +-----+------+------+ | Y_1 | 0.05 | 0.99 | +-----+------+------+
from pgmpy.models import BayesianModel
model = BayesianModel([('X', 'Y')])
model.add_cpds(cpd_X, cpd_Y_on_X)
model.check_model()
True
from pgmpy.inference import VariableElimination
inference = VariableElimination(model)
posterior = inference.query(['X'], evidence={'Y': 1})
print(posterior['X'])
+-----+----------+ | X | phi(X) | +=====+==========+ | X_0 | 0.9618 | +-----+----------+ | X_1 | 0.0382 | +-----+----------+