DistanceMetric#

class sklearn.metrics.DistanceMetric#

Einheitliche Schnittstelle für schnelle Distanzmetrikfunktionen.

Die DistanceMetric-Klasse bietet eine praktische Möglichkeit, paarweise Abstände zwischen Stichproben zu berechnen. Sie unterstützt verschiedene Distanzmetriken wie die Euklidische Distanz, Manhattan-Distanz und mehr.

Die Methode pairwise kann verwendet werden, um paarweise Abstände zwischen Stichproben in den Eingabearrays zu berechnen. Sie gibt eine Distanzmatrix zurück, die die Abstände zwischen allen Stichprobenpaaren darstellt.

Die Methode get_metric ermöglicht es Ihnen, eine spezifische Metrik über ihre Zeichenkennung abzurufen.

Beispiele

>>> 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...]])

Verfügbare Metriken

Die folgende Liste zeigt die Zeichenkennungen der Metriken und die zugehörigen Distanzmetrik-Klassen

Metriken für reellwertige Vektorräume

Kennung

Klassenname

Args

Distanzfunktion

“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 oder VI

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

Metriken für zweidimensionale Vektorräume: Beachten Sie, dass die Haversine-Distanzmetrik Daten im Format [Breitengrad, Längengrad] benötigt und sowohl Eingaben als auch Ausgaben in Radiant angegeben werden.

Kennung

Klassenname

Distanzfunktion

“haversine”

HaversineDistance

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

Metriken für ganzzahlige Vektorräume: Obwohl für ganzzahlige Vektoren bestimmt, sind diese auch für reellwertige Vektoren gültige Metriken.

Kennung

Klassenname

Distanzfunktion

“hamming”

HammingDistance

N_unequal(x, y) / N_tot

“canberra”

CanberraDistance

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

“braycurtis”

BrayCurtisDistance

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

Metriken für boolesche Vektorräume: Jeder Nicht-Null-Eintrag wird als "True" ausgewertet. In den folgenden Listen werden folgende Abkürzungen verwendet:

  • N: Anzahl der Dimensionen

  • NTT: Anzahl der Dimensionen, in denen beide Werte True sind

  • NTF: Anzahl der Dimensionen, in denen der erste Wert True und der zweite Falsch ist

  • NFT: Anzahl der Dimensionen, in denen der erste Wert Falsch und der zweite True ist

  • NFF: Anzahl der Dimensionen, in denen beide Werte Falsch sind

  • NNEQ: Anzahl der ungleichen Dimensionen, NNEQ = NTF + NFT

  • NNZ: Anzahl der Nicht-Null-Dimensionen, NNZ = NTF + NFT + NTT

Kennung

Klassenname

Distanzfunktion

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

Benutzerdefinierte Distanz

Kennung

Klassenname

Args

“pyfunc”

PyFuncDistance

func

Hier ist func eine Funktion, die zwei eindimensionale Numpy-Arrays entgegennimmt und eine Distanz zurückgibt. Beachten Sie, dass die Distanz eine echte Metrik sein muss, um innerhalb des BallTree verwendet werden zu können: d.h. sie muss die folgenden Eigenschaften erfüllen.

  1. Nicht-Negativität: d(x, y) >= 0

  2. Identität: d(x, y) = 0 genau dann, wenn x == y

  3. Symmetrie: d(x, y) = d(y, x)

  4. Dreiecksungleichung: d(x, y) + d(y, z) >= d(x, z)

Aufgrund des Overheads, der bei der Aufrufung der Python-Funktion durch das Python-Objekt entsteht, wird dies ziemlich langsam sein, wird aber die gleiche Skalierung wie andere Distanzen haben.

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

Ruft die gegebene Distanzmetrik anhand der Zeichenkennung ab.

Siehe die Docstring von DistanceMetric für eine Liste verfügbarer Metriken.

Parameter:
metricstr oder Klassenname

Die Zeichenkennung oder der Klassenname der gewünschten Distanzmetrik. Siehe die Dokumentation der DistanceMetric-Klasse für eine Liste verfügbarer Metriken.

dtype{np.float32, np.float64}, Standard=np.float64

Der Datentyp der Eingabe, auf die die Metrik angewendet wird. Dies beeinflusst die Genauigkeit der berechneten Distanzen. Standardmäßig ist er auf np.float64 gesetzt.

**kwargs

Zusätzliche Schlüsselwortargumente, die an die angeforderte Metrik weitergegeben werden. Diese Argumente können verwendet werden, um das Verhalten der spezifischen Metrik anzupassen.

Gibt zurück:
metric_objInstanz der angeforderten Metrik

Eine Instanz der angeforderten Distanzmetrik-Klasse.