JavaScript-计算皮尔逊相关系数


// 计算皮尔逊相关系数
function pearsonCorrelation(s, t) {
    let sum1 = 0;
    let sum2 = 0;
    let sum1Sq = 0;
    let sum2Sq = 0;
    let pSum = 0;
    let n = s.length;

    for (let i = 0; i < n; i++) {
        sum1 += s[i];
        sum2 += t[i];
        sum1Sq += Math.pow(s[i], 2);
        sum2Sq += Math.pow(t[i], 2);
        pSum += s[i] * t[i];
    }

    let num = pSum - (sum1 * sum2) / n;
    let den = Math.sqrt(
        (sum1Sq - Math.pow(sum1, 2) / n) * (sum2Sq - Math.pow(sum2, 2) / n)
    );

    if (den === 0) return 0;

    return num / den;
}

// 计算相似度 (0-1,值越大越相似)
function pccSimilarity(s, t) {
    return (pearsonCorrelation(s, t) + 1) / 2;
}

文章作者: 钱不寒
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 钱不寒 !
  目录