-
Notifications
You must be signed in to change notification settings - Fork 102
/
MLDB-565-classifier-details.js
100 lines (77 loc) · 2.26 KB
/
MLDB-565-classifier-details.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
// This file is part of MLDB. Copyright 2015 mldb.ai inc. All rights reserved.
var mldb = require('mldb')
var unittest = require('mldb/unittest')
var dataset_config = {
'type' : 'sparse.mutable',
'id' : 'test',
};
var dataset = mldb.createDataset(dataset_config)
var ts = new Date("2015-01-01");
function recordExample(row, x, y)
{
dataset.recordRow(row, [ [ "x", x, ts ], ["y", y, ts] ]);
}
// Very simple linear regression, with x = y
recordExample("ex1", 0, 0);
recordExample("ex2", 1, 1);
recordExample("ex3", 2, 2);
recordExample("ex4", 3, 3);
dataset.commit()
var modelFileUrl = "file://tmp/MLDB-174.cls";
var trainClassifierProcedureConfig = {
type: "classifier.train",
params: {
trainingData: "select {x} as features, y as label from test",
configuration: {
glz: {
type: "glz",
verbosity: 3,
normalize: false,
link_function: 'linear',
regularization: 'none'
}
},
algorithm: "glz",
modelFileUrl: modelFileUrl,
equalizationFactor: 0.0,
mode: "regression",
functionName: "cls_func"
}
};
var procedureOutput
= mldb.put("/v1/procedures/cls_train", trainClassifierProcedureConfig);
plugin.log("procedure output", procedureOutput);
var trainingOutput
= mldb.put("/v1/procedures/cls_train/runs/1", {});
plugin.log("training output", trainingOutput);
unittest.assertEqual(trainingOutput.responseCode, 201);
var expected = {
"params" : {
"addBias" : true,
"features" : [
{
"extract" : "VALUE",
"feature" : "x"
}
],
"link" : "LINEAR",
"weights" : [
[ 1, 0 ]
]
},
"type" : "GLZ"
};
var details = mldb.get("/v1/functions/cls_func/details");
unittest.assertEqual(details.json.model, expected);
var functionConfig = {
type: "classifier",
params: {
modelFileUrl: modelFileUrl
}
};
var createFunctionOutput
= mldb.put("/v1/functions/regressor", functionConfig);
plugin.log("classifier function output", createFunctionOutput);
details = mldb.get("/v1/functions/regressor/details");
unittest.assertEqual(details.json.model, expected);
"success"