Files
d3-spring-model/examples/js/distances/cosineSimilarity.js
Pitchaya Boonsarngsuk 61f2be55fe Init from given files
2017-11-07 21:33:16 +00:00

40 lines
1.2 KiB
JavaScript

/**
* Calculate the distances by using the numbers, strings and dates.
* @param {node} source
* @param {node} target
* @param {array} properties - the properties of the nodes.
* @return {number} the distance between source and target nodes.
*/
function calculateCosineSimilarity(source, target, properties, normArgs) {
var numerator = 0.0;
// console.log(properties);
// Iterate through every column of data
for (var i = 0; i < properties.length; i++) {
property = properties[i];
if (property.toLowerCase() !== "class" && property.toLowerCase() !== "app" && property.toLowerCase() !== "user" && property.toLowerCase() !== "weekday") {
var s = source[property],
t = target[property];
numerator += s * t;
}
}
let denominator = squareRooted(source, properties, normArgs) * squareRooted(target, properties, normArgs);
// console.log(Math.abs(numerator / denominator));
return Math.abs(numerator / denominator);
}
function squareRooted(node, properties, normArgs) {
var sum = 0.0;
for (var i = 0, s; i < properties.length; i++) {
var s = node[properties[i]];
sum += s * s;
}
return Math.sqrt(sum);
}