brcprado commited on
Commit
7c53ece
·
1 Parent(s): 864855b

Upload 2 files

Browse files
Files changed (2) hide show
  1. app.py +230 -0
  2. requirements.txt +6 -0
app.py ADDED
@@ -0,0 +1,230 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import numpy as np
2
+ from sklearn.linear_model import LinearRegression
3
+ import gradio as gr
4
+ from sklearn.model_selection import train_test_split
5
+ from sklearn.ensemble import AdaBoostRegressor, ExtraTreesRegressor
6
+ import pandas as pd
7
+ from sklearn.tree import DecisionTreeRegressor, ExtraTreeRegressor
8
+ from xgboost import XGBRegressor
9
+ from sklearn.metrics import r2_score
10
+ from catboost import CatBoostRegressor
11
+ from sklearn.ensemble import RandomForestRegressor
12
+ from sklearn.metrics import r2_score
13
+ import random
14
+
15
+ logger = gr.SimpleCSVLogger()
16
+
17
+ # set all random seeds to 42
18
+ random.seed(42)
19
+ np.random.seed(42)
20
+
21
+ def AdaBoostRegressorR2(x_file_obj,y_file_obj,learning_rate, n_estimators, loss, base_estimator, test_size,random_seed):
22
+
23
+ if base_estimator == "DecisionTreeRegressor":
24
+ base_estimator = DecisionTreeRegressor()
25
+ elif base_estimator == "XGBoost":
26
+ base_estimator = XGBRegressor()
27
+ elif base_estimator == "RandomForestRegressor":
28
+ base_estimator = RandomForestRegressor()
29
+ elif base_estimator == "CatBoostRegressor":
30
+ base_estimator = CatBoostRegressor()
31
+ elif base_estimator == "LinearRegression":
32
+ base_estimator = LinearRegression()
33
+ elif base_estimator == "ExtraTreeRegressor":
34
+ base_estimator = ExtraTreeRegressor()
35
+ elif base_estimator == "None":
36
+ base_estimator = None
37
+
38
+ X = pd.read_csv(x_file_obj.name,dtype=str)
39
+ y = pd.read_csv(y_file_obj.name,dtype=str)
40
+ y = y.values.ravel()
41
+
42
+ x_train, x_test, y_train, y_test = train_test_split(X, y, test_size=test_size, random_state=random_seed)
43
+ model = AdaBoostRegressor(learning_rate=learning_rate, n_estimators=n_estimators, loss=loss,base_estimator=base_estimator,random_state=random_seed)
44
+ model.fit(x_train, y_train)
45
+ predictions = model.predict(x_test)
46
+ return r2_score(y_test, predictions)
47
+
48
+
49
+
50
+ adaInterface = gr.Interface(
51
+ AdaBoostRegressorR2,
52
+ [
53
+ gr.components.File(label="X File (CSV)"),
54
+ gr.components.File(label="Y File (CSV)"),
55
+ gr.components.Slider(0.1, 1, default=0.1, label="learning_rate"),
56
+ gr.components.Slider(0, 1000, default=10, label="n_estimators"),
57
+ gr.components.Dropdown(["linear", "square", "exponential"], label="loss"),
58
+ gr.components.Dropdown(["DecisionTreeRegressor","XGBoost","RandomForestRegressor","CatBoostRegressor","LinearRegression","ExtraTreeRegressor","None"], label="base_estimator"),
59
+ gr.components.Slider(0.1, 0.9, default=0.2, label="test_size"),
60
+ gr.components.Slider(0, 100, default=42, label="random_seed")
61
+ ],
62
+ outputs="number",
63
+ title="AdaBoostRegressor",
64
+ description="Treino de um modelo de regressão com AdaBoostRegressor",
65
+ allow_flagging="manual"
66
+ )
67
+
68
+
69
+ def CatBoostRegressorR2(x_file_obj,y_file_obj,learning_rate, n_estimators, loss, max_depth, max_bin, l2_leaf_reg, test_size,random_seed):
70
+
71
+ X = pd.read_csv(x_file_obj.name,dtype=str)
72
+ y = pd.read_csv(y_file_obj.name,dtype=str)
73
+ y = y.values.ravel()
74
+
75
+ x_train, x_test, y_train, y_test = train_test_split(X, y, test_size=test_size, random_state=random_seed)
76
+ model = CatBoostRegressor(learning_rate=learning_rate, n_estimators=n_estimators, loss_function=loss,max_depth=max_depth,
77
+ max_bin=max_bin,l2_leaf_reg=l2_leaf_reg ,random_state=random_seed)
78
+ model.fit(x_train, y_train)
79
+ predictions = model.predict(x_test)
80
+ return r2_score(y_test, predictions)
81
+
82
+ catInterface = gr.Interface(
83
+ CatBoostRegressorR2,
84
+ [
85
+ gr.components.File(label="X File (CSV)"),
86
+ gr.components.File(label="Y File (CSV)"),
87
+ gr.components.Slider(0.1, 1, default=0.1, label="learning_rate"),
88
+ gr.components.Slider(0, 1000, default=10, label="n_estimators"),
89
+ gr.components.Dropdown(["RMSE", "MAE", "Quantile:alpha=0.9", "LogLinQuantile:alpha=0.9", "Poisson", "MAPE", "MultiRMSE","Quantile", "LogLinQuantile", "Lq:q=1", "Lq:q=2"], label="loss"),
90
+ gr.components.Slider(0, 100, default=1, label="max_depth"),
91
+ gr.components.Slider(1, 255, default=255, label="max_bin"),
92
+ gr.components.Slider(0, 100, default=3, label="l2_leaf_reg"),
93
+ gr.components.Slider(0.1, 0.9, default=0.2, label="test_size"),
94
+ gr.components.Slider(0, 100, default=42, label="random_seed")
95
+ ],
96
+ outputs="number",
97
+ title="CatBoostRegressor",
98
+ description="Treino de um modelo de regressão com CatBoostRegressor",
99
+ allow_flagging="manual"
100
+ )
101
+
102
+
103
+ def RandomForestRegressorR2(x_file_obj,y_file_obj,n_estimators,
104
+ criterion, max_depth,min_samples_split,
105
+ min_samples_leaf,min_weight_fraction_leaf,max_features,max_leaf_nodes,min_impurity_decrease,bootstrap,n_jobs,test_size,random_seed):
106
+
107
+ max_depth = int(max_depth)
108
+
109
+
110
+ X = pd.read_csv(x_file_obj.name,dtype=str)
111
+ y = pd.read_csv(y_file_obj.name,dtype=str)
112
+ y = y.values.ravel()
113
+
114
+ x_train, x_test, y_train, y_test = train_test_split(X, y, test_size=test_size, random_state=random_seed)
115
+ model = RandomForestRegressor(n_estimators=n_estimators, criterion=criterion, max_depth=max_depth,
116
+ min_samples_split=min_samples_split,min_samples_leaf=min_samples_leaf,
117
+ min_weight_fraction_leaf=min_weight_fraction_leaf,max_features=max_features,max_leaf_nodes=max_leaf_nodes,
118
+ min_impurity_decrease=min_impurity_decrease,bootstrap=bootstrap,n_jobs=n_jobs,random_state=random_seed)
119
+ model.fit(x_train, y_train)
120
+ predictions = model.predict(x_test)
121
+ return r2_score(y_test, predictions)
122
+
123
+ randomForestInterface = gr.Interface(
124
+ RandomForestRegressorR2,
125
+ [
126
+ gr.components.File(label="X File (CSV)"),
127
+ gr.components.File(label="Y File (CSV)"),
128
+ gr.components.Slider(0, 1000, default=10, label="n_estimators"),
129
+ gr.components.Dropdown(["mse", "mae","poisson"], label="criterion",default="mse"),
130
+ gr.components.Slider(0, 100, default=1, label="max_depth"),
131
+ gr.components.Slider(0, 100, default=1, label="min_samples_split"),
132
+ gr.components.Slider(0, 100, default=1, label="min_samples_leaf"),
133
+ gr.components.Slider(0, 0.5, default=0, label="min_weight_fraction_leaf"),
134
+ gr.components.Dropdown(["auto", "sqrt", "log2"], label="max_features",default="auto"),
135
+ gr.components.Slider(0, 100, default=1, label="max_leaf_nodes"),
136
+ gr.components.Slider(0, 1, default=0, label="min_impurity_decrease"),
137
+ gr.components.Dropdown(["True", "False"], label="bootstrap",default="True"),
138
+ gr.components.Dropdown([i for i in range(-1,5,1)], default=-1, label="n_jobs"),
139
+ gr.components.Slider(0.1, 0.9, default=0.2, label="test_size"),
140
+ gr.components.Slider(0, 100, default=42, label="random_seed")
141
+
142
+ ],
143
+ outputs="number",
144
+ title="RandomForestRegressor",
145
+ description="Treino de um modelo de regressão com RandomForestRegressor",
146
+ allow_flagging="manual"
147
+ )
148
+
149
+ # TODO - Add more parameters EXTRA TREE
150
+
151
+
152
+ def ExtraTreesRegressorR2(x_file_obj,y_file_obj,n_estimators,
153
+ criterion, max_depth,min_samples_split,
154
+ min_samples_leaf,min_weight_fraction_leaf,max_features,max_leaf_nodes,min_impurity_decrease,bootstrap,n_jobs,test_size,random_seed):
155
+
156
+ max_depth = int(max_depth)
157
+
158
+
159
+ X = pd.read_csv(x_file_obj.name,dtype=str)
160
+ y = pd.read_csv(y_file_obj.name,dtype=str)
161
+ y = y.values.ravel()
162
+
163
+ x_train, x_test, y_train, y_test = train_test_split(X, y, test_size=test_size, random_state=random_seed)
164
+ model = ExtraTreesRegressor(n_estimators=n_estimators, criterion=criterion, max_depth=max_depth,
165
+ min_samples_split=min_samples_split,min_samples_leaf=min_samples_leaf,
166
+ min_weight_fraction_leaf=min_weight_fraction_leaf,max_features=max_features,max_leaf_nodes=max_leaf_nodes,
167
+ min_impurity_decrease=min_impurity_decrease,bootstrap=bootstrap,n_jobs=n_jobs,random_state=random_seed)
168
+ model.fit(x_train, y_train)
169
+ predictions = model.predict(x_test)
170
+ return r2_score(y_test, predictions)
171
+
172
+ extraTreesInterface = gr.Interface(
173
+ ExtraTreesRegressorR2,
174
+ [
175
+ gr.components.File(label="X File (CSV)"),
176
+ gr.components.File(label="Y File (CSV)"),
177
+ gr.components.Slider(0, 1000, default=10, label="n_estimators"),
178
+ gr.components.Dropdown(["mse", "mae","poisson"], label="criterion",default="mse"),
179
+ gr.components.Slider(0, 100, default=1, label="max_depth"),
180
+ gr.components.Slider(0, 100, default=1, label="min_samples_split"),
181
+ gr.components.Slider(0, 100, default=1, label="min_samples_leaf"),
182
+ gr.components.Slider(0, 0.5, default=0, label="min_weight_fraction_leaf"),
183
+ gr.components.Dropdown(["auto", "sqrt", "log2"], label="max_features",default="auto"),
184
+ gr.components.Slider(0, 100, default=1, label="max_leaf_nodes"),
185
+ gr.components.Slider(0, 1, default=0, label="min_impurity_decrease"),
186
+ gr.components.Dropdown(["True", "False"], label="bootstrap",default="True"),
187
+ gr.components.Dropdown([i for i in range(-1,5,1)], default=-1, label="n_jobs"),
188
+ gr.components.Slider(0.1, 0.9, default=0.2, label="test_size"),
189
+ gr.components.Slider(0, 100, default=42, label="random_seed")
190
+ ],
191
+ outputs="number",
192
+ title="ExtraTreesRegressor",
193
+ description="Treino de um modelo de regressão com ExtraTreesRegressor",
194
+ allow_flagging="manual"
195
+ )
196
+
197
+ def linearRegressionR2(x_file_obj,y_file_obj,fit_intercept, normalize, copy_X):
198
+
199
+ X = pd.read_csv(x_file_obj.name,dtype=str)
200
+ y = pd.read_csv(y_file_obj.name,dtype=str)
201
+ y = y.values.ravel()
202
+
203
+ x_train, x_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
204
+ model = LinearRegression(fit_intercept=fit_intercept, normalize=normalize, copy_X=copy_X)
205
+ model.fit(x_train, y_train)
206
+ predictions = model.predict(x_test)
207
+ return r2_score(y_test, predictions)
208
+
209
+ linearRegressionInterface = gr.Interface(
210
+ linearRegressionR2,
211
+ [
212
+ gr.components.File(label="X File (CSV)"),
213
+ gr.components.File(label="Y File (CSV)"),
214
+ gr.components.Checkbox(True, label="fit_intercept"),
215
+ gr.components.Checkbox(False, label="normalize"),
216
+ gr.components.Checkbox(True, label="copy_X"),
217
+
218
+ ],
219
+ outputs="number",
220
+ title="LinearRegression",
221
+ description="Treino de um modelo de regressão com LinearRegression",
222
+ allow_flagging="manual")
223
+
224
+ iface = gr.TabbedInterface([catInterface, adaInterface, randomForestInterface, extraTreesInterface, linearRegressionInterface],
225
+ ["CatBoostRegressor", "AdaBoostRegresssor","RandomForestRegressor", "ExtraTreesRegressor","LinearRegression"],theme="dark")
226
+ iface.launch(share=True, show_error=True)
227
+
228
+
229
+
230
+
requirements.txt ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ catboost==1.1
2
+ gradio==3.15.0
3
+ numpy==1.21.6
4
+ pandas==1.4.2
5
+ scikit_learn==1.2.0
6
+ xgboost==1.6.2