歐幾里得距離#
- 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_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]])