AI weather sample

by Preetha Srinivasan

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/synaptic/1.0.11/synaptic.js"></script>

JavaScript

function convertToBinaryArray(temperature) {
    var tempInBinary = temperature.toString(2); // Convert to binary
 
    // If it is more than 7 digits long, truncate
    if(tempInBinary.length > 7)
        return [1,1,1,1,1,1,1];
 
    // If it less than 7 digits long, add zeroes
    while(tempInBinary.length < 7) { 
        tempInBinary = "0" + tempInBinary;
    }
 
    // Convert string to array
    return tempInBinary.split("").map(function(i) {
        return parseInt(i); }
    );
}


var myDeepNetwork = new synaptic.Architect.Perceptron(
    7, // Input layer with 7 neurons
    3, // First hidden layer with 3 neurons
    3, // Second hidden layer with 3 neurons
    4 // Output layer with 4 neurons
);


var trainingData = [];
 
for(var i = 1;i < 75; i++) {
    var input = convertToBinaryArray(i); // Input layer
    var output = [0,0,0,0]; // Undecided state of output layer
 
    if(i <= 5)
        output = [1,0,0,0]; // THICK JACKET
    else if(i > 5 && i <= 15)
        output = [0,1,0,0]; // SWEATER
    else if(i > 15 && i <= 40)
        output = [0,0,1,0]; // T-SHIRT
    else
        output = [0,0,0,1]; // NOTHING
 
    trainingData.push({
        input: input,
        output: output
    });
}


var myTrainer = new synaptic.Trainer(myDeepNetwork); // Create trainer
myTrainer.train(trainingData, {
    rate: 0.1,
    iterations: 10000,
    shuffle: true
}); // Train with training data

var cTemp = convertToBinaryArray(11);
var recommendations = myDeepNetwork.activate(cTemp);
 
// Log neuron outputs
console.log("THICK JACKET neuron: " + (recommendations[0] * 100) + "%");
console.log("SWEATER neuron: " + (recommendations[1] * 100) + "%");
console.log("T-SHIRT neuron: " + (recommendations[2] * 100) + "%");
console.log("NOTHING neuron: " + (recommendations[3] * 100) + "%");