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{array-like, sparse matrix} of shape (n_samples_X, n_features)

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

Y{array-like, sparse matrix} of shape (n_samples_Y, n_features), default=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 of shape (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]])