zoukankan      html  css  js  c++  java
  • Cosine Similarity of Two Vectors

    #include <iostream>
    #include <vector>
    #include <cmath>
    #include <numeric>

    template <class T>
    double VectorCosine(const std::vector<T> &In1, const std::vector<T> &In2) {
        if(In1.size() != In2.size()) {
            return -2;
        }
        double la=sqrt(inner_product(In1.begin(), In1.end(), In1.begin(), 0));
        double lb=sqrt(inner_product(In2.begin(), In2.end(), In2.begin(), 0));
        double val=inner_product(In1.begin(), In1.end(), In2.begin(), 0);

        if((std::abs(la-0.0)<0.0001) || std::abs(lb-0.0)<0.0001)
            return -3;

        return val/(la*lb);
    }

    int main() {
        int a[]={3, 2, 0, 5, 0, 0, 0, 2, 0, 0}, b[]={1, 0, 0, 0, 0, 0, 0, 1, 0, 2};
        std::vector<int> v_a(a, a+sizeof(a)/sizeof(a[0])), v_b(b, b+sizeof(b)/sizeof(b[0]));

        double s=VectorCosine(v_a, v_b);

        std::cout<<s<<std::endl;

        return 0;
    }

    Cosine similarity really is a measure of the(cosine of the) angle between x and y. Thus, if the cosine similarity is 1,

    the angle between x and y is 0, and x and y are the same except for magnitude(length). If the cosine similarity is 0,

    then the angle between x and y is 90, and they do not share any terms.

  • 相关阅读:
    函数二 10
    函数初识 09
    文件操作 08
    数据类型的补充 day07
    小数据池 深浅copy 集合
    python Mysql 多条件查询
    ElasticSearch Python 基本操作
    用PyInstaller把Python代码打包成单个独立的exe可执行文件
    python 编译EXE文件
    Git 创建新分支检查分支
  • 原文地址:https://www.cnblogs.com/donggongdechen/p/7768718.html
Copyright © 2011-2022 走看看