Code viewer for World: Gradient Descent

// Cloned by Ger Gleeson on 3 Dec 2019 from World "Least Squares Method" by Ger Gleeson 
// Please leave this clone trail here.
 

 


//---- normal P5 code -------------------------------------------------------

var data = [];

//slope
var m = 1;

//y-intercept
var b = 0;

function setup()       
{
    createCanvas(400, 400);
    background(51);
}

function mousePressed(){
    var x = map(mouseX, 0, width, 0, 1);
    var y = map(mouseY, 0, width, 1, 0);
    
    var  point = createVector(x, y);
    data.push(point);
}

function drawLine(){
    var x1 = 0;
    var y1 = m * x1 + b;
    
    var x2 = 1;
    var y2 = m * x2 + b;
    
    x1 = map(x1, 0, 1, 0, width)
    y1 = map(y1, 0, 1, height, 0)
    
    x2 = map(x2, 0, 1, 0, width)
    y2 = map(y2, 0, 1, height, 0)
    
    
    stroke (255, 0, 255);
    line(x1, y1, x2, y2);
}

function gradientDecent(){
    
    var learning_rate = 0.05;
    
        for(var i = 0; i < data.length; i++){
        var x = data[i].x;
        var y = data[i].y;
        
        var guess = m * x + b;
        
        var error = y - guess;
        
        m + m + (error * x) * learning_rate;
        b = b + (error * learning_rate);;
        }
    
    
}

function draw()             
{
    background(51);
    
    for(var i = 0; i < data.length; i++){
        var x = map(data[i].x, 0, 1, 0, width);
        var y = map(data[i].y, 0, 1, height, 0);
        
        fill(255);
        stroke(255);
        ellipse(x,y,8,8);
    }
    if (data.length > 1){
        gradientDecent();
        drawLine();
    }
    
}