zoukankan      html  css  js  c++  java
  • 协同过滤算法中皮尔逊相关系数的计算 C++

    template <class T1, class T2>
    double Pearson(std::vector<T1> &inst1, std::vector<T2> &inst2) {
      if(inst1.size() != inst2.size()) {
        std::cout<<"the size of the vectors is not the same ";
        return 0;
      }
      size_t n=inst1.size();
      double pearson=n*inner_product(inst1.begin(), inst1.end(), inst2.begin(), 0.0)-accumulate(inst1.begin(), inst1.end(), 0.0)*accumulate(inst2.begin(), inst2.end(), 0.0);
      double temp1=n*inner_product(inst1.begin(), inst1.end(), inst1.begin(), 0.0)-pow(accumulate(inst1.begin(), inst1.end(), 0.0), 2.0);
      double temp2=n*inner_product(inst2.begin(), inst2.end(), inst2.begin(), 0.0)-pow(accumulate(inst2.begin(), inst2.end(), 0.0), 2.0);
      temp1=sqrt(temp1);
      temp2=sqrt(temp2);
      pearson=pearson/(temp1*temp2);

      return pearson;
    }

    皮尔逊相关系数是协同过滤算法中最常用的相似度求解算法。皮尔逊相关系数算法可以用来度量两个变量之间的

    相关程度,计算结果是介于1和-1间的值,1表示完全正相关,0表示无关,-1表示完全负相关。

  • 相关阅读:
    原生js面试题
    ZJOI2017day2退役战
    uoj6
    uoj5
    uoj2
    uoj1
    论逗逼的自我修养之ZJOI2017Day1
    noip2016滚粗记
    统计损失
    珍珠项链
  • 原文地址:https://www.cnblogs.com/donggongdechen/p/9536319.html
Copyright © 2011-2022 走看看