Spaces:
Runtime error
Runtime error
Update app.py
Browse files
app.py
CHANGED
@@ -7,6 +7,7 @@ from numpyro.infer import MCMC, NUTS
|
|
7 |
from sklearn.datasets import make_regression
|
8 |
from jax import random
|
9 |
import streamlit as st
|
|
|
10 |
|
11 |
|
12 |
# Define the model
|
@@ -22,7 +23,7 @@ def run_linear_regression(X, y, alpha_prior, beta_prior, sigma_prior):
|
|
22 |
# Run MCMC
|
23 |
rng_key = random.PRNGKey(0)
|
24 |
nuts_kernel = NUTS(linear_regression)
|
25 |
-
mcmc = MCMC(nuts_kernel, num_warmup=
|
26 |
mcmc.run(rng_key, jnp.array(X), jnp.array(y), alpha_prior=alpha_prior, beta_prior=beta_prior, sigma_prior=sigma_prior)
|
27 |
|
28 |
mcmc.print_summary()
|
@@ -42,56 +43,49 @@ def run_linear_regression(X, y, alpha_prior, beta_prior, sigma_prior):
|
|
42 |
ax.legend(loc='upper left')
|
43 |
st.pyplot(fig)
|
44 |
|
45 |
-
|
46 |
# User Input
|
47 |
-
st.write("# Bayesian Linear Regression
|
48 |
-
alpha_prior_option = st.selectbox("Choose an option for alpha prior:", ["Normal", "Laplace", "Cauchy"])
|
49 |
-
beta_prior_option = st.selectbox("Choose an option for beta prior:", ["Normal", "Laplace", "Cauchy"])
|
50 |
-
sigma_prior_option = st.selectbox("Choose an option for sigma prior:", ["HalfNormal", "HalfCauchy"])
|
51 |
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
alpha_loc = st.slider("Select a location value for alpha", -10.0, 10.0, 0.0, 0.1)
|
67 |
-
alpha_scale = st.slider("Select a scale value for alpha", 0.0, 10.0, 1.0, 0.1)
|
68 |
-
alpha_prior = dist.Cauchy(alpha_loc, alpha_scale)
|
69 |
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
|
|
82 |
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
|
|
89 |
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
X = X.reshape(25)
|
94 |
|
95 |
-
|
96 |
-
run_linear_regression(X, y, alpha_prior, beta_prior, sigma_prior)
|
97 |
-
|
|
|
7 |
from sklearn.datasets import make_regression
|
8 |
from jax import random
|
9 |
import streamlit as st
|
10 |
+
import sympy as sp
|
11 |
|
12 |
|
13 |
# Define the model
|
|
|
23 |
# Run MCMC
|
24 |
rng_key = random.PRNGKey(0)
|
25 |
nuts_kernel = NUTS(linear_regression)
|
26 |
+
mcmc = MCMC(nuts_kernel, num_warmup=50, num_samples=1000)
|
27 |
mcmc.run(rng_key, jnp.array(X), jnp.array(y), alpha_prior=alpha_prior, beta_prior=beta_prior, sigma_prior=sigma_prior)
|
28 |
|
29 |
mcmc.print_summary()
|
|
|
43 |
ax.legend(loc='upper left')
|
44 |
st.pyplot(fig)
|
45 |
|
|
|
46 |
# User Input
|
47 |
+
st.write("# Bayesian Linear Regression")
|
|
|
|
|
|
|
48 |
|
49 |
+
st.write(f"### Y = \u03B1 + \u03B2X + \u03C3")
|
50 |
+
alpha_prior_option = st.selectbox("Choose an option for alpha prior:", ["Normal", "Laplace", "Cauchy"])
|
51 |
+
if alpha_prior_option == "Normal":
|
52 |
+
alpha_loc = st.slider("Select a mean value for alpha", -10.0, 10.0, 0.0, 0.1)
|
53 |
+
alpha_scale = st.slider("Select a standard deviation value for alpha", 0.0, 10.0, 1.0, 0.1)
|
54 |
+
alpha_prior = dist.Normal(alpha_loc, alpha_scale)
|
55 |
+
elif alpha_prior_option == "Laplace":
|
56 |
+
alpha_loc = st.slider("Select a mean value for alpha", -10.0, 10.0, 0.0, 0.1)
|
57 |
+
alpha_scale = st.slider("Select a scale value for alpha", 0.0, 10.0, 1.0, 0.1)
|
58 |
+
alpha_prior = dist.Laplace(alpha_loc, alpha_scale)
|
59 |
+
elif alpha_prior_option == "Cauchy":
|
60 |
+
alpha_loc = st.slider("Select a location value for alpha", -10.0, 10.0, 0.0, 0.1)
|
61 |
+
alpha_scale = st.slider("Select a scale value for alpha", 0.0, 10.0, 1.0, 0.1)
|
62 |
+
alpha_prior = dist.Cauchy(alpha_loc, alpha_scale)
|
|
|
|
|
|
|
63 |
|
64 |
+
beta_prior_option = st.selectbox("Choose an option for beta prior:", ["Normal", "Laplace", "Cauchy"])
|
65 |
+
if beta_prior_option == "Normal":
|
66 |
+
beta_loc = st.slider("Select a mean value for beta", -10.0, 10.0, 0.0, 0.1)
|
67 |
+
beta_scale = st.slider("Select a standard deviation value for beta", 0.0, 10.0, 1.0, 0.1)
|
68 |
+
beta_prior = dist.Normal(beta_loc, beta_scale)
|
69 |
+
elif beta_prior_option == "Laplace":
|
70 |
+
beta_loc = st.slider("Select a mean value for beta", -10.0, 10.0, 0.0, 0.1)
|
71 |
+
beta_scale = st.slider("Select a scale value for beta", 0.0, 10.0, 1.0, 0.1)
|
72 |
+
beta_prior = dist.Laplace(beta_loc, beta_scale)
|
73 |
+
elif beta_prior_option == "Cauchy":
|
74 |
+
beta_loc = st.slider("Select a location value for beta", -10.0, 10.0, 0.0, 0.1)
|
75 |
+
beta_scale = st.slider("Select a scale value for beta", 0.0, 10.0, 1.0, 0.1)
|
76 |
+
beta_prior = dist.Cauchy(beta_loc, beta_scale)
|
77 |
|
78 |
+
sigma_prior_option = st.selectbox("Choose an option for sigma prior:", ["HalfNormal", "HalfCauchy"])
|
79 |
+
if sigma_prior_option == "HalfNormal":
|
80 |
+
sigma_scale = st.slider("Select a scale value for sigma", 0.0, 10.0, 1.0, 0.1)
|
81 |
+
sigma_prior = dist.HalfNormal(sigma_scale)
|
82 |
+
elif sigma_prior_option == "HalfCauchy":
|
83 |
+
sigma_scale = st.slider("Select a scale value for sigma", 0.0, 10.0, 1.0, 0.1)
|
84 |
+
sigma_prior = dist.HalfCauchy(sigma_scale)
|
85 |
|
86 |
+
rng_key = random.PRNGKey(0)
|
87 |
+
X, y = make_regression(n_samples=50, n_features=1, noise=10.0, random_state=0)
|
88 |
+
X = X.reshape(50)
|
|
|
89 |
|
90 |
+
if alpha_prior and beta_prior and sigma_prior:
|
91 |
+
run_linear_regression(X, y, alpha_prior, beta_prior, sigma_prior)
|
|