sklearn.neighbors.DistanceMetric?
class sklearn.neighbors.DistanceMetric
DistanceMetric類。
此類為快速距離度量功能提供統一的接口。 可以通過get_metric類方法和度量標準字符串標識符(請參見下文)訪問各種度量標準。
示例
>>> from sklearn.neighbors import DistanceMetric
>>> dist = DistanceMetric.get_metric('euclidean')
>>> X = [[0, 1, 2],
[3, 4, 5]]
>>> 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中使用該距離,必須是一個真實的指標:即它必須滿足以下屬性
非負性:d(x,y)> = 0 定義:當且僅當x == y時,d(x,y)= 0 對稱性:d(x,y)= d(y,x) 三角不等式: 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()
將縮小的距離轉換為真實距離。
為某些度量標準定義的減小的距離是一種計算上更有效的度量,可以保留真實距離的等級。 例如,在歐幾里得距離度量標準中,減小的距離是歐幾里德距離的平方。