sklearn.neighbors.DistanceMetric?

class sklearn.neighbors.DistanceMetric

DistanceMetric類。

此類為快速距離度量功能提供統一的接口。 可以通過get_metric類方法和度量標準字符串標識符(請參見下文)訪問各種度量標準。

示例

>>> from sklearn.neighbors import DistanceMetric
>>> dist = DistanceMetric.get_metric('euclidean')
>>> X = [[012],
         [345]]
>>> dist.pairwise(X)
array([[ 0.        ,  5.19615242],
       [ 5.19615242,  0.        ]])

可用指標

以下列出了字符串指標標識符和關聯的距離指標類別:

用于實值向量空間的度量標準:

識別碼 類名 args 距離函數
“euclidean” 歐幾里得距離 . sqrt(sum((x - y)^2))
“manhattan” 曼哈頓距離 . sum(|x-y|)
“chebyshev” 切比雪夫距離 . max(|x-y|)
“minkowski” 明可夫斯基距離 p sum(|x-y|^p)^^(1/p)
“wminkowski” WMinkowski距離 p, w sum(|w * (x - y)|^^p)^^(1/p)
“seuclidean” 歐氏距離 V sqrt(sum((x - y)^2 / V))
“mahalanobis” 馬氏距離 V or VI sqrt((x - y)' V^-1 (x - y))

用于二維向量空間的度量:請注意,haversine距離度量標準需要[緯度,經度]形式的數據,并且輸入和輸出均以弧度為單位。

識別碼 類名 距離函數
“haversine” Haversine距離 2 arcsin(sqrt(sin^2(0.5*dx) + cos(x1)cos(x2)sin^2(0.5*dy))

用于整數值向量空間的度量標準:盡管打算用于整數值向量,但在實值向量的情況下,它們也是有效的指標。

識別碼 類名 距離函數
“hamming” 漢明距離 N_unequal(x, y) / N_tot
“canberra” 堪培拉距離 sum(|x-y|/(|x|+|y|))
“braycurtis” 布雷·科蒂斯距離 sum(|x-y|)/(sum(|x)+sum(|y|))

用于布爾值向量空間的指標:任何非零條目都將評估為“ True”。 在下面的清單中,使用以下縮寫:

  • N : 尺寸數
  • NTT : 兩個值均為True的暗點數
  • NTF : 第一個為True,第二個為False的暗數
  • NFT : 第一個值為False,第二個為True的暗點數
  • NFF : 兩個值均為False的暗點數
  • NNEQ : 不相等尺寸的數量,NEW = NFT + NFT
  • NNZ : 非零尺寸的數量,NNZ = NTF + NFT + NTT
識別碼 類名 距離函數
“jaccard” 提卡距離 NNEQ / NNZ
“matching” 匹配距離 NNEQ / N
“dice” 骰子距離 NNEQ / (NTT + NNZ)
“kulsinski” 庫爾辛斯基距離 (NNEQ + N - NTT) / (NNEQ + N)
“rogerstanimoto” 羅杰斯·谷本距離 2 * NNEQ / (N + NNEQ)
“russellrao” 拉塞爾距離 NNZ / N
“sokalmichener” 索卡爾·米歇納距離 2 * NNEQ / (N + NNEQ)
“sokalsneath” 索卡爾潛行距離 NNEQ / (NNEQ + 0.5 * NTT)

用戶定義的距離:

識別碼 類名 args
“pyfunc” PyFuncDistance func

這里的func是一個函數,它接受兩個一維numpy數組,并返回一個距離。 請注意,為了在BallTree中使用該距離,必須是一個真實的指標:即它必須滿足以下屬性

  1. 非負性:d(x,y)> = 0
  2. 定義:當且僅當x == y時,d(x,y)= 0
  3. 對稱性:d(x,y)= d(y,x)
  4. 三角不等式: d(x, y) + d(y, z) >= d(x, z)

由于調用python函數涉及Python對象開銷,因此這將相當慢,但是它將具有與其他距離相同的縮放比例。

方法

方法 說明
dist_to_rdist() 將真實距離轉換為縮小的距離。
get_metric() 從字符串標識符獲取給定的距離度量。
pairwise() 計算X和Y之間的成對距離
rdist_to_dist() 將縮小的距離轉換為真實距離。
__init__(*args, **kwargs)

初始化. 請參閱help(type())以獲得準確的說明。

dist_to_rdist()

將真實距離轉換為縮小的距離。

為某些度量標準定義的減小的距離是一種計算上更有效的度量,可以保留真實距離的等級。 例如,在歐幾里得距離度量標準中,減小的距離是歐幾里德距離的平方。

get_metric()

從字符串標識符獲取給定的距離度量。

有關可用度量的列表,請參見DistanceMetric的文檔字符串。

參數 說明
metric string or class name
使用的距離度量
**kwargs 其他參數將傳遞到請求的指標
pairwise()

計算X和Y之間的成對距離

為了測試,這是一個方便的例程。 對于許多指標,scipy.spatial.distance.cdist和scipy.spatial.distance.pdist中的實用程序將更快。

參數 說明
X array_like
形狀數組(Nx,D),代表D維中的Nx個點。
Y array_like (optional)
形狀數組(Ny,D),代表D維中的Ny個點。 如果未指定,則Y = X。
返回值 說明
dist ndarray
X和Y中的點之間的成對距離的形狀(Nx,Ny)數組。
rdist_to_dist()

將縮小的距離轉換為真實距離。

為某些度量標準定義的減小的距離是一種計算上更有效的度量,可以保留真實距離的等級。 例如,在歐幾里得距離度量標準中,減小的距離是歐幾里德距離的平方。