Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Construção de um Modelo Probabilístico por meio da Análise de Comportamento de Clientes em Python

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

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

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)
1 resposta
solução!

Ei, Ricardo! Tudo bem?

Ótimo trabalho no modelo probabilístico! Você estruturou muito bem as dependências entre as variáveis e a implementação em Python com pgmpy ficou clean e funcional. Um ponto interessante é como você destacou a relação entre tempo no site e clique em promoções, isso é essencial para entender o comportamento do cliente e pode ser usado para otimizar campanhas de marketing.

Boa sorte com as próximas etapas! E qualquer dúvida, conte conosco.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!