我试图围绕它的工作原理,但是我遇到了困难。
我不知道这是否是正确的方法,因为我找不到清晰的教程。
数据是按降序排列的一堆每月销售额,目标是预测下一个销售额。
const brain = require("brain.js");
let data = [996354, 2779977, 950792, 907340, 1284286, 1266783, 822415, 686550, 1758690, 1186851, 1441859, 1464443, 912951, 1421954, 1521516, 918052, 770238, 1417087, 919990, 1334906, 1224836, 939102, 1063518, 1224231, 877331, 1021506, 874522, 940530, 683876, 1121152, 737414, 1166480, 1082231, 822357, 1146419, 1430051, 631730, 1215160, 868301, 803220, 1182219, 935233, 594446, 1268709, 1160274, 984417, 1124874, 1358540, 878604, 1062942, 1032730, 695323, 1092530, 702907, 986607, 897194, 957222, 935261, 896631, 1028320, 710657, 771455, 795649, 870530, 1251944, 676158, 595391, 861075, 1260068, 1011426, 1059614, 1265080, 1567216, 490529];
const net = new brain.recurrent.LSTMTimeStep({
inputSize: 1,
hiddenLayers: [10],
outputSize: 1
});
net.train([data], {
learningRate: 0.005,
errorTresh: 0.02,
// log: (stats) => console.log(stats)
})
console.log(net.forecast(data, 1))
// [ -0.020625554025173187 ]
// [ -0.008880683220922947 ]
// [ 0.11804535984992981 ]
每次运行此命令时,都会得到不同的结果,我无法解读。
您需要将输入规范化为0到1之间的值。然后运行网络之后,可以将输出规范化为原始比例。