sklearn.metrics.pairwise.euclidean_distances

sklearn.metrics.pairwise.euclidean_distances(X, Y=None, *, Y_norm_squared=None, squared=False, X_norm_squared=None)

源码

将X行(和Y = X)视为向量,计算每对向量之间的距离矩阵。

出于效率原因,一对行向量x和y之间的欧式距离计算为:

dist(x, y) = sqrt(dot(x, x) - 2 * dot(x, y) + dot(y, y))

与其他计算距离的方式相比,此公式具有两个优点。首先,在处理稀疏数据时它的计算效率很高。其次,如果一个参数变化而另一个参数保持不变,则可以预先计算点(x,x)和/或点(y,y)。

但是,这不是进行此计算的最精确方法,并且该函数返回的距离矩阵可能不像scipy.spatial.distance之类的函数所要求的那样完全对称。

用户指南中阅读更多内容。

参数 说明
X {array-like, sparse matrix}, shape (n_samples_1, n_features)
Y {array-like, sparse matrix}, shape (n_samples_2, n_features)
Y_norm_squared array-like, shape (n_samples_2, ), optional
Y中向量的预先计算的点积(例如(Y ** 2).sum(axis = 1))在某些情况下可能会被忽略,请参见以下注释。
squared boolean, optional
返回平方的欧氏距离。
X_norm_squared array-like of shape (n_samples,), optional
X中向量的预先计算的点积(例如(X ** 2).sum(axis = 1))在某些情况下可能会被忽略,请参见下面的注释。
返回值 说明
distances array, shape (n_samples_1, n_samples_2)

另见:

paired_distances

X和Y元素对之间的距离。

为了获得更好的精度,如果X_norm_squared和Y_norm_squared作为float32传递,则可以不使用它们。

示例

>>> from sklearn.metrics.pairwise import euclidean_distances
>>> X = [[01], [11]]
>>> # distance between rows of X
>>> euclidean_distances(X, X)
array([[0.1.],
       [1.0.]])
>>> # get distance to origin
>>> euclidean_distances(X, [[00]])
array([[1.        ],
       [1.41421356]])