Spaces:
Build error
Build error
Update app.py
Browse files
app.py
CHANGED
|
@@ -39,7 +39,7 @@ MODELS = [
|
|
| 39 |
|
| 40 |
# ========================================
|
| 41 |
|
| 42 |
-
def create_plot(feature_string, n_estimators, model_idx):
|
| 43 |
np.random.seed(SEED)
|
| 44 |
|
| 45 |
feature_list = feature_string.split(',')
|
|
@@ -58,6 +58,10 @@ def create_plot(feature_string, n_estimators, model_idx):
|
|
| 58 |
|
| 59 |
model_name = MODEL_NAMES[model_idx]
|
| 60 |
model = MODELS[model_idx]
|
|
|
|
|
|
|
|
|
|
|
|
|
| 61 |
|
| 62 |
model.fit(X, y)
|
| 63 |
score = round(model.score(X, y), 3)
|
|
@@ -94,11 +98,23 @@ def iter_grid(n_rows, n_cols):
|
|
| 94 |
with gr.Column():
|
| 95 |
yield
|
| 96 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 97 |
with gr.Blocks() as demo:
|
|
|
|
| 98 |
selections = combinations(FEATURES, 2)
|
| 99 |
selections = [f'{s[0]}, {s[1]}' for s in selections]
|
| 100 |
dd = gr.Dropdown(selections, value=selections[0], interactive=True, label="Input features")
|
| 101 |
-
|
|
|
|
| 102 |
|
| 103 |
counter = 0
|
| 104 |
for _ in iter_grid(2, 2):
|
|
@@ -108,10 +124,11 @@ with gr.Blocks() as demo:
|
|
| 108 |
plot = gr.Plot(label=f'{MODEL_NAMES[counter]}')
|
| 109 |
fn = partial(create_plot, model_idx=counter)
|
| 110 |
|
| 111 |
-
dd.change(fn, inputs=[dd,
|
| 112 |
-
|
| 113 |
-
|
|
|
|
| 114 |
|
| 115 |
counter += 1
|
| 116 |
|
| 117 |
-
demo.launch()
|
|
|
|
| 39 |
|
| 40 |
# ========================================
|
| 41 |
|
| 42 |
+
def create_plot(feature_string, n_estimators, max_depth, model_idx):
|
| 43 |
np.random.seed(SEED)
|
| 44 |
|
| 45 |
feature_list = feature_string.split(',')
|
|
|
|
| 58 |
|
| 59 |
model_name = MODEL_NAMES[model_idx]
|
| 60 |
model = MODELS[model_idx]
|
| 61 |
+
|
| 62 |
+
if model_idx != 0: model.n_estimators = n_estimators
|
| 63 |
+
if model_idx != 3: model.max_depth = max_depth
|
| 64 |
+
if model_idx == 3: model.estimator.max_depth = max_depth
|
| 65 |
|
| 66 |
model.fit(X, y)
|
| 67 |
score = round(model.score(X, y), 3)
|
|
|
|
| 98 |
with gr.Column():
|
| 99 |
yield
|
| 100 |
|
| 101 |
+
info = '''
|
| 102 |
+
## Plot the decision surfaces of ensembles of trees on the Iris dataset
|
| 103 |
+
|
| 104 |
+
This plot compares the decision surfaces learned by a decision tree classifier, a random forest classifier, an extra-trees classifier, and by an AdaBoost classifier.
|
| 105 |
+
|
| 106 |
+
There are in total four features in the Iris dataset. In this example you can select two features at a time for visualization purposes using the dropdown box below.
|
| 107 |
+
|
| 108 |
+
You can also vary the number of estimators in the ensembles and the max depth of the trees using the sliders.
|
| 109 |
+
'''
|
| 110 |
+
|
| 111 |
with gr.Blocks() as demo:
|
| 112 |
+
gr.Markdown(info)
|
| 113 |
selections = combinations(FEATURES, 2)
|
| 114 |
selections = [f'{s[0]}, {s[1]}' for s in selections]
|
| 115 |
dd = gr.Dropdown(selections, value=selections[0], interactive=True, label="Input features")
|
| 116 |
+
slider_estimators = gr.Slider(1, 100, value=30, step=1, label='n_estimators')
|
| 117 |
+
slider_max_depth = gr.Slider(1, 50, value=10, step=1, label='max_depth')
|
| 118 |
|
| 119 |
counter = 0
|
| 120 |
for _ in iter_grid(2, 2):
|
|
|
|
| 124 |
plot = gr.Plot(label=f'{MODEL_NAMES[counter]}')
|
| 125 |
fn = partial(create_plot, model_idx=counter)
|
| 126 |
|
| 127 |
+
dd.change(fn, inputs=[dd, slider_estimators, slider_max_depth], outputs=[plot])
|
| 128 |
+
slider_estimators.change(fn, inputs=[dd, slider_estimators, slider_max_depth], outputs=[plot])
|
| 129 |
+
slider_max_depth.change(fn, inputs=[dd, slider_estimators, slider_max_depth], outputs=[plot])
|
| 130 |
+
demo.load(fn, inputs=[dd, slider_estimators, slider_max_depth], outputs=[plot])
|
| 131 |
|
| 132 |
counter += 1
|
| 133 |
|
| 134 |
+
demo.launch(share=True, debug=True)
|