當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python sklearn DistanceMetric用法及代碼示例


本文簡要介紹python語言中 sklearn.metrics.DistanceMetric 的用法。

用法:

class sklearn.metrics.DistanceMetric

DistanceMetric 類

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

例子

>>> from sklearn.metrics import DistanceMetric
>>> dist = DistanceMetric.get_metric('euclidean')
>>> X = [[0, 1, 2],
         [3, 4, 5]]
>>> dist.pairwise(X)
array([[ 0.        ,  5.19615242],
       [ 5.19615242,  0.        ]])

可用指標

下麵列出了字符串度量標識符和相關的距離度量類:

用於實值向量空間的指標:

identifier

類名稱

args

距離函數

“euclidean”

EuclideanDistance

sqrt(sum((x - y)^2))

“manhattan”

ManhattanDistance

sum(|x - y|)

“chebyshev”

ChebyshevDistance

max(|x - y|)

“minkowski”

MinkowskiDistance

p, w

sum(w * |x - y|^p)^(1/p)

“wminkowski”

WMinkowskiDistance

p, w

sum(|w * (x - y)|^p)^(1/p)

“seuclidean”

SEuclideanDistance

V

sqrt(sum((x - y)^2 / V))

“mahalanobis”

MahalanobisDistance

Ⅴ或Ⅵ

sqrt((x - y)' V^-1 (x - y))

請注意,帶有非無 w 參數的 “minkowski” 實際上會使用 w=w ** (1/p) 調用 WMinkowskiDistance,以便與 scipy 1.8 及更高版本的參數化保持一致。

用於二維向量空間的度量:請注意,harsine 距離度量需要 [latitude, longitude] 形式的數據,輸入和輸出均以弧度為單位。

identifier

類名稱

距離函數

“haversine”

HaversineDistance

2 arcsin(sqrt(sin^2(0.5*dx) + cos(x1)cos(x2)sin^2(0.5*dy)))

用於整數值向量空間的度量:雖然用於整數值向量,但對於實值向量來說,這些也是有效的度量。

identifier

類名稱

距離函數

“hamming”

HammingDistance

N_unequal(x, y) / N_tot

“canberra”

CanberraDistance

sum(|x - y| / (|x| + |y|))

“braycurtis”

BrayCurtisDistance

sum(|x - y|) / (sum(|x|) + sum(|y|))

用於布爾值向量空間的指標:任何非零條目都被評估為“True”。在下麵的列表中,使用了以下縮寫:

  • N : 維數

  • NTT:兩個值都為 True 的暗點數

  • NTF:第一個值為 True,第二個值為 False 的暗點數

  • NFT:第一個值為 False,第二個值為 True 的點數

  • NFF:兩個值都為 False 的暗點數

  • NNEQ:不等維數,NNEQ = NTF + NFT

  • NNZ:非零維數,NNZ = NTF + NFT + NTT

identifier

類名稱

距離函數

“jaccard”

JaccardDistance

NNEQ /NNZ

“matching”

MatchingDistance

NNEQ /N

“dice”

DiceDistance

NNEQ /(NTT + NNZ)

“kulsinski”

KulsinskiDistance

(NNEQ + N - NTT) /(NNEQ + N)

“rogerstanimoto”

RogersTanimotoDistance

2 * NNEQ /(N + NNEQ)

“russellrao”

RussellRaoDistance

(N - NTT) /N

“sokalmichener”

SokalMichenerDistance

2 * NNEQ /(N + NNEQ)

“sokalsneath”

SokalSneathDistance

NNEQ /(NNEQ + 0.5 * NTT)

用戶定義距離:

identifier

類名稱

args

“pyfunc”

PyFuncDistance

func

這裏 func 是一個函數,它接受兩個一維 numpy 數組,並返回一個距離。請注意,為了在 BallTree 中使用,距離必須是真正的度量:即它必須滿足以下屬性

  1. 非負性:d(x, y) >= 0

  2. 身份:d(x, y) = 0 當且僅當 x == y

  3. 對稱性:d(x, y) = d(y, x)

  4. 三角不等式:d(x, y) + d(y, z) >= d(x, z)

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

相關用法


注:本文由純淨天空篩選整理自scikit-learn.org大神的英文原創作品 sklearn.metrics.DistanceMetric。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。