我是靠谱客的博主 聪明芒果,最近开发中收集的这篇文章主要介绍计算样本之间的距离--欧拉距离、曼哈顿距离和明科夫斯基距离一、欧拉距离二、曼哈顿距离三、明可夫斯基距离,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、欧拉距离

欧几里得距离,也叫欧式距离。

 sqrt{sum_{i=1}^{n}{left ( X^{(a)}_i}-X^{(b)}_i right )^2}

应用举例:

1.先画个图:

代码(在jupyter工具中使用):

import numpy as np
import matplotlib.pyplot as plt

X = np.array([
    [5,1],
    [1,4]
])

plt.plot(X[:,0], X[:,1],'r-o')
plt.annotate('a', xy=X[0])
plt.annotate('b', xy=X[1])

plt.plot([1,5],[1,1],'g--')
plt.plot([1,1],[1,4],'g--')

plt.show()

np.sum((X[0]-X[1])**2)**(1/2)  # 求欧拉距离

 

距离 = √[(Xa - Xb)²+(Ya - Yb)²]

2.数学代入计算得:

3.使用numpy方法计算:

二、曼哈顿距离

sum_{i=1}^{n}{|X^{(a)}_i-X^{(b)}_i|}

运算量相较欧拉距离简单一些

 

三、明可夫斯基距离

left ( sum_{i=1}^{n}{|X^{(a)}_i-X^{(b)}_i|}right )^{frac{1}{1}}    

left ( sum_{i=1}^{n}{|X^{(a)}_i-X^{(b)}_i|^{2}} right )^{frac{1}{2}}

left ( sum_{i=1}^{n}{|X^{(a)}_i-X^{(b)}_i|^{p}} right )^{frac{1}{p}}

p = 1 时,为曼哈顿距离;

p = 2 时,为欧拉距离;

p >2 时,为明可夫斯基距离。

举例:

1.定义求两点距离的函数,X沿用上文数组

def distance(a, b, p=2):
    return np.sum(np.abs(a-b)**p)**(1/p)

2.求欧拉距离

distance(X[0],X[1])  # 欧拉距离

3.求曼哈顿距离

distance(X[0],X[1],p=1)  # 曼哈顿距离

4.多特征值数组求其距离

# 生成一个多特征数组
X = np.array([
    [5,1,11,6],
    [1,4,43,99]
])

 

最后

以上就是聪明芒果为你收集整理的计算样本之间的距离--欧拉距离、曼哈顿距离和明科夫斯基距离一、欧拉距离二、曼哈顿距离三、明可夫斯基距离的全部内容,希望文章能够帮你解决计算样本之间的距离--欧拉距离、曼哈顿距离和明科夫斯基距离一、欧拉距离二、曼哈顿距离三、明可夫斯基距离所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部