我正在通过“编程集体智慧”中的练习,但我正在使用JavaScript。我在Pearson Correlation算法中遇到了一些麻烦。这里的功能:皮尔逊相关函数返回南
function rec(object1, object2) {
var sum1 = 0;
var sum2 = 0;
var squareSum1 = 0;
var squareSum2 = 0;
var productsSum = 0;
var i;
var commonKeys = commonProperties(object1, object2);
for (i = 0; i >= commonKeys.length; i += 1) {
sum1 += object1[commonKeys[i]];
sum2 += object2[commonKeys[i]];
squareSum1 += Math.pow(object1[commonKeys[i]], 2);
squareSum2 += Math.pow(object2[commonKeys[i]], 2);
productsSum += object1[commonKeys[i]] * object2[commonKeys[i]];
}
var num1 = productsSum - (sum1 * sum2/commonKeys.length);
var num2 = Math.sqrt((squareSum1 - (Math.pow(sum1, 2)/commonKeys.length)) * (squareSum2 - (Math.pow(sum2, 2)/commonKeys.length)));
return num1/num2;
}
完整的JSFiddle是here。我通过JSLint运行它,这就是为什么它可能有点混乱。任何人都知道什么是错的?
NUM1为0,NUM2是0和0/0 = NaN的 –
你得到NaN的,因为NUM2是0。它是不允许被零 – andreasnico
分你永远不进入for循环'我
Jaco