Untitled
unknown
plain_text
5 months ago
1.8 kB
9
Indexable
require('@tensorflow/tfjs-node'); //running tfjs on laptop cpu const tf = require('@tensorflow/tfjs'); //require in Tensorflow JS lib const Users = require('../../mongodb/models/users') const Posts = require('../../mongodb/models/posts') function knn(features, labels, predictionPoint, k) { features = tf.tensor(features); labels = tf.tensor(labels); const {mean, variance} = tf.moments(features, 0); const scaledPrediction = predictionPoint.sub(mean).div(variance.pow(0.5)) //Scaled Prediction const for standardization return ( features /* Step 0 - Standarization of features for */ .sub(mean) .div(variance.pow(0.5)) /* Step 1 - Find Distance between features & prediction point features */ .sub(scaledPrediction) //Broadcasting operation .pow(2) //Elementwise operation to square each element .sum(1) //Sums along x(1)-axis .sqrt() //Elementwise operation to take power of .5 = sqrt of each element /* Step 2 - Sort from lowest distance to greatest distance */ .expandDims(1) //We expand dimensions of distances tensor across the x-axis to get the shape of [4,1], the same as the labels distance .concat(labels, 1) //We concatenate labels to distances across the x-axis so they are linked by the same indices in one tensor .unstack() //We unstack our 1 tensor into 1 Vanilla JS array containing multiple tensors /* After unstacking our tensor, we are dealing with vanilla JS array and we can ONLY use vanilla JS methods from this point on */ .sort((a,b) => a.get(0) > b.get(0) ? 1 : -1) //Sorting function tp sprt tensors in order of least to greatest distance /* Step 3 - Average the label value of the top k records */ .slice(0, k)//Get Top k records )} module.exports = knn
Editor is loading...
Leave a Comment