-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.js
36 lines (32 loc) · 1008 Bytes
/
index.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
// metric relative difference 1
var metricRelativeDiff1 = function(a, b) {
var diff = Math.abs(a - b);
var max = Math.max(Math.abs(a), Math.abs(b));
var rd = diff / max;
return rd;
};
exports.rd1 = metricRelativeDiff1;
// metric relative difference 2
var metricRelativeDiff2 = function(a, b) {
var diff = Math.abs(a - b);
var avg = (Math.abs(a) + Math.abs(b)) / 2;
var rd = diff / avg;
return rd;
};
exports.rd2 = metricRelativeDiff2;
// similarityFn(a,b) where a and b are floating point
// returns 0 to 1 where 1 is most similar 0 is completely dissimilar
var similarityFn = function(other,self) {
var diff = Math.abs(other - self);
var ratio = diff / self;
var match = 1 - ratio;
return match;
};
exports.similar = exports.similarityFn = similarityFn;
// same as similarityFn but against a key
exports.similarKey = exports.similarityFnKey = function(other,self,key) {
var diff = Math.abs(other[key]- self[key]);
var ratio = diff / self[key];
var match = 1 - ratio;
return match;
};