Bayesian Network Notes
Bayesian Network Notes
Program
import numpy as np
import pandas as pd
import csv
from pgmpy.estimators import MaximumLikelihoodEstimator
from pgmpy.models import BayesianNetwork
from pgmpy.inference import VariableElimination
heartDisease = pd.read_csv(r'C:\heart.csv')
heartDisease = heartDisease.replace('?',np.nan)
print('Sample instances from the dataset are given below')
print(heartDisease.head())
print('\n Attributes and datatypes')
print(heartDisease.dtypes)
model=BayesianNetwork([('age','heartdisease'),
('sex','heartdisease'),('exang','heartdisease'),('cp','heartdisease'),
('heartdisease','restecg'),('heartdisease','chol')])
print('\nLearning CPD using Maximum likelihood estimators')
model.fit(heartDisease,estimator=MaximumLikelihoodEstimator)
print('\n Inferencing with Bayesian Network:')
HeartDiseasetest_infer = VariableElimination(model)
print('\n 1. Probability of HeartDisease given evidence= restecg')
q1=HeartDiseasetest_infer.query(variables=['heartdisease'],evidenc
e={'restecg':1})
print(q1)
print('\n 2. Probability of HeartDisease given evidence= cp ')
q2=HeartDiseasetest_infer.query(variables=['heartdisease'],evidenc
e={'cp':2})
print(q2)
dataset
output
========================================================
========== RESTART: C:/MLJP/bayes network.py
========================================================
==========
Sample instances from the dataset are given below
age sex cp trestbps chol ... oldpeak slope ca thal
heartdisease
0 52 1 0 125 212 ... 1.0 2 2 3 0
1 53 1 0 140 203 ... 3.1 0 0 3 0
2 70 1 0 145 174 ... 2.6 0 0 3 0
3 61 1 0 148 203 ... 0.0 2 1 3 0
4 62 0 0 138 294 ... 1.9 1 3 2 0
[5 rows x 14 columns]