歐幾里得距離#

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 函式所要求的那樣完全對稱。

請在使用者指南中閱讀更多資訊。

參數:
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))。在某些情況下可能會被忽略,請參閱下面的注意事項。

squaredbool,預設值=False

傳回歐幾里得距離的平方。

X_norm_squared形狀為 (n_samples_X,) 或 (n_samples_X, 1) 或 (1, n_samples_X) 的類陣列,預設值=None

X 中向量的預先計算點積(例如,(X**2).sum(axis=1))。在某些情況下可能會被忽略,請參閱下面的注意事項。

傳回值:
距離形狀為 (n_samples_X, n_samples_Y) 的 ndarray

傳回 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]])