我正在努力让基于贝叶斯网络的保险数据表示中的示例开始工作。参见最大似然估计一节。我从R中的bnlearn软件包获得的数据,然后上传到我的谷歌驱动器。数据
下图显示..。我相信这显示的是缺失的列。如何修复代码以显示正确的信息?

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:从R获取数据的代码
data(insurance)
write.csv(insurance,"C:/Users/Administrator/OneDrive/University of London/AI/Assignment 1/insurance.csv")Note2:如果您正在colab中运行此程序,则需要安装该软件包
!pip install pgmpy发布于 2022-06-21 07:14:30
发布于 2022-11-07 17:45:10
一种较小的荣阿丽的答案侵袭性变异
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 = backupprint_full(cpd)函数重新分配TabularCPD._truncate_strtable以返回其输入,打印非截断的CPD表字符串,并将TabularCPD._truncate_strtable重置为原始函数。
在for循环中将print(cpd)调用替换为print_full(cpd)将打印完整的CPD。
我想也有可能处理终端大小,因为_truncate_strtable使用了shutil.get_terminal_size函数。在这方面可能有帮助的帖子:
https://stackoverflow.com/questions/70625490
复制相似问题