距離度量#
- 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 中使用,該距離必須是一個真正的度量:即它必須滿足以下屬性非負性: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 物件的開銷,因此速度會相當慢,但它會與其他距離具有相同的縮放比例。
- classmethod get_metric(metric, dtype=<class 'numpy.float64'>, **kwargs)#
從字串識別符號取得給定的距離度量。
請參閱 DistanceMetric 的文檔字串,以取得可用度量的列表。
- 參數:
- metricstr 或類別名稱
所需距離度量的字串識別符號或類別名稱。請參閱
DistanceMetric
類別的文檔,以取得可用度量的列表。- dtype{np.float32, np.float64}, 預設值=np.float64
度量將套用的輸入數據類型。這會影響計算距離的精度。預設情況下,它設定為
np.float64
。- **kwargs
將傳遞給所請求度量的其他關鍵字參數。這些參數可用於自訂特定度量的行為。
- 回傳值:
- metric_obj所請求度量的實例
所請求距離度量類別的實例。