Skip to content

Commit cff4cbe

Browse files
author
minjk-bl
committed
Fix AutoML
1 parent 3a81ca8 commit cff4cbe

File tree

4 files changed

+67
-31
lines changed

4 files changed

+67
-31
lines changed

data/m_ml/mlLibrary.js

Lines changed: 54 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -128,9 +128,10 @@ define([
128128
'prep-onehot': {
129129
name: 'OneHotEncoder',
130130
import: 'from sklearn.preprocessing import OneHotEncoder',
131-
code: 'OneHotEncoder()',
131+
code: 'OneHotEncoder(${handle_unknown}${etc})',
132132
options: [
133-
133+
{ name: 'handle_unknown', component: ['option_suggest'], usePair: true,
134+
options: ['error', 'ignore'], default: 'error' },
134135
]
135136
},
136137
'prep-label': {
@@ -144,74 +145,85 @@ define([
144145
'prep-ordinal': {
145146
name: 'OrdinalEncoder',
146147
import: 'from sklearn.preprocessing import OrdinalEncoder',
147-
code: 'OrdinalEncoder()',
148+
code: 'OrdinalEncoder(${handle_unknown}${unknown_values}${etc})',
148149
options: [
149-
150+
{ name: 'handle_unknown', component: ['option_suggest'], usePair: true,
151+
options: ['error', 'use_encoded_value'], default: 'error' },
152+
{ name: 'unknown_values', component: ['input'], usePair: true }
150153
]
151154
},
152155
'prep-target': {
153156
name: 'TargetEncoder',
154157
install: '!pip install category_encoders',
155158
import: 'from category_encoders.target_encoder import TargetEncoder',
156-
code: 'TargetEncoder()',
159+
code: 'TargetEncoder(${cols}${handle_missing}${handle_unknown}${smoothing}${etc})',
157160
options: [
158-
161+
{ name: 'cols', component: ['var_suggest', '1darr'], usePair: true },
162+
{ name: 'handle_missing', component: ['option_suggest'], usePair: true,
163+
options: ['error', 'return_nan', 'value'], default: 'value' },
164+
{ name: 'handle_unknown', component: ['option_suggest'], usePair: true,
165+
options: ['error', 'return_nan', 'value'], default: 'value' },
166+
{ name: 'smoothing', component: ['input_number'], default: 1.0, usePair: true }
159167
]
160168
},
161169
'prep-smote': {
162170
name: 'SMOTE',
163171
install: '!pip install imblearn',
164-
import: 'from imlearn.over_sampling import SMOTE',
165-
code: 'SMOTE()',
172+
import: 'from imblearn.over_sampling import SMOTE',
173+
code: 'SMOTE(${random_state}${k_neighbors}${etc})',
166174
options: [
167-
175+
{ name: 'random_state', component: ['input_number'], placeholder: '123', usePair: true },
176+
{ name: 'k_neighbors', component: ['input_number'], default: 5, usePair: true }
168177
]
169178
},
170179
/** Data Preparation - Scaling */
171180
'prep-standard': {
172181
name: 'StandardScaler',
173182
import: 'from sklearn.preprocessing import StandardScaler',
174-
code: 'StandardScaler()',
183+
code: 'StandardScaler(${with_mean}${with_std}${etc})',
175184
options: [
176-
185+
{ name: 'with_mean', component: ['bool_select'], default: 'True', usePair: true },
186+
{ name: 'with_std', component: ['bool_select'], default: 'True', usePair: true }
177187
]
178188
},
179189
'prep-robust': {
180190
name: 'RobustScaler',
181191
import: 'from sklearn.preprocessing import RobustScaler',
182-
code: 'RobustScaler()',
192+
code: 'RobustScaler(${with_centering}${with_scaling}${etc})',
183193
options: [
184-
194+
{ name: 'with_centering', component: ['bool_select'], default: 'True', usePair: true },
195+
{ name: 'with_scaling', component: ['bool_select'], default: 'True', usePair: true }
185196
]
186197
},
187198
'prep-minmax': {
188199
name: 'MinMaxScaler',
189200
import: 'from sklearn.preprocessing import MinMaxScaler',
190-
code: 'MinMaxScaler()',
201+
code: 'MinMaxScaler(${feature_range}${etc})',
191202
options: [
192-
203+
{ name: 'feature_range', component: ['input'], placeholder: '(min, max)', default: '(0, 1)', usePair: true }
193204
]
194205
},
195206
'prep-normalizer': {
196207
name: 'Normalizer',
197208
import: 'from sklearn.preprocessing import Normalizer',
198-
code: 'Normalizer()',
209+
code: 'Normalizer(${norm}${etc})',
199210
options: [
200-
211+
{ name: 'norm', component: ['option_suggest'], usePair: true,
212+
options: ['l1', 'l2', 'max'], default: 'l2' },
201213
]
202214
},
203215
'prep-func-trsfrm-log': {
204216
name: 'Log Scaling',
205217
import: 'from sklearn.preprocessing import FunctionTransformer',
206-
code: 'FunctionTransformer(np.log1p)',
218+
code: 'FunctionTransformer(np.log1p${etc})',
207219
options: [
208220

209221
]
210222
},
211223
'prep-func-trsfrm-exp': {
212224
name: 'Exponential Scaling',
213225
import: 'from sklearn.preprocessing import FunctionTransformer',
214-
code: 'FunctionTransformer(np.expm1)',
226+
code: 'FunctionTransformer(np.expm1${etc})',
215227
options: [
216228

217229
]
@@ -220,7 +232,7 @@ define([
220232
'ln-rgs': {
221233
name: 'LinearRegression',
222234
import: 'from sklearn.linear_model import LinearRegression',
223-
code: 'LinearRegression(${fit_intercept})',
235+
code: 'LinearRegression(${fit_intercept}${etc})',
224236
options: [
225237
{ name: 'fit_intercept', component: ['bool_select'], default: 'True', usePair: true }
226238
]
@@ -429,8 +441,19 @@ define([
429441
]
430442
},
431443
/** Auto ML */
444+
'auto-sklearn-rgs': {
445+
name: 'AutoSklearnRegressor (Linux only)',
446+
install: 'pip install auto-sklearn',
447+
import: 'from autosklearn import AutoSklearnRegressor',
448+
link: 'https://automl.github.io/auto-sklearn/master/api.html#regression',
449+
code: 'AutoSklearnRegressor(${etc})',
450+
options: [
451+
452+
]
453+
},
432454
'tpot-rgs': {
433455
name: 'TPOTRegressor',
456+
install: 'pip install tpot',
434457
import: 'from tpot import TPOTRegressor',
435458
code: 'TPOTRegressor(${generation}${population_size}${cv}${random_state}${etc})',
436459
options: [
@@ -440,8 +463,19 @@ define([
440463
{ name: 'random_state', component: ['input_number'], placeholder: '123', usePair: true }
441464
]
442465
},
466+
'auto-sklearn-clf': {
467+
name: 'AutoSklearnClassifier (Linux only)',
468+
install: 'pip install auto-sklearn',
469+
import: 'from autosklearn import AutoSklearnClassifier',
470+
link: 'https://automl.github.io/auto-sklearn/master/api.html#classification',
471+
code: 'AutoSklearnClassifier(${etc})',
472+
options: [
473+
474+
]
475+
},
443476
'tpot-clf': {
444477
name: 'TPOTClassifier',
478+
install: 'pip install tpot',
445479
import: 'from tpot import TPOTClassifier',
446480
code: 'TPOTClassifier(${generation}${population_size}${cv}${random_state}${etc})',
447481
options: [

js/com/com_generatorV2.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,8 @@ define([
3737
'col_select': 'Select Column',
3838
'textarea': 'Input textarea',
3939
'input_number': 'Input number',
40-
'input': 'Input text'
40+
'input_text': 'Input text',
41+
'input': 'Input value'
4142
}
4243

4344
const _VP_BOOL_OPTIONS = [

js/m_ml/AutoML.js

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -50,11 +50,8 @@ define([
5050
this.modelConfig = ML_LIBRARIES;
5151

5252
this.modelTypeList = {
53-
// 'Regression': ['ln-rgs', 'sv-rgs', 'dt-rgs', 'rf-rgs', 'gbm-rgs', 'xgb-rgs', 'lgbm-rgs', 'cb-rgs'],
54-
// 'Classfication': ['lg-rgs', 'sv-clf', 'dt-clf', 'rf-clf', 'gbm-clf', 'xgb-clf', 'lgbm-clf', 'cb-clf'],
55-
'Auto ML': ['tpot-rgs', 'tpot-clf'],
56-
// 'Clustering': ['k-means', 'agg-cls', 'gaus-mix', 'dbscan'],
57-
// 'Dimension Reduction': ['pca', 'lda', 'svd', 'nmf']
53+
'Regression': ['auto-sklearn-rgs', 'tpot-rgs'],
54+
'Classification': ['auto-sklearn-clf', 'tpot-clf']
5855
}
5956

6057

js/m_ml/DataPrep.js

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,13 @@ define([
1717
'vp_base/js/com/com_util',
1818
'vp_base/js/com/com_Const',
1919
'vp_base/js/com/com_String',
20+
'vp_base/js/com/com_interface',
2021
'vp_base/js/com/com_generatorV2',
2122
'vp_base/data/m_ml/mlLibrary',
2223
'vp_base/js/com/component/PopupComponent',
2324
'vp_base/js/com/component/VarSelector2',
2425
'vp_base/js/com/component/InstanceEditor'
25-
], function(msHtml, com_util, com_Const, com_String, com_generator, ML_LIBRARIES, PopupComponent, VarSelector2, InstanceEditor) {
26+
], function(msHtml, com_util, com_Const, com_String, com_interface, com_generator, ML_LIBRARIES, PopupComponent, VarSelector2, InstanceEditor) {
2627

2728
/**
2829
* DataPrep
@@ -222,10 +223,13 @@ define([
222223
let content = com_generator.renderContent(this, opt.component[0], opt, state);
223224
optBox.appendLine(content[0].outerHTML);
224225
});
225-
// render user option
226-
optBox.appendFormatLine('<label for="{0}">{1}</label>', 'userOption', 'User option');
227-
optBox.appendFormatLine('<input type="text" class="vp-input vp-state" id="{0}" placeholder="{1}" value="{2}"/>',
228-
'userOption', 'key=value, ...', this.state.userOption);
226+
// show user option
227+
if (config.code.includes('${etc}')) {
228+
// render user option
229+
optBox.appendFormatLine('<label for="{0}">{1}</label>', 'userOption', 'User option');
230+
optBox.appendFormatLine('<input type="text" class="vp-input vp-state" id="{0}" placeholder="{1}" value="{2}"/>',
231+
'userOption', 'key=value, ...', this.state.userOption);
232+
}
229233
return optBox.toString();
230234
}
231235

0 commit comments

Comments
 (0)