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
pairwisekann 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_metricermö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
funceine 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.Nicht-Negativität: d(x, y) >= 0
Identität: d(x, y) = 0 genau dann, wenn x == y
Symmetrie: d(x, y) = d(y, x)
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.float64gesetzt.- **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.