haizad's picture
initial commit
ac34f15
raw
history blame
1.77 kB
import gradio as gr
import numpy as np
from sklearn.ensemble import AdaBoostRegressor
from sklearn.tree import DecisionTreeRegressor
import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
import seaborn as sns
def train_estimators(max_depth,n_estimators):
rng = np.random.RandomState(1)
X = np.linspace(0, 6, 100)[:, np.newaxis]
y = np.sin(X).ravel() + np.sin(6 * X).ravel() + rng.normal(0, 0.1, X.shape[0])
regr_1 = DecisionTreeRegressor(max_depth=4)
regr_2 = AdaBoostRegressor(
DecisionTreeRegressor(max_depth=max_depth), n_estimators=n_estimators, random_state=rng
)
regr_1.fit(X, y)
regr_2.fit(X, y)
y_1 = regr_1.predict(X)
y_2 = regr_2.predict(X)
colors = sns.color_palette("colorblind")
fig, ax = plt.subplots()
ax.scatter(X, y, color=colors[0], label="training samples")
ax.plot(X, y_1, color=colors[1], label="Decision tree (max_depth=4)", linewidth=2)
ax.plot(X, y_2, color=colors[2], label=f"Adaboost (max_depth={max_depth}, estimators={n_estimators})", linewidth=2)
ax.set_xlabel("data")
ax.set_ylabel("target")
ax.legend()
return fig
title = "Decision Tree Regression with AdaBoost"
with gr.Blocks(title=title) as demo:
gr.Markdown(f"## {title}")
gr.Markdown("This app demonstrates bosting of decision tree regressor using Adaboost")
max_depth = gr.Slider(minimum=1, maximum=50, step=1, label = "Maximum Depth")
n_estimators = gr.Slider(minimum=1, maximum=300, step=1, label = "Number of Estimators")
plot = gr.Plot(label=title)
n_estimators.change(fn=train_estimators, inputs=[max_depth,n_estimators], outputs=[plot])
max_depth.change(fn=train_estimators, inputs=[max_depth,n_estimators], outputs=[plot])
demo.launch()