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) + "%");