#Rede Bayesiana para Análise de Comportamento de Clientes
- Instalar bibliotecas
import sys
!{sys.executable} -m pip install pgmpy
- Importar bibliotecas
from pgmpy.models import BayesianNetwork
from pgmpy.factors.discrete import TabularCPD
from pgmpy.inference import VariableElimination
from pgmpy.models import DiscreteBayesianNetwork
- Definir a estrutura da Rede Bayesiana
model = DiscreteBayesianNetwork([
('HistoricoCompras', 'RealizarCompra'),
('TempoNoSite', 'RealizarCompra'),
('InteracaoPromocoes', 'RealizarCompra')
])
- Definir as Tabelas de Probabilidade Condicional (CPDs)
# CPD para HistoricoCompras (variável pai)
cpd_historico = TabularCPD(variable='HistoricoCompras', variable_card=2,
values=[[0.7], [0.3]], # P(Sim)=0.7, P(Nao)=0.3
state_names={'HistoricoCompras': ['Sim', 'Nao']})
# CPD para TempoNoSite (variável pai)
cpd_tempo = TabularCPD(variable='TempoNoSite', variable_card=2,
values=[[0.4], [0.6]], # P(Pouco)=0.4, P(Muito)=0.6
state_names={'TempoNoSite': ['Pouco', 'Muito']})
# CPD para InteracaoPromocoes (variável pai)
cpd_promocoes = TabularCPD(variable='InteracaoPromocoes', variable_card=2,
values=[[0.2], [0.8]], # P(Sim)=0.2, P(Nao)=0.8
state_names={'InteracaoPromocoes': ['Sim', 'Nao']})
cpd_compra = TabularCPD(variable='RealizarCompra', variable_card=2,
values=[
# P(RealizarCompra='Sim' | H, T, I)
[0.9, 0.7, 0.8, 0.5, 0.6, 0.3, 0.4, 0.1],
# P(RealizarCompra='Nao' | H, T, I)
[0.1, 0.3, 0.2, 0.5, 0.4, 0.7, 0.6, 0.9]
],
evidence=['HistoricoCompras', 'TempoNoSite', 'InteracaoPromocoes'],
evidence_card=[2, 2, 2],
state_names={'RealizarCompra': ['Sim', 'Nao'],
'HistoricoCompras': ['Sim', 'Nao'],
'TempoNoSite': ['Pouco', 'Muito'],
'InteracaoPromocoes': ['Sim', 'Nao']})
# Adicionar as CPDs ao modelo
model.add_cpds(cpd_historico, cpd_tempo, cpd_promocoes, cpd_compra)
# Verificar se o modelo é consistente
print("Modelo consistente:", model.check_model())
- Realizar Inferência
infer = VariableElimination(model)
# Exemplo 1: Cliente com histórico de compras, muito tempo no site, interagiu com promoções
prob_compra_ex1 = infer.query(variables=['RealizarCompra'],
evidence={'HistoricoCompras': 'Sim',
'TempoNoSite': 'Muito',
'InteracaoPromocoes': 'Sim'})
print("\nProbabilidade de compra (Histórico=Sim, Tempo=Muito, Promoções=Sim):")
print(prob_compra_ex1)
# Exemplo 2: Cliente sem histórico, pouco tempo no site, não interagiu com promoções
prob_compra_ex2 = infer.query(variables=['RealizarCompra'],
evidence={'HistoricoCompras': 'Nao',
'TempoNoSite': 'Pouco',
'InteracaoPromocoes': 'Nao'})
print("\nProbabilidade de compra (Histórico=Nao, Tempo=Pouco, Promoções=Nao):")
print(prob_compra_ex2)
# Exemplo 3: Cliente sem histórico, muito tempo no site, interagiu com promoções
prob_compra_ex3 = infer.query(variables=['RealizarCompra'],
evidence={'HistoricoCompras': 'Nao',
'TempoNoSite': 'Muito',
'InteracaoPromocoes': 'Sim'})
print("\nProbabilidade de compra (Histórico=Nao, Tempo=Muito, Promoções=Sim):")
print(prob_compra_ex3)