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{类数组, 稀疏矩阵} 形状为 (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)
)。在某些情况下可能会被忽略,详见下方说明。
- 返回:
- distancesndarray,形状为 (n_samples_X, n_samples_Y)
返回
X
的行向量与Y
的行向量之间的距离。
另请参阅
paired_distances
X 和 Y 中元素对之间的距离。
注意
为了获得更高的精度,
X_norm_squared
和Y_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]])