距離度量#

class sklearn.metrics.DistanceMetric#

用於快速距離度量函數的統一介面。

DistanceMetric 類別提供了一種方便的方法來計算樣本之間的成對距離。它支援各種距離度量,例如歐幾里得距離、曼哈頓距離等等。

pairwise 方法可用於計算輸入陣列中樣本之間的成對距離。它會回傳一個距離矩陣,表示所有樣本對之間的距離。

get_metric 方法允許您使用其字串識別符號來檢索特定的度量。

範例

>>> from sklearn.metrics import DistanceMetric
>>> dist = DistanceMetric.get_metric('euclidean')
>>> X = [[1, 2], [3, 4], [5, 6]]
>>> Y = [[7, 8], [9, 10]]
>>> dist.pairwise(X,Y)
array([[7.81..., 10.63...]
       [5.65...,  8.48...]
       [1.41...,  4.24...]])

可用的度量

以下列出了字串度量識別符號和相關的距離度量類別

適用於實數值向量空間的度量

識別符號

類別名稱

參數

距離函數

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

“seuclidean”

SEuclideanDistance

V

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

“mahalanobis”

MahalanobisDistance

V 或 VI

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

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

識別符號

類別名稱

距離函數

“haversine”

HaversineDistance

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

適用於整數值向量空間的度量: 雖然是為整數值向量設計的,但這些在實數值向量的情況下也是有效的度量。

識別符號

類別名稱

距離函數

“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

識別符號

類別名稱

距離函數

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

用戶定義的距離

識別符號

類別名稱

參數

“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 物件的開銷,因此速度會相當慢,但它會與其他距離具有相同的縮放比例。

classmethod get_metric(metric, dtype=<class 'numpy.float64'>, **kwargs)#

從字串識別符號取得給定的距離度量。

請參閱 DistanceMetric 的文檔字串,以取得可用度量的列表。

參數:
metricstr 或類別名稱

所需距離度量的字串識別符號或類別名稱。請參閱 DistanceMetric 類別的文檔,以取得可用度量的列表。

dtype{np.float32, np.float64}, 預設值=np.float64

度量將套用的輸入數據類型。這會影響計算距離的精度。預設情況下,它設定為 np.float64

**kwargs

將傳遞給所請求度量的其他關鍵字參數。這些參數可用於自訂特定度量的行為。

回傳值:
metric_obj所請求度量的實例

所請求距離度量類別的實例。