hedtorresca commited on
Commit
29309e0
verified
1 Parent(s): 2568eea

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +50 -2
app.py CHANGED
@@ -11,7 +11,7 @@ def bayes_two_events(prior_A, prob_B_given_A, prob_B_given_notA):
11
  posterior_A_given_B = (prob_B_given_A * prior_A) / prob_B
12
  return posterior_A_given_B, prob_B
13
 
14
- # Funci贸n para crear el diagrama de Venn
15
  def plot_venn(prior_A, prob_B_given_A, prob_B_given_notA):
16
  # Calculamos las 谩reas relativas del diagrama de Venn
17
  area_A = prior_A
@@ -31,7 +31,41 @@ def bayes_app_two_events(prior_A, prob_B_given_A, prob_B_given_notA):
31
  # Retornar el diagrama de Venn y los resultados
32
  return fig_venn, f"P(B): {prob_B:.4f}", f"P(A|B): {posterior_A_given_B:.4f}"
33
 
34
- # Crear la interfaz de Gradio
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
35
  with gr.Blocks() as demo:
36
  with gr.Tab("Dos Eventos"):
37
  gr.Markdown("## Calculadora del Teorema de Bayes con Diagrama de Venn")
@@ -48,4 +82,18 @@ with gr.Blocks() as demo:
48
  btn = gr.Button("Calcular")
49
  btn.click(fn=bayes_app_two_events, inputs=[prior_A, prob_B_given_A, prob_B_given_notA], outputs=[venn_plot, prob_B, prob_A_given_B])
50
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
51
  demo.launch()
 
11
  posterior_A_given_B = (prob_B_given_A * prior_A) / prob_B
12
  return posterior_A_given_B, prob_B
13
 
14
+ # Funci贸n para crear el diagrama de Venn para dos eventos
15
  def plot_venn(prior_A, prob_B_given_A, prob_B_given_notA):
16
  # Calculamos las 谩reas relativas del diagrama de Venn
17
  area_A = prior_A
 
31
  # Retornar el diagrama de Venn y los resultados
32
  return fig_venn, f"P(B): {prob_B:.4f}", f"P(A|B): {posterior_A_given_B:.4f}"
33
 
34
+ # Funci贸n para m煤ltiples eventos
35
+ def bayes_multiple_events(priors, likelihoods):
36
+ priors = np.array(priors)
37
+ likelihoods = np.array(likelihoods)
38
+
39
+ # Calculamos P(B) usando la regla de la probabilidad total
40
+ prob_B = np.sum(priors * likelihoods)
41
+
42
+ # Calculamos las probabilidades posteriores P(Ai|B) para cada evento Ai
43
+ posteriors = (priors * likelihoods) / prob_B
44
+ return posteriors, prob_B
45
+
46
+ # Funci贸n para crear gr谩ficos de barras para m煤ltiples eventos
47
+ def plot_results_multiple_events(priors, likelihoods, posteriors):
48
+ events = [f'A{i+1}' for i in range(len(priors))]
49
+
50
+ fig, ax = plt.subplots()
51
+ ax.bar(events, posteriors, color='purple')
52
+ ax.set_ylabel('Probabilidad Posterior')
53
+ ax.set_title('Resultados del Teorema de Bayes para M煤ltiples Eventos')
54
+
55
+ return fig
56
+
57
+ # Funci贸n principal para m煤ltiples eventos
58
+ def bayes_app_multiple_events(priors, likelihoods):
59
+ priors = list(map(float, priors.split(',')))
60
+ likelihoods = list(map(float, likelihoods.split(',')))
61
+
62
+ posteriors, prob_B = bayes_multiple_events(priors, likelihoods)
63
+ fig = plot_results_multiple_events(priors, likelihoods, posteriors)
64
+
65
+ resultados = "\n".join([f"P(A{i+1}|B): {posterior:.4f}" for i, posterior in enumerate(posteriors)])
66
+ return fig, f"P(B): {prob_B:.4f}", resultados
67
+
68
+ # Crear la interfaz de Gradio con dos pesta帽as
69
  with gr.Blocks() as demo:
70
  with gr.Tab("Dos Eventos"):
71
  gr.Markdown("## Calculadora del Teorema de Bayes con Diagrama de Venn")
 
82
  btn = gr.Button("Calcular")
83
  btn.click(fn=bayes_app_two_events, inputs=[prior_A, prob_B_given_A, prob_B_given_notA], outputs=[venn_plot, prob_B, prob_A_given_B])
84
 
85
+ with gr.Tab("M煤ltiples Eventos"):
86
+ gr.Markdown("## Calculadora del Teorema de Bayes para M煤ltiples Eventos")
87
+ gr.Markdown("Introduce las probabilidades de los eventos iniciales (Priors) y las probabilidades condicionales de B dado cada evento (Likelihoods) separadas por comas. Ejemplo: '0.2, 0.3, 0.5' para tres eventos.")
88
+
89
+ priors_input = gr.Textbox(label="Priors (Probabilidades Iniciales)", placeholder="Ejemplo: 0.2, 0.3, 0.5")
90
+ likelihoods_input = gr.Textbox(label="Likelihoods (Probabilidades Condicionales de B dado cada evento)", placeholder="Ejemplo: 0.6, 0.7, 0.4")
91
+
92
+ plot_multi = gr.Plot()
93
+ prob_B_multi = gr.Textbox(label="Probabilidad de B (P(B))")
94
+ posteriors = gr.Textbox(label="Probabilidades Posteriores")
95
+
96
+ btn_multi = gr.Button("Calcular")
97
+ btn_multi.click(fn=bayes_app_multiple_events, inputs=[priors_input, likelihoods_input], outputs=[plot_multi, prob_B_multi, posteriors])
98
+
99
  demo.launch()