如何用Python训练带有石榴的贝叶斯网络?

问题描述 投票:0回答:1

我是Python编程的新手,我正在尝试训练贝叶斯网络。我创建了离散分布和条件概率表。

import math
from pomegranate import *
import pandas as pd
import csv
import numpy as np    

edad = DiscreteDistribution ({'Menos':0.7, 'Mas':0.3})
genero = DiscreteDistribution ({'Masculino':0.4, 'Femenino':0.6})
raza = DiscreteDistribution ({'Mestizo':0.4, 'Afrodescendiente':0.6})
antecedentes = DiscreteDistribution ({'Antecedentes':0.8,'NoAntecedentes':0.2})
ejercicio = DiscreteDistribution ({'Ejercicio':0.1,'NoEjercicio':0.9})
fuma = DiscreteDistribution ({'Fuma':0.7,'NoFuma':0.3})
alcohol = DiscreteDistribution ({'Alcohol':0.6,'NoAlcohol':0.4})
cronica = DiscreteDistribution ({'Cronica':0.6,'NoCronica':0.4})

sobrepeso = ConditionalProbabilityTable ([
['NoAlcohol','NoEjercicio','Sobrepeso', 0.7],
['NoAlcohol','NoEjercicio','NoSobrepeso',0.3],     
['NoAlcohol','Ejercicio','Sobrepeso',0.2],
['NoAlcohol','Ejercicio','NoSobrepeso',0.1],     
['Alcohol','NoEjercicio','Sobrepeso',0.7],
['Alcohol','NoEjercicio','NoSobrepeso',0.5],
['Alcohol','Ejercicio','Sobrepeso',0.6],
['Alcohol','Ejercicio','NoSobrepeso',0.2]],[alcohol,ejercicio])

presionArterial = ConditionalProbabilityTable ([

['Masculino','Fuma','NoCronica','Afrodescendiente','NoSobrepeso', 'Mayor', 0.5],
['Masculino','NoFuma','Cronica','Mestizo','Sobrepeso', 'Normal', 0.4],
['Masculino','NoFuma','Cronica','Mestizo','Sobrepeso', 'Mayor', 0.6],
['Masculino','NoFuma','NoCronica','Afrodescendiente','NoSobrepeso', 'Normal', 0.2],
['Masculino','NoFuma','NoCronica','Afrodescendiente','NoSobrepeso', 'Mayor', 0.3],
['Femenino','NoFuma','Cronica','Mestizo','NoSobrepeso', 'Mayor', 0.3],
['Femenino','NoFuma','Cronica','Afrodescendiente','Sobrepeso', 'Normal', 0.4],
['Femenino','NoFuma','Cronica','Afrodescendiente','Sobrepeso', 'Mayor', 0.5],
['Femenino','NoFuma','Cronica','Afrodescendiente','NoSobrepeso', 'Normal', 0.3],
['Femenino','NoFuma','Cronica','Afrodescendiente','NoSobrepeso', 'Mayor', 0.4],
['Femenino','NoFuma','NoCronica','Mestizo','Sobrepeso', 'Normal', 0.2],
[genero,fuma,cronica,raza,sobrepeso])

最后,我设置了要计算的节点

hipertension = ConditionalProbabilityTable ([
['NoAntecedentes','Menos','Normal','Si',0.2],
['NoAntecedentes','Menos','Normal', 'No',0.2],
['NoAntecedentes','Mas','Mayor', 'No',0.4],
['Antecedentes','Menos','Normal','Si',0.2],
['Antecedentes','Mas','Mayor','Si',0.6],
['Antecedentes','Mas','Mayor', 'No',0.6]],[antecedentes,edad,presionArterial])

我不知道如何训练贝叶斯网络。

python machine-learning bayesian-networks pomegranate
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.