闵可夫斯基距离(Minkowski Distance)是一种在多维空间中测量两个点之间距离的方法。它是欧几里得距离和曼哈顿距离的泛化形式,通过一个参数 ( p ) 来控制距离的计算方式。
闵可夫斯基距离的定义如下:
[ D(X, Y) = \left( \sum_{i=1}^{n} |x_i - y_i|^p \right)^{\frac{1}{p}} ]
其中:
根据 ( p ) 的不同取值,闵可夫斯基距离可以表示几种常见的距离度量:
闵可夫斯基距离在多个领域有广泛应用,包括但不限于:
对于高维数据,闵可夫斯基距离的计算可能会变得非常耗时。
解决方法:
当 ( p ) 较小时(如 ( p = 1 ) 或 ( p = 2 )),闵可夫斯基距离对异常值较为敏感。
解决方法:
选择不合适的 ( p ) 值可能导致距离度量结果不符合预期。
解决方法:
以下是一个计算闵可夫斯基距离的简单示例:
import numpy as np
def minkowski_distance(X, Y, p):
return np.power(np.sum(np.power(np.abs(X - Y), p)), 1/p)
# 示例向量
X = np.array([1, 2, 3])
Y = np.array([4, 0, -1])
# 计算不同阶数的闵可夫斯基距离
print("p=1 (Manhattan):", minkowski_distance(X, Y, 1))
print("p=2 (Euclidean):", minkowski_distance(X, Y, 2))
print("p=3:", minkowski_distance(X, Y, 3))
通过上述代码,可以直观地看到不同 ( p ) 值对距离计算结果的影响。
领取专属 10元无门槛券
手把手带您无忧上云