ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python 求各种距离公式(numpy矩阵)

2022-01-08 00:00:20  阅读:339  来源: 互联网

标签:force python 样本 矩阵 距离 pdist 欧式 numpy


导入必要库 :

from scipy.spatial.distance import pdist, squareform

一、距离计算(压缩成一维的)

1、欧式距离

        计算数组矩阵 X 样本之间的欧式距离,返回值为 Y 为压缩距离元组或矩阵(以下等同)

X = pdist(X, 'euclidean')

2、明氏距离

X = pdist(X, 'minkowski', p)

3、曼哈顿距离

Y = pdist(X, 'cityblock')

4、标准化欧式距离

        计算数组样本之间的标准化欧式距离 ,v是方差向量,表示 v[i]表示第i个分量的方差,如果缺失。默认自动计算。

X = pdist(X, 'seuclidean', V=None)

5、欧式距离的平方

X = pdist(X, 'sqeuclidean')

6、余弦距离

X = pdist(X, 'cosine')

7、相关距离

X = pdist(X, 'hamming')

        注意:相关距离 + 相关系数 = 1。所以,相关系数为:

X = 1 - pdist(X, 'correlation')

# 或采用 numpy 的相关系数函数
X = np.corrcoef(X)

8、汉明距离

X = pdist(X, 'hamming')

9、杰卡德距离

X = pdist(X, 'jaccard')

10、切比雪夫距离

X = pdist(X, 'chebyshev')

11、堪培拉距离

 X = pdist(X, 'canberra')

12、马氏距离

X = pdist(X, 'mahalanobis', VI=None)

        还有很多,具体参考官方文件。

二、解压(即解压成 N * N 矩阵)

Y = squareform(X, force='no', checks=True)

        其中,X 就是上文提到的压缩矩阵 Y,force 如同 MATLAB 一样,如果 force 等于 ‘tovector’ or ‘tomatrix’, 输入就会被当做距离矩阵或距离向量。

        cheak 当 X-X.T 比较小或 diag(X) 接近于零,是有必要设成 True 的,返回值 Y 为一个距离矩阵Y[i,j] 表示样本 i 与样本 j 的距离。

标签:force,python,样本,矩阵,距离,pdist,欧式,numpy
来源: https://blog.csdn.net/qq_45100200/article/details/122374326

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有