欧几里得距离#
- 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)
)。在某些情况下可能会被忽略,请参见下面的说明。
- 返回值:
- distances形状为 (n_samples_X, n_samples_Y) 的 ndarray
返回
X
的行向量和Y
的行向量之间的距离。
另请参见
成对距离
X 和 Y 元素对之间的距离。
注释
为了获得更高的精度,如果
X_norm_squared
和Y_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]])