xxxxxxxxxx
45
function sign(n) {
if (n >= 0) {
return 1;
} else {
return -1;
}
}
var data = [2.26, -4.63, -0.52];
class Perceptron {
constructor() {
this.weights = new Array(3);
this.learning_rate = 0.01;
for (var i = 0; i < this.weights.length; i++) {
this.weights[i] = random(-1, 1);
// this.weights[i] = data[i];
}
}
guess(input) {
var sum = 0;
for (var i = 0; i < this.weights.length; i++) {
sum += this.weights[i] * input[i];
}
var output = sign(sum);
return output;
}
train(input, target) {
var guessResult = this.guess(input);
var error = target - guessResult;
for (var i = 0; i < this.weights.length; i++) {
this.weights[i] += error * input[i] * this.learning_rate;
}
}
guessY(x) {
var w0 = this.weights[0];
var w1 = this.weights[1];
var w2 = this.weights[2];
// y = -(w0/w1)*x - (w2/w1)
return -(w0 / w1) * x - (w2 / w1);
}
}