deno.land / x / sheetjs@v0.18.3 / demos / array / tf.js

نووسراو ببینە
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
/* xlsx.js (C) 2013-present SheetJS -- http://sheetjs.com *//* eslint-env node */var XLSX = require('xlsx');var tf = require('@tensorflow/tfjs');var linest = require('./linest');
/* generate linreg.xlsx with 100 random points */var N = 100;linest.generate_random_file(N);
/* get the first worksheet as an array of arrays, skip the first row */var wb = XLSX.readFile('linreg.xlsx');var ws = wb.Sheets[wb.SheetNames[0]];var aoa = XLSX.utils.sheet_to_json(ws, {header:1, raw:true}).slice(1);
/* calculate the coefficients in JS */(function(aoa) { var x_ = 0, y_ = 0, xx = 0, xy = 0, n = aoa.length; for(var i = 0; i < n; ++i) { x_ += aoa[i][0] / n; y_ += aoa[i][1] / n; xx += aoa[i][0] * aoa[i][0]; xy += aoa[i][0] * aoa[i][1]; } var m = Math.fround((xy - n * x_ * y_)/(xx - n * x_ * x_)); console.log(m, Math.fround(y_ - m * x_), "JS Post");})(aoa);
/* build X and Y vectors */var tensor = tf.tensor2d(aoa).transpose();console.log(tensor.shape);var xs = tensor.slice([0,0], [1,tensor.shape[1]]).flatten();var ys = tensor.slice([1,0], [1,tensor.shape[1]]).flatten();
/* set up variables with initial guess */var x_ = xs.mean().dataSync()[0];var y_ = ys.mean().dataSync()[0];var a = tf.variable(tf.scalar(y_/x_));var b = tf.variable(tf.scalar(Math.random()));
/* linear predictor */function predict(x) { return tf.tidy(function() { return a.mul(x).add(b); }); }/* mean square scoring */function loss(yh, y) { return yh.sub(y).square().mean(); }
/* train */for(var j = 0; j < 5; ++j) { var learning_rate = 0.0001 /(j+1), iterations = 1000; var optimizer = tf.train.sgd(learning_rate);
for(var i = 0; i < iterations; ++i) optimizer.minimize(function() { var pred = predict(xs); var L = loss(pred, ys); return L });
/* compute the coefficient */ var m = a.dataSync()[0], b_ = b.dataSync()[0]; console.log(m, b_, "TF " + iterations * (j+1));}
/* export data to aoa */var yh = predict(xs);var tfdata = tf.stack([xs, ys, yh]).transpose();var shape = tfdata.shape;var tfarr = tfdata.dataSync();var tfaoa = [];for(j = 0; j < shape[0]; ++j) { tfaoa[j] = []; for(i = 0; i < shape[1]; ++i) tfaoa[j][i] = tfarr[j * shape[1] + i];}
/* add headers and export */tfaoa.unshift(["x", "y", "pred"]);var new_ws = XLSX.utils.aoa_to_sheet(tfaoa);var new_wb = XLSX.utils.book_new();XLSX.utils.book_append_sheet(new_wb, new_ws, "Sheet1");XLSX.writeFile(new_wb, "tfjs.xls");
sheetjs

Version Info

Tagged at
2 years ago