Skip to content

Commit 54f862d

Browse files
author
minjk-bl
committed
Fix ML apps - add more options, fix load/save
1 parent 3c5b2a2 commit 54f862d

21 files changed

+362
-149
lines changed

data/m_ml/mlLibrary.js

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -275,7 +275,7 @@ define([
275275
code: 'SVR(${C}${kernel}${gamma}${random_state}${etc})',
276276
options: [
277277
{ name: 'C', component: ['input_number'], placeholder: '1.0', usePair: true },
278-
{ name: 'kernel', component: ['option_select'], default: 'rbf', type:'text', usePair: true,
278+
{ name: 'kernel', component: ['option_select'], type: 'text', default: 'rbf', type:'text', usePair: true,
279279
options: ['linear', 'poly', 'rbf', 'sigmoid', 'precomputed'] },
280280
{ name: 'gamma', component: ['option_suggest'], default: 'scale', type:'text', usePair: true,
281281
options: ['scale', 'auto'] },
@@ -287,7 +287,7 @@ define([
287287
import: 'from sklearn.tree import DecisionTreeRegressor',
288288
code: 'DecisionTreeRegressor(${criterion}${max_depth}${min_samples_split}${random_state}${etc})',
289289
options: [
290-
{ name: 'criterion', component: ['option_select'], default: 'squared_error', type:'text',
290+
{ name: 'criterion', component: ['option_select'], type: 'text', default: 'squared_error', type:'text',
291291
options: ['squared_error', 'friedman_mse', 'absolute_error', 'poisson'] },
292292
{ name: 'max_depth', component: ['input_number'], placeholder: 'None', usePair: true },
293293
{ name: 'min_samples_split', component: ['input_number'], default: 2, usePair: true },
@@ -300,7 +300,7 @@ define([
300300
code: 'RandomForestRegressor(${n_estimators}${criterion}${max_depth}${min_samples_split}${n_jobs}${random_state}${etc})',
301301
options: [
302302
{ name: 'n_estimators', component: ['input_number'], default: 100, usePair: true },
303-
{ name: 'criterion', component: ['option_select'], default: 'squared_error', type:'text', usePair: true,
303+
{ name: 'criterion', component: ['option_select'], type: 'text', default: 'squared_error', type:'text', usePair: true,
304304
options: ['squared_error', 'absolute_error', 'poisson'] },
305305
{ name: 'max_depth', component: ['input_number'], placeholder: 'None', usePair: true },
306306
{ name: 'min_samples_split', component: ['input_number'], default: 2, usePair: true },
@@ -313,11 +313,11 @@ define([
313313
import: 'from sklearn.ensemble import GradientBoostingRegressor',
314314
code: 'GradientBoostingRegressor(${loss}${learning_rate}${n_estimators}${criterion}${random_state}${etc})',
315315
options: [
316-
{ name: 'loss', component: ['option_select'], default: 'squared_error', type:'text', usePair: true,
316+
{ name: 'loss', component: ['option_select'], type: 'text', default: 'squared_error', type:'text', usePair: true,
317317
options: ['squared_error', 'absolute_error', 'huber', 'quantile'] },
318318
{ name: 'learning_rate', component: ['input_number'], default: 0.1, usePair: true },
319319
{ name: 'n_estimators', component: ['input_number'], default: 100, usePair: true },
320-
{ name: 'criterion', component: ['option_select'], default: 'friedman_mse', type:'text', usePair: true,
320+
{ name: 'criterion', component: ['option_select'], type: 'text', default: 'friedman_mse', type:'text', usePair: true,
321321
options: ['friedman_mse', 'squared_error', 'mse', 'mae'] },
322322
{ name: 'random_state', component: ['input_number'], placeholder: '123', usePair: true }
323323
]
@@ -341,7 +341,7 @@ define([
341341
import: 'from lightgbm import LGBMRegressor',
342342
code: 'LGBMRegressor(${boosting_type}${max_depth}${learning_rate}${n_estimators}${random_state}${etc})',
343343
options: [
344-
{ name: 'boosting_type', component: ['option_select'], default: 'gbdt', type: 'text', usePair: true,
344+
{ name: 'boosting_type', component: ['option_select'], type: 'text', default: 'gbdt', type: 'text', usePair: true,
345345
options: ['gbdt', 'dart', 'goss', 'rf']},
346346
{ name: 'max_depth', component: ['input_number'], placeholder: '-1', usePair: true },
347347
{ name: 'learning_rate', component: ['input_number'], default: 0.1, usePair: true },
@@ -356,9 +356,9 @@ define([
356356
code: 'CatBoostRegressor(${learning_rate}${loss_function}${task_type}${max_depth}${n_estimators}${random_state}${etc})',
357357
options: [
358358
{ name: 'learning_rate', component: ['input_number'], placeholder: 'None', usePair: true },
359-
{ name: 'loss_function', component: ['option_select'], default: 'RMSE', type:'text', usePair: true,
359+
{ name: 'loss_function', component: ['option_select'], type: 'text', default: 'RMSE', type:'text', usePair: true,
360360
options: ['RMSE', 'absolute_error', 'huber', 'quantile'] },
361-
{ name: 'task_type', component: ['option_select'], default: 'CPU', usePair: true,
361+
{ name: 'task_type', component: ['option_select'], type: 'text', default: 'CPU', usePair: true,
362362
options: ['CPU', 'GPU'] },
363363
{ name: 'max_depth', component: ['input_number'], placeholder: 'None', usePair: true },
364364
{ name: 'n_estimators', component: ['input_number'], placeholder: 'None', usePair: true },
@@ -371,7 +371,7 @@ define([
371371
import: 'from sklearn.linear_model import LogisticRegression',
372372
code: 'LogisticRegression(${penalty}${C}${random_state}${etc})',
373373
options: [
374-
{ name: 'penalty', component: ['option_select'], default: 'l2', usePair: true, options: ['l1', 'l2', 'elasticnet', 'none']},
374+
{ name: 'penalty', component: ['option_select'], type: 'text', default: 'l2', usePair: true, options: ['l1', 'l2', 'elasticnet', 'none']},
375375
{ name: 'C', component: ['input_number'], placeholder: '1.0', usePair: true },
376376
{ name: 'random_state', component: ['input_number'], placeholder: '123', usePair: true }
377377
]
@@ -406,7 +406,7 @@ define([
406406
code: 'SVC(${C}${kernel}${gamma}${random_state}${etc})',
407407
options: [
408408
{ name: 'C', component: ['input_number'], placeholder: '1.0', usePair: true },
409-
{ name: 'kernel', component: ['option_select'], usePair: true,
409+
{ name: 'kernel', component: ['option_select'], type: 'text', usePair: true,
410410
options: ['linear', 'poly', 'rbf', 'sigmoid', 'precomputed'], default: 'rbf' },
411411
{ name: 'gamma', component: ['option_suggest'], usePair: true,
412412
options: ['scale', 'auto'], default: 'scale' },
@@ -418,7 +418,7 @@ define([
418418
import: 'from sklearn.tree import DecisionTreeClassifier',
419419
code: 'DecisionTreeClassifier(${criterion}${max_depth}${min_samples_split}${random_state}${etc})',
420420
options: [
421-
{ name: 'criterion', component: ['option_select'], default: 'squared_error', type:'text',
421+
{ name: 'criterion', component: ['option_select'], type: 'text', default: 'squared_error', type:'text',
422422
options: ['squared_error', 'friedman_mse', 'absolute_error', 'poisson'], usePair: true },
423423
{ name: 'max_depth', component: ['input_number'], placeholder: 'None', usePair: true },
424424
{ name: 'min_samples_split', component: ['input_number'], default: 2, usePair: true },
@@ -431,7 +431,7 @@ define([
431431
code: 'RandomForestClassifier(${n_estimators}${criterion}${max_depth}${min_samples_split}${n_jobs}${random_state}${etc})',
432432
options: [
433433
{ name: 'n_estimators', component: ['input_number'], default: 100, usePair: true },
434-
{ name: 'criterion', component: ['option_select'], default: 'gini', type:'text', usePair: true,
434+
{ name: 'criterion', component: ['option_select'], type: 'text', default: 'gini', type:'text', usePair: true,
435435
options: ['gini', 'entropy'] },
436436
{ name: 'max_depth', component: ['input_number'], placeholder: 'None', usePair: true },
437437
{ name: 'min_samples_split', component: ['input_number'], default: 2, usePair: true },
@@ -444,11 +444,11 @@ define([
444444
import: 'from sklearn.ensemble import GradientBoostingClassifier',
445445
code: 'GradientBoostingClassifier(${loss}${learning_rate}${n_estimators}${criterion}${random_state}${etc})',
446446
options: [
447-
{ name: 'loss', component: ['option_select'], default: 'deviance', type: 'text', usePair: true,
447+
{ name: 'loss', component: ['option_select'], type: 'text', default: 'deviance', type: 'text', usePair: true,
448448
options: ['deviance', 'exponential'] },
449449
{ name: 'learning_rate', component: ['input_number'], default: 0.1, usePair: true },
450450
{ name: 'n_estimators', component: ['input_number'], default: 100, usePair: true },
451-
{ name: 'criterion', component: ['option_select'], default: 'friedman_mse', type:'text', usePair: true,
451+
{ name: 'criterion', component: ['option_select'], type: 'text', default: 'friedman_mse', type:'text', usePair: true,
452452
options: ['friedman_mse', 'squared_error', 'mse', 'mae'] },
453453
{ name: 'random_state', component: ['input_number'], placeholder: '123', usePair: true }
454454
]
@@ -472,7 +472,7 @@ define([
472472
import: 'from lightgbm import LGBMClassifier',
473473
code: 'LGBMClassifier(${boosting_type}${max_depth}${learning_rate}${n_estimators}${random_state}${etc})',
474474
options: [
475-
{ name: 'boosting_type', component: ['option_select'], default: 'gbdt', type: 'text', usePair: true,
475+
{ name: 'boosting_type', component: ['option_select'], type: 'text', default: 'gbdt', type: 'text', usePair: true,
476476
options: ['gbdt', 'dart', 'goss', 'rf']},
477477
{ name: 'max_depth', component: ['input_number'], placeholder: '-1', usePair: true },
478478
{ name: 'learning_rate', component: ['input_number'], default: 0.1, usePair: true },
@@ -487,9 +487,9 @@ define([
487487
code: 'CatBoostClassifier(${learning_rate}${loss_function}${task_type}${max_depth}${n_estimators}${random_state}${etc})',
488488
options: [
489489
{ name: 'learning_rate', component: ['input_number'], placeholder: 'None', usePair: true },
490-
{ name: 'loss_function', component: ['option_select'], default: 'RMSE', type:'text', usePair: true,
490+
{ name: 'loss_function', component: ['option_select'], type: 'text', default: 'RMSE', type:'text', usePair: true,
491491
options: ['RMSE', 'absolute_error', 'huber', 'quantile'] },
492-
{ name: 'task_type', component: ['option_select'], default: 'CPU', usePair: true,
492+
{ name: 'task_type', component: ['option_select'], type: 'text', default: 'CPU', usePair: true,
493493
options: ['CPU', 'GPU'] },
494494
{ name: 'max_depth', component: ['input_number'], placeholder: 'None', usePair: true },
495495
{ name: 'n_estimators', component: ['input_number'], placeholder: 'None', usePair: true },

html/m_ml/evaluation.html

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,15 @@
1818
</div>
1919
<div class="vp-grid-border-box">
2020
<label for="featureData" class="vp-orange-text">Evaluation Metrics</label>
21+
<div class="vp-grid-box vp-eval-box vp-eval-rgs">
22+
<!-- <input type="checkbox" id="coefficient" class="vp-state"><label for="coefficient">Coefficient</label> -->
23+
<!-- <input type="checkbox" id="intercept" class="vp-state"><label for="intercept">Intercept</label> -->
24+
<input type="checkbox" id="r_squared" class="vp-state" checked><label for="r_squared">R squared</label>
25+
<input type="checkbox" id="mae" class="vp-state"><label for="mae">Mean Absolute Error</label>
26+
<input type="checkbox" id="mape" class="vp-state"><label for="mape">Mean Absolute Percentage Error</label>
27+
<input type="checkbox" id="rmse" class="vp-state" checked><label for="rmse">Root Mean Squared Error</label>
28+
<input type="checkbox" id="scatter_plot" class="vp-state"><label for="scatter_plot">Scatter plot</label>
29+
</div>
2130
<div class="vp-grid-box vp-eval-box vp-eval-clf">
2231
<input type="checkbox" id="confusion_matrix" class="vp-state" checked><label for="confusion_matrix">Confusion Matrix</label>
2332
<input type="checkbox" id="report" class="vp-state" checked><label for="report">Report (Accuracy/Precision/Recall/F1-score)</label>
@@ -26,19 +35,14 @@
2635
<input type="checkbox" id="precision" class="vp-state"><label for="precision">Precision</label>
2736
<input type="checkbox" id="recall" class="vp-state"><label for="recall">Recall</label>
2837
<input type="checkbox" id="f1_score" class="vp-state"><label for="f1_score">F1-score</label>
29-
</div>
30-
<div class="vp-grid-box vp-eval-box vp-eval-rgs">
31-
<input type="checkbox" id="coefficient" class="vp-state"><label for="coefficient">Coefficient</label>
32-
<input type="checkbox" id="intercept" class="vp-state"><label for="intercept">Intercept</label>
33-
<input type="checkbox" id="r_squared" class="vp-state" checked><label for="r_squared">R squared</label>
34-
<input type="checkbox" id="mae" class="vp-state"><label for="mae">Mean Absolute Error</label>
35-
<input type="checkbox" id="mape" class="vp-state"><label for="mape">Mean Absolute Percentage Error</label>
36-
<input type="checkbox" id="rmse" class="vp-state" checked><label for="rmse">Root Mean Squared Error</label>
37-
<input type="checkbox" id="scatter_plot" class="vp-state"><label for="scatter_plot">Scatter plot</label>
38+
<input type="checkbox" id="roc_curve" class="vp-state" ><label for="roc_curve">ROC Curve</label>
39+
<input type="checkbox" id="auc" class="vp-state" ><label for="auc">AUC</label>
3840
</div>
3941
<div class="vp-grid-box vp-eval-box vp-eval-cls">
40-
<input type="checkbox" id="sizeOfClusters" class="vp-state" checked><label for="sizeOfClusters">Size of clusters</label>
42+
<!-- <input type="checkbox" id="sizeOfClusters" class="vp-state" checked><label for="sizeOfClusters">Size of clusters</label> -->
4143
<input type="checkbox" id="silhouetteScore" class="vp-state" checked><label for="silhouetteScore">Silhouette score</label>
44+
<input type="checkbox" id="ari" class="vp-state" ><label for="ari">ARI</label>
45+
<input type="checkbox" id="nm" class="vp-state" ><label for="nm">NM</label>
4246
</div>
4347
</div>
4448
</div>

js/com/com_Config.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -489,7 +489,7 @@ define([
489489
'LogisticRegression', 'BernoulliNB', 'MultinomialNB', 'GaussianNB', 'SVC', 'DecisionTreeClassifier', 'RandomForestClassifier', 'GradientBoostingClassifier', 'XGBClassifier', 'LGBMClassifier', 'CatBoostClassifier',
490490
],
491491
'Auto ML': [
492-
'AutoSklearnRegressor', 'AutoSklearnClassifier', 'TPOTRegression', 'TPOTClassifier'
492+
'AutoSklearnRegressor', 'AutoSklearnClassifier', 'TPOTRegressor', 'TPOTClassifier'
493493
],
494494
'Clustering': [
495495
'KMeans', 'AgglomerativeClustering', 'GaussianMixture', 'DBSCAN',

js/com/com_generatorV2.js

Lines changed: 20 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@ define([
4343
}
4444

4545
const _VP_BOOL_OPTIONS = [
46-
{ label: 'Default', value: '' },
4746
{ label: 'True', value: 'True' },
4847
{ label: 'False', value: 'False' }
4948
]
@@ -216,6 +215,8 @@ define([
216215
let value = state[obj.name];
217216
if (value == undefined) {
218217
value = '';
218+
} else {
219+
obj.value = value;
219220
}
220221
// create as component type
221222
switch (componentType) {
@@ -250,23 +251,15 @@ define([
250251
content = renderTabBlock(pageThis, obj, state);
251252
break;
252253
case 'bool_checkbox':
253-
// True False select box
254-
var select = $(`<select id="${obj.name}" class="vp-select vp-state"><option value="">Default</option></select>`);
255-
select.append($('<option value="True">True</option>'))
256-
.append($('<option value="False">False</option>'));
257-
content = select;
258-
break;
259254
case 'bool_select':
260-
var optSlct = $('<select></select>').attr({
261-
'class':'vp-select option-select vp-state',
262-
'id':obj.name
263-
});
255+
// True False select box
256+
var optSlct = $(`<select id="${obj.name}" class="vp-select vp-state"></select>`);
264257
_VP_BOOL_OPTIONS.forEach((opt, idx) => {
265-
var option = $(`<option>${opt.label}</option>`).attr({
258+
var option = $(`<option>${opt.label}${obj.default==opt.value?' (default)':''}</option>`).attr({
266259
// 'id':opt,
267260
'index':obj.index,
268261
'name':obj.name,
269-
'value':opt.value
262+
'value':(obj.default==opt.value?'':opt.value)
270263
});
271264
// cell metadata test
272265
if (value != undefined) {
@@ -286,26 +279,26 @@ define([
286279
'class':'vp-select option-select vp-state',
287280
'id':obj.name
288281
});
289-
// if required, no default option
290-
if (obj.required != true) {
291-
$(optSlct).append($('<option value="">Default</option>'));
292-
}
293282
obj.options.forEach((opt, idx, arr) => {
294283
var label = (obj.options_label != undefined? obj.options_label[idx]:opt);
284+
let isDefault = false;
285+
if (obj.required != true && obj.default != undefined && obj.default == opt) {
286+
isDefault = true;
287+
label += ' (default)';
288+
}
295289
var option = $(`<option>${label}</option>`).attr({
296290
// 'id':opt,
297291
'index':obj.index,
298292
'name':obj.name,
299-
'value':opt
293+
'value':(isDefault? '': opt)
300294
});
301-
// cell metadata test
302-
if (value != undefined) {
295+
// saved data
296+
if ((value == opt)
297+
|| ((value == undefined || value == '') && isDefault)) {
303298
// set as saved value
304-
if (value == opt) {
305-
$(option).attr({
306-
'selected':'selected'
307-
});
308-
}
299+
$(option).attr({
300+
'selected':'selected'
301+
});
309302
}
310303
optSlct.append(option);
311304
});
@@ -324,7 +317,7 @@ define([
324317
suggestInput.addClass('vp-input vp-state');
325318
suggestInput.setSuggestList(function() { return obj.options; });
326319
suggestInput.setNormalFilter(false);
327-
suggestInput.setValue($(pageThis.wrapSelector('#' + obj.name)).val());
320+
suggestInput.setValue(value);
328321
suggestInput.setSelectEvent(function(selectedValue) {
329322
// trigger change
330323
$(pageThis.wrapSelector('#' + obj.name)).val(selectedValue);
@@ -454,7 +447,7 @@ define([
454447
suggestInput.addClass('vp-input vp-state');
455448
suggestInput.setSuggestList(function() { return varList; });
456449
suggestInput.setNormalFilter(false);
457-
suggestInput.setValue($(divTag + ' #' + obj.name).val());
450+
suggestInput.setValue(defaultValue);
458451
suggestInput.setSelectEvent(function(selectedValue) {
459452
// trigger change
460453
$(divTag + ' #' + obj.name).val(selectedValue);

0 commit comments

Comments
 (0)