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_squaredY_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]])