252106862eder commited on
Commit
87eea9d
·
verified ·
1 Parent(s): 547be3f

Update model_utils.py

Browse files
Files changed (1) hide show
  1. model_utils.py +20 -10
model_utils.py CHANGED
@@ -247,6 +247,9 @@ class ChurnModelPipeline:
247
 
248
  # --- 1. Simulação Rápida (Última Previsão Interativa ou Exemplo) ---
249
  sample_customer_df = None
 
 
 
250
  if last_interactive_input_df is not None and not last_interactive_input_df.empty:
251
  sample_customer_df = last_interactive_input_df
252
  elif self.X_test is not None and not self.X_test.empty:
@@ -375,32 +378,39 @@ class ChurnModelPipeline:
375
  latex_story.append(NoEscape(r'\textbf{Características do Cliente "Simulado":}\n'))
376
  latex_story.append(NoEscape(sample_display_df.to_latex(index=False, caption='Características do Cliente Simulado', label='tab:sim_customer_example', longtable=False)))
377
 
 
 
 
 
 
378
  markdown_story.append("**Passos do Cálculo para o Cliente 'Simulado':**\n")
379
- markdown_story.append(f"1. **Calcular o Logit (L):** O Logit é a soma ponderada de todas as características do cliente (já processadas pelo pré-processador do modelo) multiplicadas por seus respectivos coeficientes, mais o intercepto do modelo. Para o cliente simulado, o modelo calculou um Logit de:\n`L = {logit_sample:.4f}`\n")
380
 
381
  # LaTeX for Logit calculation
382
  latex_story.append(NoEscape(r'\textbf{Passos do Cálculo para o Cliente "Simulado":}\n'))
383
  latex_story.append(NoEscape(r'\begin{enumerate}'))
384
  latex_story.append(NoEscape(fr'\item \textbf{{Calcular o Logit (L):}} O Logit é a soma ponderada de todas as características do cliente (já processadas pelo pré-processador do modelo) multiplicadas por seus respectivos coeficientes, mais o intercepto do modelo. Para o cliente simulado, o modelo calculou um Logit de:'))
385
- latex_story.append(Math(data=[NoEscape(fr'L = {logit_sample:.4f}')]))
386
 
387
- markdown_story.append(f"2. **Calcular a Probabilidade de Churn (P) usando a função Sigmoide:** A probabilidade é obtida aplicando-se a função sigmoide ao valor de `L`:\n`P(Churn) = 1 / (1 + e^(-L))`\n`P(Churn) = 1 / (1 + e^(-({logit_sample:.4f})))`\n`P(Churn) = 1 / (1 + e^{{-{logit_sample:.4f}}})`\n`P(Churn) ≈ {prob_sample:.4f}`\n")
388
 
389
  # LaTeX for Probability calculation
390
  latex_story.append(NoEscape(r'\item \textbf{Calcular a Probabilidade de Churn (P) usando a função Sigmoide:} A probabilidade é obtida aplicando-se a função sigmoide ao valor de $L$:'))
391
  latex_story.append(Math(data=[NoEscape(r'P(\text{Churn}) = \frac{1}{1 + e^{-L}}')]))
392
- latex_story.append(Math(data=[NoEscape(fr'P(\text{Churn}) = \frac{1}{1 + e^{{-({logit_sample:.4f})}}}')]))
393
- latex_story.append(Math(data=[NoEscape(fr'P(\text{Churn}) = \frac{1}{1 + e^{{-{logit_sample:.4f}}}}}')]))
394
- latex_story.append(Math(data=[NoEscape(fr'P(\text{Churn}) \approx {prob_sample:.4f}')]))
 
 
395
  latex_story.append(NoEscape(r'\end{enumerate}\n'))
396
 
397
  markdown_story.append(f"**Resultado da Simulação para o Cliente 'Simulado':**\n")
398
- markdown_story.append(f"A probabilidade de Churn para este cliente específico é de **{prob_sample:.4f}**, ou seja, **{prob_sample:.2%}**.\n")
399
- markdown_story.append(f"Este resultado indica que o cliente possui uma probabilidade de churn de {prob_sample:.2%}, guiando a interpretação do risco.\n")
400
 
401
  latex_story.append(NoEscape(r'\textbf{Resultado da Simulação para o Cliente "Simulado":}\n'))
402
- latex_story.append(NoEscape(fr'A probabilidade de Churn para este cliente específico é de \textbf{{{prob_sample:.4f}}}, ou seja, \textbf{{{prob_sample:.2f}\%}}. '))
403
- latex_story.append(NoEscape(fr'Este resultado indica que o cliente possui uma probabilidade de churn de {prob_sample:.2f}\%, guiando a interpretação do risco.\n\n'))
404
  else:
405
  markdown_story.append("Não foi possível gerar o exemplo de simulação numérica, pois nenhum cliente simulado foi fornecido.\n")
406
  latex_story.append(NoEscape(r'Não foi possível gerar o exemplo de simulação numérica, pois nenhum cliente simulado foi fornecido.\n\n'))
 
247
 
248
  # --- 1. Simulação Rápida (Última Previsão Interativa ou Exemplo) ---
249
  sample_customer_df = None
250
+ logit_sample = 0.0 # Inicializar com valores padrão
251
+ prob_sample = 0.0
252
+
253
  if last_interactive_input_df is not None and not last_interactive_input_df.empty:
254
  sample_customer_df = last_interactive_input_df
255
  elif self.X_test is not None and not self.X_test.empty:
 
378
  latex_story.append(NoEscape(r'\textbf{Características do Cliente "Simulado":}\n'))
379
  latex_story.append(NoEscape(sample_display_df.to_latex(index=False, caption='Características do Cliente Simulado', label='tab:sim_customer_example', longtable=False)))
380
 
381
+ # Pré-formatar os valores antes de inseri-los nas f-strings LaTeX
382
+ logit_sample_formatted = f"{logit_sample:.4f}"
383
+ prob_sample_formatted = f"{prob_sample:.4f}"
384
+ prob_sample_percent_formatted = f"{prob_sample:.2%}" # Para exibição em percentual
385
+
386
  markdown_story.append("**Passos do Cálculo para o Cliente 'Simulado':**\n")
387
+ markdown_story.append(f"1. **Calcular o Logit (L):** O Logit é a soma ponderada de todas as características do cliente (já processadas pelo pré-processador do modelo) multiplicadas por seus respectivos coeficientes, mais o intercepto do modelo. Para o cliente simulado, o modelo calculou um Logit de:\n`L = {logit_sample_formatted}`\n")
388
 
389
  # LaTeX for Logit calculation
390
  latex_story.append(NoEscape(r'\textbf{Passos do Cálculo para o Cliente "Simulado":}\n'))
391
  latex_story.append(NoEscape(r'\begin{enumerate}'))
392
  latex_story.append(NoEscape(fr'\item \textbf{{Calcular o Logit (L):}} O Logit é a soma ponderada de todas as características do cliente (já processadas pelo pré-processador do modelo) multiplicadas por seus respectivos coeficientes, mais o intercepto do modelo. Para o cliente simulado, o modelo calculou um Logit de:'))
393
+ latex_story.append(Math(data=[NoEscape(fr'L = {logit_sample_formatted}')]))
394
 
395
+ markdown_story.append(f"2. **Calcular a Probabilidade de Churn (P) usando a função Sigmoide:** A probabilidade é obtida aplicando-se a função sigmoide ao valor de `L`:\n`P(Churn) = 1 / (1 + e^(-L))`\n`P(Churn) = 1 / (1 + e^(-({logit_sample_formatted})))`\n`P(Churn) = 1 / (1 + e^{{-{logit_sample_formatted}}})`\n`P(Churn) ≈ {prob_sample_formatted}`\n")
396
 
397
  # LaTeX for Probability calculation
398
  latex_story.append(NoEscape(r'\item \textbf{Calcular a Probabilidade de Churn (P) usando a função Sigmoide:} A probabilidade é obtida aplicando-se a função sigmoide ao valor de $L$:'))
399
  latex_story.append(Math(data=[NoEscape(r'P(\text{Churn}) = \frac{1}{1 + e^{-L}}')]))
400
+ # Linha 392 corrigida: usando logit_sample_formatted
401
+ latex_story.append(Math(data=[NoEscape(fr'P(\text{Churn}) = \frac{{1}}{{1 + e^{{-({logit_sample_formatted})}}}}')]))
402
+ # Próxima linha também corrigida
403
+ latex_story.append(Math(data=[NoEscape(fr'P(\text{Churn}) = \frac{{1}}{{1 + e^{{-{logit_sample_formatted}}}}}}')]))
404
+ latex_story.append(Math(data=[NoEscape(fr'P(\text{Churn}) \approx {prob_sample_formatted}')]))
405
  latex_story.append(NoEscape(r'\end{enumerate}\n'))
406
 
407
  markdown_story.append(f"**Resultado da Simulação para o Cliente 'Simulado':**\n")
408
+ markdown_story.append(f"A probabilidade de Churn para este cliente específico é de **{prob_sample_formatted}**, ou seja, **{prob_sample_percent_formatted}**.\n")
409
+ markdown_story.append(f"Este resultado indica que o cliente possui uma probabilidade de churn de {prob_sample_percent_formatted}, guiando a interpretação do risco.\n")
410
 
411
  latex_story.append(NoEscape(r'\textbf{Resultado da Simulação para o Cliente "Simulado":}\n'))
412
+ latex_story.append(NoEscape(fr'A probabilidade de Churn para este cliente específico é de \textbf{{{prob_sample_formatted}}}, ou seja, \textbf{{{prob_sample_percent_formatted}}}. '))
413
+ latex_story.append(NoEscape(fr'Este resultado indica que o cliente possui uma probabilidade de churn de {prob_sample_percent_formatted}, guiando a interpretação do risco.\n\n'))
414
  else:
415
  markdown_story.append("Não foi possível gerar o exemplo de simulação numérica, pois nenhum cliente simulado foi fornecido.\n")
416
  latex_story.append(NoEscape(r'Não foi possível gerar o exemplo de simulação numérica, pois nenhum cliente simulado foi fornecido.\n\n'))