summaryrefslogtreecommitdiff
path: root/nn.js
diff options
context:
space:
mode:
authorNat Lasseter <Nat Lasseter nathan@bytemark.co.uk>2018-04-10 16:42:30 +0100
committerNat Lasseter <Nat Lasseter nathan@bytemark.co.uk>2018-04-10 16:42:30 +0100
commit3e8395b6d891c77d9c71d60b65d99861dc062f73 (patch)
tree8a4596b1293ed538a751103888f0f2bd5960db88 /nn.js
Initial Commit
Diffstat (limited to 'nn.js')
-rw-r--r--nn.js53
1 files changed, 53 insertions, 0 deletions
diff --git a/nn.js b/nn.js
new file mode 100644
index 0000000..45315fe
--- /dev/null
+++ b/nn.js
@@ -0,0 +1,53 @@
+"use strict";
+
+let synaptic = require('synaptic');
+let fs = require('fs');
+let doc =
+ JSON.parse(
+ fs.readFileSync(
+ process.argv[process.argv.length - 1]
+ )
+ );
+let data = doc["data"];
+let max = doc["max"];
+
+let trainingset = [];
+
+for(let i = 0; i < (data.length - 10) ; i++) {
+ trainingset.push({
+ input: [
+ data[i+0]["v"], data[i+1]["v"],
+ data[i+2]["v"], data[i+3]["v"],
+ data[i+4]["v"], data[i+5]["v"],
+ data[i+6]["v"], data[i+7]["v"],
+ data[i+8]["v"], data[i+9]["v"]
+ ],
+ output: [data[i+10]["v"]]
+ });
+}
+
+let trainingoptions = {
+ rate: .05,
+ iterations: 20000,
+ error: .001,
+ shuffle: true,
+};
+
+let net = new synaptic.Architect.Perceptron(10, 7, 3, 1);
+let trainer = new synaptic.Trainer(net);
+
+console.error(trainer.train(trainingset, trainingoptions));
+
+let predicteddata = data.slice(-10);
+
+for(let t = data.length ; t < (2 * data.length) ; t++) {
+ predicteddata.push({
+ t: t,
+ v: net.activate(predicteddata.slice(-10).map(x=>x.v))[0]
+ });
+}
+
+predicteddata.splice(0, 10);
+
+ data.forEach(x=>console.log(x.t + "," + (x.v * max)));
+predicteddata.forEach(x=>console.log(x.t + "," + (x.v * max)));