How to print the printing full cpd from pgmpy?

I'm trying to get the example in Insurance data representation with Bayesian networks to work. See the section Maximum Likelihood Estimation. The data I got from the bnlearn package in R and then uploaded it my google drive. The data

The picture below shows ... I believe this is showing missing columns. How do I fix the code to display the correct information?

enter image description here

from pgmpy.models import BayesianModel
model = BayesianModel([('Antilock', 'Accident'), ('DrivingSkill', 'DrivQuality'), ('DrivQuality', 'Accident')])
# Maximum Likelihood Estimation
from pgmpy.estimators import MaximumLikelihoodEstimator
mle = MaximumLikelihoodEstimator(model, df)
# Pour toutes les variables :
model.fit(df, estimator=MaximumLikelihoodEstimator)
for cpd in model.get_cpds(): print(cpd)

Note1: code to get the data from R

data(insurance)
write.csv(insurance,"C:/Users/Administrator/OneDrive/University of London/AI/Assignment 1/insurance.csv")

Note2: if you are running this in colab you will need to install the package

!pip install pgmpy

2 Answers

  1. Open file "pgmpy/factors/discrete/CPD.py"

  1. In class "TabularCPD(DiscreteFactor)",

    fine the line "cdf_str = self._truncate_strtable(cdf_str)"

    (This line is in "def _make_table_str (~)")


  1. cdf_str = self._truncate_strtable(cdf_str)

    make this line deactivate by add "#" --> # cdf_str = self._truncate_strtable(cdf_str)

2

A less invasive variation of Jung Ah Lee's answer:

from pgmpy.factors.discrete.CPD import TabularCPD
def print_full(cpd): backup = TabularCPD._truncate_strtable TabularCPD._truncate_strtable = lambda self, x: x print(cpd) TabularCPD._truncate_strtable = backup

The print_full(cpd) function reassigns TabularCPD._truncate_strtable to return its input, prints the non-truncated CPD table string, and resets TabularCPD._truncate_strtable to the original function.

Replacing the print(cpd) call with print_full(cpd) in your for loop will print the full CPDs.


I guess it's also possible to mess with the terminal size, since _truncate_strtable makes use of the shutil.get_terminal_size function. Posts that might help with that:

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

You Might Also Like