Skip to content

Commit ea072f2

Browse files
authored
Merge pull request #126 from minjk-bl/devops
Fix Clustering, Dimension Reduction options
2 parents 9b94b21 + 6462bda commit ea072f2

File tree

1 file changed

+155
-10
lines changed

1 file changed

+155
-10
lines changed

js/com/component/ModelEditor.js

Lines changed: 155 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ define([
135135
description: 'Fit Encoder/Scaler to X, then transform X.',
136136
options: [
137137
{ name: 'fit_trans_featureData', label: 'Feature Data', component: ['var_select'], var_type: ['DataFrame', 'Series'], value: 'X' },
138-
{ name: 'fit_trans_allocate', label: 'Allocate to', component: ['input'], placeholder: 'New variable' }
138+
{ name: 'fit_trans_allocate', label: 'Allocate to', component: ['input'], placeholder: 'New variable', value: 'trans' }
139139
]
140140
},
141141
'transform': {
@@ -154,7 +154,7 @@ define([
154154
description: 'Transform binary labels back to multi-class labels.',
155155
options: [
156156
{ name: 'inverse_featureData', label: 'Feature Data', component: ['var_select'], var_type: ['DataFrame', 'Series'], value: 'X' },
157-
{ name: 'inverse_allocate', label: 'Allocate to', component: ['input'], placeholder: 'New variable' }
157+
{ name: 'inverse_allocate', label: 'Allocate to', component: ['input'], placeholder: 'New variable', value: 'inv_trans' }
158158
]
159159
}
160160
}
@@ -209,7 +209,15 @@ define([
209209
if (modelType == 'AgglomerativeClustering'
210210
|| modelType == 'DBSCAN') {
211211
actions = {
212-
'fit': defaultActions['fit'],
212+
'fit': {
213+
name: 'fit',
214+
label: 'Fit',
215+
code: '${model}.fit(${fit_featureData})',
216+
description: 'Perform clustering from features, or distance matrix.',
217+
options: [
218+
{ name: 'fit_featureData', label: 'Feature Data', component: ['var_select'], var_type: ['DataFrame', 'Series'], value: 'X' }
219+
]
220+
},
213221
'fit_predict': {
214222
name: 'fit_predict',
215223
label: 'Fit and predict',
@@ -224,8 +232,25 @@ define([
224232
break;
225233
}
226234
actions = {
227-
'fit': defaultActions['fit'],
228-
'predict': defaultActions['predict'],
235+
'fit': {
236+
name: 'fit',
237+
label: 'Fit',
238+
code: '${model}.fit(${fit_featureData})',
239+
description: 'Compute clustering.',
240+
options: [
241+
{ name: 'fit_featureData', label: 'Feature Data', component: ['var_select'], var_type: ['DataFrame', 'Series'], value: 'X' }
242+
]
243+
},
244+
'predict': {
245+
name: 'predict',
246+
label: 'Predict',
247+
code: '${pred_allocate} = ${model}.predict(${pred_featureData})',
248+
description: 'Predict the closest target data X belongs to.',
249+
options: [
250+
{ name: 'pred_featureData', label: 'Feature Data', component: ['var_select'], var_type: ['DataFrame', 'Series'], value: 'X' },
251+
{ name: 'pred_allocate', label: 'Allocate to', component: ['input'], placeholder: 'New variable', value: 'pred' }
252+
]
253+
},
229254
'fit_predict': {
230255
name: 'fit_predict',
231256
label: 'Fit and predict',
@@ -246,7 +271,7 @@ define([
246271
code: '${fit_trans_allocate} = ${model}.fit_transform(${fit_trans_featureData})',
247272
description: 'Compute clustering and transform X to cluster-distance space.',
248273
options: [
249-
{ name: 'fit_trans_featureData', label: 'Feature Data', component: ['var_select'], var_type: ['DataFrame', 'Series'], value: 'X_train' },
274+
{ name: 'fit_trans_featureData', label: 'Feature Data', component: ['var_select'], var_type: ['DataFrame', 'Series'], value: 'X' },
250275
{ name: 'fit_trans_allocate', label: 'Allocate to', component: ['input'], placeholder: 'New variable', value: 'trans' }
251276
]
252277
},
@@ -266,23 +291,114 @@ define([
266291
case 'Dimension Reduction':
267292
if (modelType == 'TSNE') {
268293
actions = {
269-
'fit': defaultActions['fit'],
294+
'fit': {
295+
name: 'fit',
296+
label: 'Fit',
297+
code: '${model}.fit(${fit_featureData})',
298+
description: 'Fit X into an embedded space.',
299+
options: [
300+
{ name: 'fit_featureData', label: 'Feature Data', component: ['var_select'], var_type: ['DataFrame', 'Series'], value: 'X' }
301+
]
302+
},
270303
'fit_transform': {
271304
name: 'fit_transform',
272305
label: 'Fit and transform',
273306
code: '${fit_trans_allocate} = ${model}.fit_transform(${fit_trans_featureData})',
274307
description: 'Fit X into an embedded space and return that transformed output.',
275308
options: [
276-
{ name: 'fit_trans_featureData', label: 'Feature Data', component: ['var_select'], var_type: ['DataFrame', 'Series'], value: 'X_train' },
309+
{ name: 'fit_trans_featureData', label: 'Feature Data', component: ['var_select'], var_type: ['DataFrame', 'Series'], value: 'X' },
277310
{ name: 'fit_trans_allocate', label: 'Allocate to', component: ['input'], placeholder: 'New variable', value: 'trans' }
278311
]
279312
}
280313
}
281314
break;
282315
}
316+
if (modelType == 'LinearDiscriminantAnalysis') { // LDA
317+
actions = {
318+
'fit': {
319+
name: 'fit',
320+
label: 'Fit',
321+
code: '${model}.fit(${fit_featureData}, ${fit_targetData})',
322+
description: 'Fit the Linear Discriminant Analysis model.',
323+
options: [
324+
{ name: 'fit_featureData', label: 'Feature Data', component: ['var_select'], var_type: ['DataFrame', 'Series'], value: 'X' },
325+
{ name: 'fit_targetData', label: 'Target Data', component: ['var_select'], var_type: ['DataFrame', 'Series'], value: 'y' }
326+
]
327+
},
328+
'fit_transform': {
329+
name: 'fit_transform',
330+
label: 'Fit and transform',
331+
code: '${fit_trans_allocate} = ${model}.fit_transform(${fit_trans_featureData}${fit_trans_targetData})',
332+
description: 'Fit to data, then transform it.',
333+
options: [
334+
{ name: 'fit_trans_featureData', label: 'Feature Data', component: ['var_select'], var_type: ['DataFrame', 'Series'], value: 'X' },
335+
{ name: 'fit_trans_targetData', label: 'Target Data', component: ['var_select'], var_type: ['DataFrame', 'Series'], value: 'y' },
336+
{ name: 'fit_trans_allocate', label: 'Allocate to', component: ['input'], placeholder: 'New variable', value: 'trans' }
337+
]
338+
},
339+
'predict': {
340+
name: 'predict',
341+
label: 'Predict',
342+
code: '${pred_allocate} = ${model}.predict(${pred_featureData})',
343+
description: 'Predict class labels for samples in X.',
344+
options: [
345+
{ name: 'pred_featureData', label: 'Feature Data', component: ['var_select'], var_type: ['DataFrame', 'Series'], value: 'X' },
346+
{ name: 'pred_allocate', label: 'Allocate to', component: ['input'], placeholder: 'New variable', value: 'pred' }
347+
]
348+
},
349+
'transform': {
350+
name: 'transform',
351+
label: 'Transform',
352+
code: '${trans_allocate} = ${model}.transform(${trans_featureData})',
353+
description: 'Project data to maximize class separation.',
354+
options: [
355+
{ name: 'trans_featureData', label: 'Feature Data', component: ['var_select'], var_type: ['DataFrame', 'Series'], value: 'X' },
356+
{ name: 'trans_allocate', label: 'Allocate to', component: ['input'], placeholder: 'New variable', value: 'trans' }
357+
]
358+
}
359+
}
360+
break;
361+
}
283362
actions = {
284-
'fit': defaultActions['fit'],
285-
'transform': defaultActions['transform'],
363+
'fit': {
364+
name: 'fit',
365+
label: 'Fit',
366+
code: '${model}.fit(${fit_featureData})',
367+
description: 'Fit X into an embedded space.',
368+
options: [
369+
{ name: 'fit_featureData', label: 'Feature Data', component: ['var_select'], var_type: ['DataFrame', 'Series'], value: 'X' }
370+
]
371+
},
372+
'fit_transform': {
373+
name: 'fit_transform',
374+
label: 'Fit and transform',
375+
code: '${fit_trans_allocate} = ${model}.fit_transform(${fit_trans_featureData})',
376+
description: 'Fit the model with X and apply the dimensionality reduction on X.',
377+
options: [
378+
{ name: 'fit_trans_featureData', label: 'Feature Data', component: ['var_select'], var_type: ['DataFrame', 'Series'], value: 'X' },
379+
{ name: 'fit_trans_allocate', label: 'Allocate to', component: ['input'], placeholder: 'New variable', value: 'trans' }
380+
]
381+
},
382+
'inverse_transform': {
383+
name: 'inverse_transform',
384+
label: 'Inverse transform',
385+
code: '${inverse_allocate} = ${model}.inverse_transform(${inverse_featureData})',
386+
description: 'Transform data back to its original space.',
387+
options: [
388+
{ name: 'inverse_featureData', label: 'Feature Data', component: ['var_select'], var_type: ['DataFrame', 'Series'], value: 'X' },
389+
{ name: 'inverse_allocate', label: 'Allocate to', component: ['input'], placeholder: 'New variable', value: 'inv_trans' }
390+
]
391+
},
392+
'transform': {
393+
name: 'transform',
394+
label: 'Transform',
395+
code: '${trans_allocate} = ${model}.transform(${trans_featureData})',
396+
description: 'Apply dimensionality reduction to X.',
397+
options: [
398+
{ name: 'trans_featureData', label: 'Feature Data', component: ['var_select'], var_type: ['DataFrame', 'Series'], value: 'X' },
399+
{ name: 'trans_allocate', label: 'Allocate to', component: ['input'], placeholder: 'New variable', value: 'trans' }
400+
]
401+
}
286402
}
287403
break;
288404
}
@@ -533,6 +649,22 @@ define([
533649
}
534650
break;
535651
case 'Dimension Reduction':
652+
if (modelType == 'LDA') {
653+
infos = {
654+
'score': {
655+
name: 'score',
656+
label: 'Score',
657+
code: '${score_allocate} = ${model}.score(${score_featureData}, ${score_targetData})',
658+
description: 'Return the average log-likelihood of all samples.',
659+
options: [
660+
{ name: 'score_featureData', label: 'Feature Data', component: ['var_select'], var_type: ['DataFrame', 'Series'], value: 'X' },
661+
{ name: 'score_targetData', label: 'Target Data', component: ['var_select'], var_type: ['DataFrame', 'Series'], value: 'y' },
662+
{ name: 'score_allocate', label: 'Allocate to', component: ['input'], placeholder: 'New variable', value: 'scores' }
663+
]
664+
}
665+
}
666+
break;
667+
}
536668
if (modelType == 'PCA') {
537669
infos = {
538670
'explained_variance_ratio_': {
@@ -546,6 +678,19 @@ define([
546678
}
547679
}
548680
}
681+
infos = {
682+
...infos,
683+
'score': {
684+
name: 'score',
685+
label: 'Score',
686+
code: '${score_allocate} = ${model}.score(${score_featureData})',
687+
description: 'Return the average log-likelihood of all samples.',
688+
options: [
689+
{ name: 'score_featureData', label: 'Feature Data', component: ['var_select'], var_type: ['DataFrame', 'Series'], value: 'X' },
690+
{ name: 'score_allocate', label: 'Allocate to', component: ['input'], placeholder: 'New variable', value: 'scores' }
691+
]
692+
}
693+
}
549694
break;
550695
}
551696
return infos;

0 commit comments

Comments
 (0)