Mon 21 Jul 22:43:21 CEST 2025

This commit is contained in:
sbosse 2025-07-21 23:13:54 +02:00
parent c790f40b4b
commit 51b17fb6ff

159
js/demo/ml1.js Normal file
View File

@ -0,0 +1,159 @@
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));