Python计算距离矩阵
在数据分析和机器学习领域,计算距离矩阵是一个常见的任务。距离矩阵是根据给定的一组数据计算出的一个矩阵,其中每个元素表示两个数据点之间的距离。这个矩阵可以用于聚类、分类、降维等任务。Python提供了许多库和函数来计算距离矩阵,本文将介绍一些常用的方法,并提供相应的代码示例。
欧氏距离
欧氏距离是最常用的距离度量方法之一,它衡量的是两个点之间的直线距离。在二维空间中,可以通过勾股定理计算欧氏距离,而在更高维度的空间中,可以使用相似的方法。
import numpy as np
def euclidean_distance(x, y):
return np.sqrt(np.sum((x - y) ** 2))
# 示例
x = np.array([0, 0])
y = np.array([3, 4])
print(euclidean_distance(x, y)) # 输出 5.0
曼哈顿距离
曼哈顿距离是另一种常见的距离度量方法,它衡量的是两个点之间沿坐标轴的绝对距离之和。在二维空间中,可以通过计算两点之间的水平和垂直距离之和得到曼哈顿距离,而在更高维度的空间中,可以使用相似的方法。
def manhattan_distance(x, y):
return np.sum(np.abs(x - y))
# 示例
x = np.array([0, 0])
y = np.array([3, 4])
print(manhattan_distance(x, y)) # 输出 7
闵可夫斯基距离
闵可夫斯基距离是一种通用的距离度量方法,它是欧氏距离和曼哈顿距离的一种推广。闵可夫斯基距离可以通过以下公式计算:
:
return np.power(np.sum(np.power(np.abs(x - y), p)), 1 / p)
# 示例
x = np.array([0, 0])
y = np.array([3, 4])
print(minkowski_distance(x, y, 2)) # 输出 5.0,等同于欧氏距离
print(minkowski_distance(x, y, 1)) # 输出 7,等同于曼哈顿距离
切比雪夫距离
切比雪夫距离是一种距离度量方法,它衡量的是两个点之间在各个坐标轴上的最大差值。在二维空间中,切比雪夫距离等于两点之间的坐标差的最大值。
def chebyshev_distance(x, y):
return np.max(np.abs(x - y))
# 示例
x = np.array([0, 0])
y = np.array([3, 4])
print