美文网首页
余弦相似度计算及实现

余弦相似度计算及实现

作者: AI秘籍 | 来源:发表于2020-02-26 20:17 被阅读0次

0.绪

余弦相似度用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小。余弦值越接近1,就表明夹角越接近0度,也就是两个向量越相似,这就叫"余弦相似性"。


image.png

1.推导公式

image.png
image.png
image.png

2.代码示例


/*
特征向量相似度和距离的计算
相似度:
·夹角余弦
·相关系数
·Dice
·Jaccard
距离
·明氏距离
·欧氏距离
·马氏距离
·Jffreys & Matusita 距离
·Mahalanobis 距离,未实现,协方差矩阵
·Camberra 距离(Lance 距离,Williams 距离)
*/

#include <iostream>
#include <vector>
#include <opencv2/opencv.hpp>

using namespace cv;
using namespace std;

// ret = v1[0]*v2[0]+v1[1]*v2[1]+...
double dot_product(
    const vector<double> &v1,
    const vector<double> &v2)
{
    assert(v1.size() == v2.size());
    double ret=0.0;
    for (size_t i = 0; i < v1.size(); i++)
    {
        ret += v1[i]*v2[i];
    }
    return ret;
}

//sqrt(sum(v*v))
double module(const vector<double> &v)
{
    double ret=0.0;
    for (size_t i = 0; i < v.size(); i++)
    {
        ret += v[i]*v[i];
    }
    return sqrt(ret);
}

// 余弦相似性计算
double cosine(
    const vector<double> &v1,
    const vector<double> &v2)
{
    assert(v1.size() == v2.size());
    double ret = dot_product(v1,v2)/(module(v1)*module(v2));
    return ret;
}


int main()
{      
        //当向量归一化时,只需计算ret = v1[0]*v2[0]+v1[1]*v2[1]+...
        //当向量没归一化时,... ... 
    vector<double> v1{1,2,3,4,5};
    vector<double> v2{5,4,3,2,1};
    double ret = cosine(v1,v2);
    std::cout<<"cosine= "<<ret<<std::endl;


    return 0;
}

参考:

1.https://blog.csdn.net/qq_26295547/article/details/79645479
2.https://blog.csdn.net/baidu_38172402/article/details/97627774

相关文章

  • 余弦相似度计算及实现

    0.绪 余弦相似度用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小。余弦值越接近1,就表明夹角越接近0...

  • 余弦相似度计算

    1. 余弦相似度: 余弦相似度,又称为余弦相似性,是通过计算两个向量的夹角余弦值来评估他们的相似度。余弦相似度将向...

  • 20-余弦相似度及其R实现

    1 余弦相似度 余弦相似度 (Cosine Similarity) 通过计算两个向量的夹角余弦值来评估他们的相似度...

  • 余弦相似度理解及shengxin中应用

    cosin similarity(余弦相似度) 1,它最常见的应用是计算文本相似度。将文本转换为向量 2,余弦相似...

  • Python 使用sklearn计算余弦相似度

    背景 在计算相似度时,常常用到余弦夹角来判断相似度,Cosine(余弦相似度)取值范围[-1,1],当两个向量的方...

  • 余弦相似度算法与kotlin实现

    余弦相似度计算 余弦相似度用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小。余弦值越接近1,就表明夹角...

  • 模型评估——余弦距离的应用

    余弦相似度和余弦距离: 余弦相似度取值范围为[-1,1] 余弦距离:1-余弦相似度,取值为 [0,2] 余弦距离和...

  • NLP详解

    (一)余弦相似度、向量空间模型 1、相似度 • 相似度度量:计算个体间相似程度• 相似度值越小,距离越大,相似度值...

  • Python 计算余弦相似度

    以下代码用到了 numpy 包。代码实现的功能是计算两个向量之间的余弦相似度。我们可以把两个向量想象成空间中的两条...

  • Numpy计算余弦相似度:向量之间,向量与矩阵,矩阵与矩阵

    摘要:Numpy,Python 余弦相似度公式 余弦相似度是衡量向量夹角的余弦值作为相似度度量指标,夹角越小相似度...

网友评论

      本文标题:余弦相似度计算及实现

      本文链接:https://www.haomeiwen.com/subject/rtkwchtx.html