Spaces:
Sleeping
Sleeping
Create app.py
Browse files
app.py
ADDED
@@ -0,0 +1,47 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import gradio as gr
|
2 |
+
import numpy as np
|
3 |
+
import matplotlib.pyplot as plt
|
4 |
+
|
5 |
+
# Funci贸n para calcular el teorema de Bayes
|
6 |
+
def bayes(prior_A, prob_B_given_A, prob_B_given_notA):
|
7 |
+
# Calculamos P(B) usando la regla de la probabilidad total
|
8 |
+
prob_B = prob_B_given_A * prior_A + prob_B_given_notA * (1 - prior_A)
|
9 |
+
# Calculamos P(A|B) usando el teorema de Bayes
|
10 |
+
posterior_A_given_B = (prob_B_given_A * prior_A) / prob_B
|
11 |
+
return posterior_A_given_B, prob_B
|
12 |
+
|
13 |
+
# Funci贸n para crear el gr谩fico de barras
|
14 |
+
def plot_results(prior_A, prob_B_given_A, prob_B_given_notA, posterior_A_given_B):
|
15 |
+
# Crear un gr谩fico de barras para las probabilidades
|
16 |
+
labels = ['P(A)', 'P(B|A)', 'P(B|卢A)', 'P(A|B)']
|
17 |
+
values = [prior_A, prob_B_given_A, prob_B_given_notA, posterior_A_given_B]
|
18 |
+
|
19 |
+
fig, ax = plt.subplots()
|
20 |
+
ax.bar(labels, values, color=['skyblue', 'orange', 'lightgreen', 'pink'])
|
21 |
+
ax.set_ylabel('Probabilidad')
|
22 |
+
ax.set_title('Resultados del Teorema de Bayes')
|
23 |
+
|
24 |
+
return fig
|
25 |
+
|
26 |
+
# Funci贸n principal que se utilizar谩 en la aplicaci贸n de Gradio
|
27 |
+
def bayes_app(prior_A: float, prob_B_given_A: float, prob_B_given_notA: float):
|
28 |
+
posterior_A_given_B, prob_B = bayes(prior_A, prob_B_given_A, prob_B_given_notA)
|
29 |
+
fig = plot_results(prior_A, prob_B_given_A, prob_B_given_notA, posterior_A_given_B)
|
30 |
+
|
31 |
+
# Guardar la figura como una imagen y devolver la tabla de resultados
|
32 |
+
return fig, f"P(B): {prob_B:.4f}", f"P(A|B): {posterior_A_given_B:.4f}"
|
33 |
+
|
34 |
+
# Crear la interfaz de Gradio
|
35 |
+
inputs = [
|
36 |
+
gr.inputs.Slider(0, 1, step=0.01, label="P(A) (Prior de A)"),
|
37 |
+
gr.inputs.Slider(0, 1, step=0.01, label="P(B|A)"),
|
38 |
+
gr.inputs.Slider(0, 1, step=0.01, label="P(B|卢A)")
|
39 |
+
]
|
40 |
+
|
41 |
+
outputs = [
|
42 |
+
gr.outputs.Plot(label="Gr谩fico de Resultados"),
|
43 |
+
gr.outputs.Textbox(label="P(B)"),
|
44 |
+
gr.outputs.Textbox(label="P(A|B)")
|
45 |
+
]
|
46 |
+
|
47 |
+
gr.Interface(fn=bayes_app, inputs=inputs, outputs=outputs, title="Calculadora del Teorema de Bayes", description="Calcula P(A|B) usando el Teorema de Bayes con probabilidades ingresadas.").launch()
|