Skip to content

Commit 8e53816

Browse files
author
minjk-bl
committed
ML > Prediction schema
1 parent caa0df2 commit 8e53816

File tree

6 files changed

+97
-20
lines changed

6 files changed

+97
-20
lines changed

html/m_ml/modelSelection.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,13 @@
3333
</div>
3434
<div class="vp-grid-border-box vp-grid-col-95">
3535
<label for="featureData" class="vp-orange-text">Feature data</label>
36-
<input type="text" class="vp-input vp-state" id="featureData" placeholder="Select feature data"/>
36+
<input type="text" class="vp-input vp-state" id="featureData" placeholder="Select feature data" value="X_train"/>
3737
<label for="targetData" class="vp-orange-text">Target data</label>
38-
<input type="text" class="vp-input vp-state" id="targetData" placeholder="Select target data"/>
38+
<input type="text" class="vp-input vp-state" id="targetData" placeholder="Select target data" value="y_train"/>
3939
</div>
4040
<div class="vp-grid-border-box vp-grid-col-95">
4141
<label for="allocateTo" class="vp-orange-text">Allocate to</label>
42-
<input type="text" class="vp-input vp-state" id="allocateTo" placeholder="New variable name"/>
42+
<input type="text" class="vp-input vp-state" id="allocateTo" placeholder="New variable name" value="model"/>
4343
</div>
4444
</div>
4545
</body>

html/m_ml/prediction.html

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<body>
2+
<div class="vp-grid-box">
3+
<div class="vp-grid-border-box vp-grid-col-95">
4+
<label for="model" class="vp-orange-text">Model</label>
5+
<select id="model" class="vp-select vp-state">
6+
<!-- Auto Create -->
7+
</select>
8+
</div>
9+
<div class="vp-grid-border-box vp-grid-col-95">
10+
<label for="featureData" class="vp-orange-text">Feature data</label>
11+
<input type="text" class="vp-input vp-state" id="featureData" placeholder="Select feature data" value="X_test"/>
12+
</div>
13+
<div class="vp-grid-border-box vp-grid-col-95">
14+
<label for="allocateTo" class="vp-orange-text">Allocate to</label>
15+
<input type="text" class="vp-input vp-state" id="allocateTo" placeholder="New variable name" value="pred"/>
16+
</div>
17+
</div>
18+
</body>

js/com/com_Kernel.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,25 @@ define([
246246
});
247247
}
248248

249+
//====================================================================
250+
// Machine Learning
251+
//====================================================================
252+
getModelList() {
253+
// use function command to get variable list of selected data types
254+
var cmdSB = `_vp_print(_vp_get_variables_list(${JSON.stringify(vpConfig.getMLDataTypes())}))`;
255+
256+
var that = this;
257+
return new Promise(function(resolve, reject) {
258+
that.execute(cmdSB).then(function(resultObj) {
259+
// resolve
260+
resolve(resultObj);
261+
}).catch(function(err) {
262+
// reject
263+
reject(err);
264+
})
265+
})
266+
}
267+
249268
//====================================================================
250269
// Configuration api
251270
//====================================================================

js/m_apps/Variable.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,8 @@ define([
7878
, 'ndarray'
7979
// Python variable
8080
, 'str', 'int', 'float', 'bool', 'dict', 'list', 'tuple'
81+
// ML Data types
82+
, ...vpConfig.getMLDataTypes()
8183
];
8284

8385
var tagTable = this.wrapSelector('#vp_var_variableBox table tbody');

js/m_ml/modelSelection.js

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,9 @@ define([
3232

3333
this.state = {
3434
model: 'rf-clf',
35+
featureData: 'X_train',
36+
targetData: 'y_train',
37+
allocateTo: 'model',
3538
...this.state
3639
}
3740

@@ -137,7 +140,13 @@ define([
137140
* %%time
138141
* model.fit(X_train, y_train)
139142
*/
140-
return this.modelConfig[this.state.model].code;
143+
let code = new com_String();
144+
let { model, allocateTo } = this.state;
145+
let config = this.modelConfig[model];
146+
code.appendLine(config.import);
147+
code.appendLine();
148+
code.appendFormat('{0} = {1}', allocateTo, config.code);
149+
return code.toString();
141150
}
142151

143152
}

js/m_ml/prediction.js

Lines changed: 45 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -13,45 +13,74 @@
1313
// [CLASS] Prediction
1414
//============================================================================
1515
define([
16+
'text!vp_base/html/m_ml/prediction.html!strip',
1617
'vp_base/js/com/com_util',
1718
'vp_base/js/com/com_Const',
1819
'vp_base/js/com/com_String',
1920
'vp_base/js/com/component/PopupComponent'
20-
], function(com_util, com_Const, com_String, PopupComponent) {
21+
], function(predHTML, com_util, com_Const, com_String, PopupComponent) {
2122

2223
/**
2324
* Prediction
2425
*/
2526
class Prediction extends PopupComponent {
2627
_init() {
2728
super._init();
28-
/** Write codes executed before rendering */
29+
this.config.dataview = false;
30+
31+
this.state = {
32+
model: '',
33+
featureData: 'X_test',
34+
allocateTo: 'pred',
35+
...this.state
36+
}
2937
}
3038

3139
_bindEvent() {
3240
super._bindEvent();
3341
/** Implement binding events */
3442
var that = this;
35-
this.$target.on('click', function(evt) {
36-
var target = evt.target;
37-
if ($(that.wrapSelector()).find(target).length > 0) {
38-
// Sample : getDataList from Kernel
39-
vpKernel.getDataList().then(function(resultObj) {
40-
vpLog.display(VP_LOG_TYPE.DEVELOP, resultObj);
41-
}).catch(function(err) {
42-
vpLog.display(VP_LOG_TYPE.DEVELOP, err);
43-
});
44-
}
45-
});
43+
4644
}
4745

4846
templateForBody() {
49-
/** Implement generating template */
50-
return 'This is sample.';
47+
let page = $(predHTML);
48+
49+
let that = this;
50+
// set model list
51+
let modelOptionTag = new com_String();
52+
vpKernel.getModelList().then(function(resultObj) {
53+
let { result } = resultObj;
54+
var modelList = JSON.parse(result);
55+
modelList && modelList.forEach(model => {
56+
let selectFlag = '';
57+
if (model.varName == that.state.model) {
58+
selectFlag = 'selected';
59+
}
60+
modelOptionTag.appendFormatLine('<option value="{0}" data-type="{1}" {2}>{3}</option>',
61+
model.varName, model.varType, selectFlag, model.varName);
62+
});
63+
$(page).find('#model').html(modelOptionTag.toString());
64+
$(that.wrapSelector('#model')).html(modelOptionTag.toString());
65+
66+
if (!that.state.model || that.state.model == '') {
67+
that.state.model = $(that.wrapSelector('#model')).val();
68+
}
69+
});
70+
return page;
5171
}
5272

5373
generateCode() {
54-
return "print('sample code')";
74+
let { model, featureData, allocateTo } = this.state;
75+
76+
let code = new com_String();
77+
code.appendFormat('{0} = {1}.predict({2})', allocateTo, model, featureData);
78+
79+
if (allocateTo && allocateTo != '') {
80+
code.appendLine();
81+
code.append(allocateTo);
82+
}
83+
return code.toString();
5584
}
5685

5786
}

0 commit comments

Comments
 (0)