Construção de um Modelo Probabilístico por meio da Análise de Comportamento de Clientes em Python
Por Ricardo Costa Val do Rosario e ChatGPT 4.0
TAREFA: Criar Modelo em Código Python com pgmpy
Abaixo está o código completo para construir o modelo probabilístico com as três variáveis:
HistóricoCompras, TempoNoSite, ClicouEmPromocao. Vamos assumir que ClicouEmPromocao depende de TempoNoSite,
enquanto as outras são independentes.
from pgmpy.models import BayesianModel
from pgmpy.factors.discrete import TabularCPD
from pgmpy.inference import VariableElimination
# 1. Definindo a estrutura do modelo (T -> P, H independente)
modelo = BayesianModel([('TempoNoSite', 'ClicouEmPromocao')])
# 2. Definindo as CPDs (Probabilidades condicionais)
cpd_hist_compra = TabularCPD(variable='HistoricoCompras',
variable_card=2,
values=[[0.7], [0.3]]) # 70% nunca compraram
cpd_tempo_site = TabularCPD(variable='TempoNoSite',
variable_card=2,
values=[[0.6], [0.4]]) # 60% pouco tempo
cpd_promo = TabularCPD(variable='ClicouEmPromocao',
variable_card=2,
evidence=['TempoNoSite'],
evidence_card=[2],
values=[[0.9, 0.5], # P=0: não clicou
[0.1, 0.5]]) # P=1: clicou
`# T=0 => P(1)=0.1; T=1 => P(1)=0.5`
# 3. Adicionando CPDs ao modelo
modelo.add_cpds(cpd_hist_compra, cpd_tempo_site, cpd_promo)
# 4. Verificando o modelo
assert modelo.check_model()
# 5. Inferência
inferencia = VariableElimination(modelo)
resultado = inferencia.query(variables=['ClicouEmPromocao'], evidence={'TempoNoSite': 1})
print(resultado)
from pgmpy.models import BayesianModel
from pgmpy.factors.discrete import TabularCPD
from pgmpy.inference import VariableElimination
# 1. Definindo a estrutura do modelo (T -> P, H independente)
modelo = BayesianModel([('TempoNoSite', 'ClicouEmPromocao')])
# 2. Definindo as CPDs (Probabilidades condicionais)
cpd_hist_compra = TabularCPD(variable='HistoricoCompras',
variable_card=2,
values=[[0.7], [0.3]]) # 70% nunca compraram
cpd_tempo_site = TabularCPD(variable='TempoNoSite',
variable_card=2,
values=[[0.6], [0.4]]) # 60% pouco tempo
cpd_promo = TabularCPD(variable='ClicouEmPromocao',
variable_card=2,
evidence=['TempoNoSite'],
evidence_card=[2],
values=[[0.9, 0.5], # P=0: não clicou
[0.1, 0.5]]) # P=1: clicou
# T=0 => P(1)=0.1; T=1 => P(1)=0.5
# 3. Adicionando CPDs ao modelo
modelo.add_cpds(cpd_hist_compra, cpd_tempo_site, cpd_promo)
# 4. Verificando o modelo
assert modelo.check_model()
# 5. Inferência
inferencia = VariableElimination(modelo)
resultado = inferencia.query(variables=['ClicouEmPromocao'], evidence={'TempoNoSite': 1})
print(resultado)