Python 余弦相似度与皮尔逊相关系数 计算实例
作者:gmHappy 时间:2022-02-24 01:32:52
夹角余弦(Cosine)
也可以叫余弦相似度。 几何中夹角余弦可用来衡量两个向量方向的差异,机器学习中借用这一概念来衡量样本向量之间的差异。
(1)在二维空间中向量A(x1,y1)与向量B(x2,y2)的夹角余弦公式:
(2) 两个n维样本点a(x11,x12,…,x1n)和b(x21,x22,…,x2n)的夹角余弦
类似的,对于两个n维样本点a(x11,x12,…,x1n)和b(x21,x22,…,x2n),可以使用类似于夹角余弦的概念来衡量它们间的相似程度。
即:
余弦取值范围为[-1,1]。求得两个向量的夹角,并得出夹角对应的余弦值,此余弦值就可以用来表征这两个向量的相似性。夹角越小,趋近于0度,余弦值越接近于1,它们的方向更加吻合,则越相似。当两个向量的方向完全相反夹角余弦取最小值-1。当余弦值为0时,两向量正交,夹角为90度。因此可以看出,余弦相似度与向量的幅值无关,只与向量的方向相关。
import numpy as np
x=np.random.random(10)
y=np.random.random(10)
#方法一:根据公式求解
d1=np.dot(x,y)/(np.linalg.norm(x)*np.linalg.norm(y))
#方法二:根据scipy库求解
from scipy.spatial.distance import pdist
X=np.vstack([x,y])
d2=1-pdist(X,'cosine')
两个向量完全相等时,余弦值为1,如下的代码计算出来的d=1。
d=1-pdist([x,x],'cosine')
皮尔逊相关系数(Pearson correlation)
(1) 皮尔逊相关系数的定义
前面提到的余弦相似度只与向量方向有关,但它会受到向量的平移影响,在夹角余弦公式中如果将 x 平移到 x+1, 余弦值就会改变。怎样才能实现平移不变性?这就要用到皮尔逊相关系数(Pearson correlation),有时候也直接叫相关系数。
如果将夹角余弦公式写成:
皮尔逊相关系数具有平移不变性和尺度不变性,计算出了两个向量(维度)的相关性。
在python中的实现:'
import numpy as np
x=np.random.random(10)
y=np.random.random(10)
#方法一:根据公式求解
x_=x-np.mean(x)
y_=y-np.mean(y)
d1=np.dot(x_,y_)/(np.linalg.norm(x_)*np.linalg.norm(y_))
#方法二:根据numpy库求解
X=np.vstack([x,y])
d2=np.corrcoef(X)[0][1]
相关系数是衡量随机变量X与Y相关程度的一种方法,相关系数的取值范围是[-1,1]。相关系数的绝对值越大,则表明X与Y相关度越高。当X与Y线性相关时,相关系数取值为1(正线性相关)或-1(负线性相关)。
来源:https://blog.csdn.net/ctwy291314/article/details/88756648
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
使用游标进行PHP SQLSRV查询的方法与注意事项
不得不看的JS基础知识(事件触发篇)
将python字符串转化成长表达式的函数eval实例
一文搞懂Python中is和==的区别
让JavaScript拯救HTML5的离线存储[译]
![](https://img.aspxhome.com/file/UploadPic/20095/15/01-33s.jpg)
JS中模拟函数重载
Django进阶之CSRF的解决
![](https://img.aspxhome.com/file/2023/1/102971_0s.png)
如何使用Python破解ZIP或RAR压缩文件密码
![](https://img.aspxhome.com/file/2023/5/92055_0s.png)
实例讲解PHP验证邮箱是否合格
![](https://img.aspxhome.com/file/2023/8/88298_0s.png)
python实现向ppt文件里插入新幻灯片页面的方法
将字符实体引用转换成 Unicode 字符
Python中functools模块的常用函数解析
pygame游戏之旅 添加icon和bgm音效的方法
![](https://img.aspxhome.com/file/2023/8/87758_0s.png)
pytorch模型存储的2种实现方法
20分钟成功编写bootstrap响应式页面 就这么简单
![](https://img.aspxhome.com/file/2023/0/56050_0s.png)
详解php中的类与对象(继承)
ASP访问数量统计代码
DenseNet121模型实现26个英文字母识别任务
Dojo Style Javascript 编程规范
Python实现的桶排序算法示例
![](https://img.aspxhome.com/file/2023/4/110364_0s.png)