euclidean_distances#

sklearn.metrics.pairwise.euclidean_distances(X, Y=None, *, Y_norm_squared=None, squared=False, X_norm_squared=None)[source]#

计算特征数组 X 和 Y 中每对之间的距离矩阵。

出于效率考虑,一对行向量 x 和 y 之间的欧几里德距离计算方式如下:

dist(x, y) = sqrt(dot(x, x) - 2 * dot(x, y) + dot(y, y))

这种计算方式相比其他距离计算方法有两大优势。首先,它在处理稀疏数据时计算效率很高。其次,如果一个参数发生变化而另一个保持不变,那么 dot(x, x) 和/或 dot(y, y) 可以预先计算。

然而,这不是最精确的计算方法,因为该等式可能存在“灾难性抵消”的问题。此外,此函数返回的距离矩阵可能不像例如 scipy.spatial.distance 函数所要求的那样精确对称。

更多内容请参阅 用户指南

参数:
X{类数组, 稀疏矩阵} 形状为 (n_samples_X, n_features)

一个数组,其中每一行是一个样本,每一列是一个特征。

Y{类数组, 稀疏矩阵} 形状为 (n_samples_Y, n_features), 默认为 None

一个数组,其中每一行是一个样本,每一列是一个特征。如果为 None,则方法使用 Y=X

Y_norm_squared类数组,形状为 (n_samples_Y,) 或 (n_samples_Y, 1) 或 (1, n_samples_Y), 默认为 None

向量 Y 的预计算点积 (例如,(Y**2).sum(axis=1))。在某些情况下可能会被忽略,详见下方说明。

squared布尔值, 默认为 False

返回平方欧几里德距离。

X_norm_squared类数组,形状为 (n_samples_X,) 或 (n_samples_X, 1) 或 (1, n_samples_X), 默认为 None

向量 X 的预计算点积 (例如,(X**2).sum(axis=1))。在某些情况下可能会被忽略,详见下方说明。

返回:
distancesndarray,形状为 (n_samples_X, n_samples_Y)

返回 X 的行向量与 Y 的行向量之间的距离。

另请参阅

paired_distances

X 和 Y 中元素对之间的距离。

注意

为了获得更高的精度,X_norm_squaredY_norm_squared 如果它们作为 np.float32 传递,可能会被忽略(不使用)。

示例

>>> from sklearn.metrics.pairwise import euclidean_distances
>>> X = [[0, 1], [1, 1]]
>>> # distance between rows of X
>>> euclidean_distances(X, X)
array([[0., 1.],
       [1., 0.]])
>>> # get distance to origin
>>> euclidean_distances(X, [[0, 0]])
array([[1.        ],
       [1.41421356]])