Para essa atividade, organizei a Rede Bayesiana separando as probabilidades individuais das variáveis de entrada (histórico, tempo no site e clique em promoção) da tabela de probabilidades condicionais que define a chance de compra para cada combinação possível dessas evidências.
# Probabilidades individuais das variáveis (priors)
prior_historico = {0: 0.7, 1: 0.3} # 0 = sem histórico, 1 = com histórico
prior_tempo_site = {0: 0.6, 1: 0.4} # 0 = pouco tempo, 1 = muito tempo
prior_promocao = {0: 0.8, 1: 0.2} # 0 = não clicou, 1 = clicou
# Tabela condicional: P(Compra | Histórico, Tempo, Promoção)
tabela_compra = {
(0, 0, 0): 0.1,
(0, 0, 1): 0.3,
(0, 1, 0): 0.2,
(0, 1, 1): 0.6,
(1, 0, 0): 0.4,
(1, 0, 1): 0.7,
(1, 1, 0): 0.8,
(1, 1, 1): 0.9,
}
def prob_de_compra(historico, tempo_site, clicou_promocao):
"""Retorna a probabilidade de compra e de não compra dado o perfil do cliente."""
chave = (historico, tempo_site, clicou_promocao)
p_compra = tabela_compra[chave]
return {"Comprar": p_compra, "Não comprar": 1 - p_compra}
# Cenário: cliente com histórico, pouco tempo no site e clicou na promoção
perfil_cliente = prob_de_compra(historico=1, tempo_site=0, clicou_promocao=1)
for evento, prob in perfil_cliente.items():
print(f"{evento}: {prob:.0%}")