euclidean_distances#
- sklearn.metrics.pairwise.euclidean_distances(X, Y=None, *, Y_norm_squared=None, squared=False, X_norm_squared=None)#
计算向量数组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
函数所要求的那样。更多信息请参阅 用户指南 。
- Parameters:
- X{array-like, sparse matrix},形状为 (n_samples_X, n_features)
一个数组,其中每一行是一个样本,每一列是一个特征。
- Y{array-like, sparse matrix},形状为 (n_samples_Y, n_features),默认=None
一个数组,其中每一行是一个样本,每一列是一个特征。 如果为
None
,方法使用Y=X
。- Y_norm_squaredarray-like,形状为 (n_samples_Y,) 或 (n_samples_Y, 1) 或 (1, n_samples_Y),默认=None
预先计算的Y中向量的点积(例如,
(Y**2).sum(axis=1)
) 在某些情况下可能会被忽略,请参见下面的注释。- squaredbool, 默认=False
返回平方欧几里得距离。
- X_norm_squaredarray-like,形状为 (n_samples_X,) 或 (n_samples_X, 1) 或 (1, n_samples_X),默认=None
预先计算的X中向量的点积(例如,
(X**2).sum(axis=1)
) 在某些情况下可能会被忽略,请参见下面的注释。
- Returns:
- distancesndarray,形状为 (n_samples_X, n_samples_Y)
返回
X
的行向量和Y
的行向量之间的距离。
See also
paired_distances
X和Y中元素对的距离。
Notes
为了获得更好的精度,如果将
X_norm_squared
和Y_norm_squared
作为np.float32
传递,它们可能不会被使用。Examples
>>> from sklearn.metrics.pairwise import euclidean_distances >>> X = [[0, 1], [1, 1]] >>> # X的行之间的距离 >>> euclidean_distances(X, X) array([[0., 1.], [1., 0.]]) >>> # 到原点的距离 >>> euclidean_distances(X, [[0, 0]]) array([[1. ], [1.41421356]])