160 lines
4.3 KiB
JavaScript
160 lines
4.3 KiB
JavaScript
var Ml = require('/opt/JAM/lib/libml');
|
|
|
|
// KNN
|
|
console.log(Ml)
|
|
var data = [
|
|
[0, 0, 0], [0, 1, 1], [1, 1, 0], [2, 2, 2], [1, 2, 2], [3, 2, 2], [3, 5, 6]
|
|
]
|
|
var results = [
|
|
'a', 'a', 'a', 'b', 'b', 'c', 'c'
|
|
]
|
|
var model1 = Ml.learn({x:data,y:results,algorithm:Ml.ML.KNN,distance:Ml.ML.EUCL});
|
|
console.log(model1)
|
|
var prediction1 = Ml.classify(model1,[[1.81, 1.81, 1.81], [0.5, 0.5, 0.5]]);
|
|
console.log(Ml.ML.KNN,prediction1)
|
|
|
|
// DTI
|
|
var model2 = Ml.learn({x:data,y:results,algorithm:Ml.ML.DTI,eps:0.2});
|
|
console.log(Ml.print(model2))
|
|
var prediction2 = Ml.classify(model2,[[1.81, 1.81, 1.81], [0.5, 0.5, 0.5]]);
|
|
console.log(Ml.ML.DTI,prediction2)
|
|
|
|
// MLP
|
|
var x = [[0.4, 0.5, 0.5, 0., 0., 0.],
|
|
[0.5, 0.3, 0.5, 0., 0., 0.],
|
|
[0.4, 0.5, 0.5, 0., 0., 0.],
|
|
[0., 0., 0.5, 0.3, 0.5, 0.],
|
|
[0., 0., 0.5, 0.4, 0.5, 0.],
|
|
[0., 0., 0.5, 0.5, 0.5, 0.]];
|
|
var y = [[1, 0],
|
|
[1, 0],
|
|
[1, 0],
|
|
[0, 1],
|
|
[0, 1],
|
|
[0, 1]];
|
|
|
|
var mlp1 = new Ml.learn({
|
|
x : x,
|
|
y : y,
|
|
labels:['a','b'],
|
|
hidden_layers : [4,4,5],
|
|
lr : 0.6,
|
|
epochs : 20000,
|
|
algorithm:Ml.ML.MLP,
|
|
verbose:1
|
|
});
|
|
a = [[0.5, 0.5, 0., 0., 0., 0.],
|
|
[0., 0., 0., 0.5, 0.5, 0.],
|
|
[0.5, 0.5, 0.5, 0.5, 0.5, 0.]];
|
|
|
|
console.log(Ml.ML.MLP,Ml.classify(mlp1,a));
|
|
console.log(Ml.ML.MLP,Ml.classify(mlp1,a[0]));
|
|
|
|
var x = [[0.004, 0.005, 0.005, 0., 0., 0.],
|
|
[0.005, 0.003, 0.005, 0., 0., 0.],
|
|
[0.004, 0.005, 0.005, 0., 0., 0.],
|
|
[0., 0., 0.005, 0.003, 0.005, 0.],
|
|
[0., 0., 0.005, 0.004, 0.005, 0.],
|
|
[0., 0., 0.005, 0.005, 0.005, 0.]];
|
|
var y = ['a',
|
|
'a',
|
|
'a',
|
|
'b',
|
|
'b',
|
|
'b'];
|
|
|
|
var mlp2 = new Ml.learn({
|
|
x : x,
|
|
y : y,
|
|
features:['f1','f2','f3','f4','f5','f6'],
|
|
labels:['a','b'],
|
|
hidden_layers : [4,4,5],
|
|
lr : 0.6,
|
|
epochs : 20000,
|
|
algorithm:Ml.ML.MLP,
|
|
normalize:true,
|
|
bipolar:true,
|
|
verbose:1
|
|
});
|
|
|
|
|
|
|
|
console.log(Ml.ML.MLP,Ml.classify(mlp2,{f1:0.005,f2:0.005,f3:0,f4:0,f5:0,f6:0}));
|
|
|
|
// SVM
|
|
var x = [[0.4, 0.5, 0.5, 0., 0., 0.],
|
|
[0.5, 0.3, 0.5, 0., 0., 0.01],
|
|
[0.4, 0.8, 0.5, 0., 0.1, 0.2],
|
|
[1.4, 0.5, 0.5, 0., 0., 0.],
|
|
[1.5, 0.3, 0.5, 0., 0., 0.],
|
|
[0., 0.9, 1.5, 0., 0., 0.],
|
|
[0., 0.7, 1.5, 0., 0., 0.],
|
|
[0.5, 0.1, 0.9, 0., -1.8, 0.],
|
|
[0.8, 0.8, 0.5, 0., 0., 0.],
|
|
[0., 0.9, 0.5, 0.3, 0.5, 0.2],
|
|
[0., 0., 0.5, 0.4, 0.5, 0.],
|
|
[0., 0., 0.5, 0.5, 0.5, 0.],
|
|
[0.3, 0.6, 0.7, 1.7, 1.3, -0.7],
|
|
[0., 0., 0.5, 0.3, 0.5, 0.2],
|
|
[0., 0., 0.5, 0.4, 0.5, 0.1],
|
|
[0., 0., 0.5, 0.5, 0.5, 0.01],
|
|
[0.2, 0.01, 0.5, 0., 0., 0.9],
|
|
[0., 0., 0.5, 0.3, 0.5, -2.3],
|
|
[0., 0., 0.5, 0.4, 0.5, 4],
|
|
[0., 0., 0.5, 0.5, 0.5, -2]];
|
|
|
|
var y = [-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1];
|
|
|
|
var svm = Ml.learn({
|
|
x : x,
|
|
y : y,
|
|
C : 1.1, // default : 1.0. C in SVM.
|
|
tol : 1e-5, // default : 1e-4. Higher tolerance --> Higher precision
|
|
max_passes : 20, // default : 20. Higher max_passes --> Higher precision
|
|
alpha_tol : 1e-5, // default : 1e-5. Higher alpha_tolerance --> Higher precision
|
|
|
|
kernel : { type: "polynomial", c: 1, d: 5},
|
|
// default : {type : "gaussian", sigma : 1.0}
|
|
// {type : "gaussian", sigma : 0.5}
|
|
// {type : "linear"} // x*y
|
|
// {type : "polynomial", c : 1, d : 8} // (x*y + c)^d
|
|
// Or you can use your own kernel.
|
|
// kernel : function(vecx,vecy) { return dot(vecx,vecy);}
|
|
algorithm:Ml.ML.SVM
|
|
});
|
|
|
|
console.log(svm.algorithm,Ml.classify(svm,[1.3, 1.7, 0.5, 0.5, 1.5, 0.4]));
|
|
|
|
|
|
// C4.5
|
|
var CLASS1='CL1',CLASS2='CL2',A='A',B='B',C='C',True=true,False=false;
|
|
var data = [
|
|
[A,70,True,CLASS1],
|
|
[A,90,True,CLASS2],
|
|
[A,85,False,CLASS2],
|
|
[A,95,False,CLASS2],
|
|
[A,70,False,CLASS1],
|
|
[B,90,True,CLASS1],
|
|
[B,78,False,CLASS1],
|
|
[B,65,True,CLASS1],
|
|
[B,75,False,CLASS1],
|
|
[C,85,True,CLASS1],
|
|
[C,80,True,CLASS2],
|
|
[C,70,True,CLASS2],
|
|
[C,80,False,CLASS1],
|
|
[C,80,False,CLASS1],
|
|
[C,96,False,CLASS1],
|
|
];
|
|
var c45 = Ml.learn({
|
|
data:data,
|
|
algorithm:Ml.ML.C45
|
|
});
|
|
|
|
var testData = [
|
|
[B,71,False],
|
|
[C,70,True],
|
|
[C,75,True],
|
|
[C,95,True],
|
|
];
|
|
console.log(c45.algorithm,Ml.classify(c45,testData));
|