eswardivi's picture
Create app.py
fe70d6c
raw
history blame
2.72 kB
import numpy as np
import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
import gradio as gr
from sklearn import datasets
from sklearn import linear_model
from sklearn.svm import l1_min_c
def train_it(solver, intersect_scaling, tol, max_iter):
iris = datasets.load_iris()
X = iris.data
y = iris.target
X = X[y != 2]
y = y[y != 2]
X /= X.max()
cs = l1_min_c(X, y, loss="log") * np.logspace(0, 7, 16)
clf = linear_model.LogisticRegression(
penalty="l1",
solver=solver,
tol=tol,
max_iter=int(max_iter),
warm_start=True,
intercept_scaling=intersect_scaling,
)
coefs_ = []
for c in cs:
clf.set_params(C=c)
clf.fit(X, y)
coefs_.append(clf.coef_.ravel().copy())
coefs_ = np.array(coefs_)
plt.plot(np.log10(cs), coefs_, marker="o")
ymin, ymax = plt.ylim()
plt.xlabel("log(C)")
plt.ylabel("Coefficients")
plt.title("Logistic Regression Path")
plt.axis("tight")
plt.show()
return plt
with gr.Blocks() as demo:
gr.Markdown("# Regularization path of L1- Logistic Regression")
gr.Markdown(
"""
This interactive demo is based on the [Regularization path of L1- Logistic Regression] (https://scikit-learn.org/stable/auto_examples/linear_model/plot_logistic_path.html).This demonstrates how to perform l1-penalized logistic regression on a binary classification problem derived from the Iris dataset. The regularization path plots the progression of the coefficients from exactly 0 to non-zero values as the regularization becomes progressively looser.
"""
)
with gr.Row():
with gr.Column():
solver = gr.Dropdown(
["liblinear", "saga"], label="Solver", value="liblinear"
)
warm_start = gr.Dropdown(
["True", "False"], label="Warm Start", value="True"
)
with gr.Column(align="center"):
intersect_scaling = gr.Slider(
value=10000.0,
minimum=0,
maximum=100000,
step=0.1,
label="Intersect Scaling",
)
tol = gr.Slider(
value=1e-6, minimum=0, maximum=1, step=0.1, label="Tolerance"
)
max_iter = gr.Slider(
value=1e6,
minimum=0,
maximum=1000000,
step=0.1,
label="Maximum Iterations",
)
train_buttion = gr.Button(label="Train")
train_buttion.click(
train_it, inputs=[solver, intersect_scaling, tol, max_iter], outputs=gr.Plot()
)
demo.launch()