python求向量与x轴的夹角_python 各类距离公式实现

本文介绍了Python实现的多种距离计算方法,包括闵可夫斯基距离、欧氏距离、曼哈顿距离、切比雪夫距离、夹角余弦、汉明距离、杰卡德相似系数等。通过实例解释了各种距离公式的应用场景和优缺点,尤其在处理不同量纲和分布的数据时应注意的问题。此外,还提到了在机器学习中夹角余弦用于衡量样本向量的相似度。
摘要由CSDN通过智能技术生成

给个关注和转发

所列的距离公式列表和代码如下:

  • 闵可夫斯基距离(Minkowski Distance)
  • 欧氏距离(Euclidean Distance)
  • 曼哈顿距离(Manhattan Distance)
  • 切比雪夫距离(Chebyshev Distance)
  • 夹角余弦(Cosine)
  • 汉明距离(Hamming distance)
  • 杰卡德相似系数(Jaccard similarity coefficient)
  • 编辑距离(Edit Distance)
  • 标准化欧氏距离 (Standardized Euclidean distance )
  • 马氏距离(Mahalanobis Distance)
  • 皮尔逊相关系数(Pearson correlation)
  • 布雷柯蒂斯距离(Bray Curtis Distance)

读者可根据自己需求有选择的学习。因使用矢量编程的方法,距离计算得到了较大的简化。

1. 闵可夫斯基距离(Minkowski Distance)

严格意义上,闵氏距离不是一种距离,而是一组距离的定义。

(1)闵氏距离的定义:

两个n维变量A(x11,x12,…,x1n)与 B(x21,x22,…,x2n)间的闵可夫斯基距离定义为:

7509a24286892a2ba5d0af82f156b3b4.png

其中p是一个变参数。

当p=1时,就是曼哈顿距离

当p=2时,就是欧氏距离

当p→∞时,就是切比雪夫距离

根据变参数的不同,闵氏距离可以表示一类的距离。

(2)闵氏距离的缺点

闵氏距离,包括曼哈顿距离、欧氏距离和切比雪夫距离都存在明显的缺点。

举个例子:二维样本(身高,体重),其中身高范围是150~190,体重范围是50~60,有三个样本:a(180,50),b(190,50),c(180,60)。那么a与b之间的闵氏距离(无论是曼哈顿距离、欧氏距离或切比雪夫距离)等于a与c之间的闵氏距离,但是身高的10cm真的等价于体重的10kg么?因此用闵氏距离来衡量这些样本间的相似度很有问题。

简单说来,闵氏距离的缺点主要有两个:

(1)将各个分量的量纲(scale),也就是“单位”当作相同的看待了。

(2)没有考虑各个分量的分布(期望,方差等)可能是不同的。

python中的实现:

# -*- coding:utf-8 -*-import numpy as npx=np.random.random(10)y=np.random.random(10)#方法一:根据公式求解,p=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值