欧几里得距离#

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