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