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