📜  Python中的闵可夫斯基距离

📅  最后修改于: 2022-05-13 01:54:23.007000             🧑  作者: Mango

Python中的闵可夫斯基距离

Minkowski 距离是规范向量空间中的度量。闵可夫斯基距离用于向量的距离相似性。给定两个或多个向量,找出这些向量的距离相似度。

机器学习中主要应用闵可夫斯基距离来找出距离相似度。

例子 :

Input : vector1 = 0 2 3 4
        vector2 = 2, 4, 3, 7
        p = 3

Output : distance1 = 3.5033

Input : vector1 = 1, 4, 7, 12, 23
        vector2 = 2, 5, 6, 10, 20
        p = 2

Output : distance2 = 4.0

注意:这里距离 1 和距离 2 几乎相同,因此它将位于相同的附近区域。

Python3
# Python3 program to find Minkowski distance
 
# import math library
from math import *
from decimal import Decimal
 
# Function distance between two points
# and calculate distance value to given
# root value(p is root value)
def p_root(value, root):
     
    root_value = 1 / float(root)
    return round (Decimal(value) **
             Decimal(root_value), 3)
 
def minkowski_distance(x, y, p_value):
     
    # pass the p_root function to calculate
    # all the value of vector parallelly
    return (p_root(sum(pow(abs(a-b), p_value)
            for a, b in zip(x, y)), p_value))
 
# Driver Code
vector1 = [0, 2, 3, 4]
vector2 = [2, 4, 3, 7]
p = 3
print(minkowski_distance(vector1, vector2, p))


输出 :

3.503

参考 :
https://en.wikipedia.org/wiki/Minkowski_distance