pairwise_distances#
- sklearn.metrics.pairwise_distances(X, Y=None, metric='euclidean', *, n_jobs=None, ensure_all_finite=True, **kwds)[source]#
Berechne die Distanzmatrix aus einem Feature-Array X und einem optionalen Y.
Diese Funktion nimmt ein oder zwei Merkmalsarrays oder eine Distanzmatrix entgegen und gibt eine Distanzmatrix zurück.
Wenn
Xein Merkmalsarray der Form (n_samples_X, n_features) ist undYNoneist undmetricnicht 'precomputed' ist, werden die paarweisen Distanzen zwischenXund sich selbst zurückgegeben.Yein Merkmalsarray der Form (n_samples_Y, n_features) ist, werden die paarweisen Distanzen zwischenXundYzurückgegeben.
Wenn
Xeine Distanzmatrix der Form (n_samples_X, n_samples_X) ist, solltemetric'precomputed' sein.Ywird somit ignoriert undXwird unverändert zurückgegeben.
Wenn die Eingabe eine Sammlung von nicht-numerischen Daten ist (z.B. eine Liste von Zeichenketten oder ein Boolesches Array), muss eine benutzerdefinierte Metrik übergeben werden.
Diese Methode bietet eine sichere Möglichkeit, eine Distanzmatrix als Eingabe zu verwenden und gleichzeitig die Kompatibilität mit vielen anderen Algorithmen zu gewährleisten, die ein Vektorarray akzeptieren.
Gültige Werte für metric sind
Von scikit-learn: [‘cityblock’, ‘cosine’, ‘euclidean’, ‘l1’, ‘l2’, ‘manhattan’, ‘nan_euclidean’]. Alle Metriken unterstützen sparse Matrix-Eingaben mit Ausnahme von ‘nan_euclidean’.
Von
scipy.spatial.distance: [‘braycurtis’, ‘canberra’, ‘chebyshev’, ‘correlation’, ‘dice’, ‘hamming’, ‘jaccard’, ‘kulsinski’, ‘mahalanobis’, ‘minkowski’, ‘rogerstanimoto’, ‘russellrao’, ‘seuclidean’, ‘sokalmichener’, ‘sokalsneath’, ‘sqeuclidean’, ‘yule’]. Diese Metriken unterstützen keine sparse Matrix-Eingaben.
Hinweis
'kulsinski'ist seit SciPy 1.9 veraltet und wird in SciPy 1.11 entfernt.Hinweis
'matching'wurde in SciPy 1.9 entfernt (verwenden Sie stattdessen'hamming').Beachten Sie, dass im Falle von 'cityblock', 'cosine' und 'euclidean' (die gültige
scipy.spatial.distanceMetriken sind), die scikit-learn-Implementierung verwendet wird, die schneller ist und Unterstützung für sparse Matrizen bietet (mit Ausnahme von 'cityblock'). Eine detaillierte Beschreibung der Metriken von scikit-learn finden Sie in der Funktionsklearn.metrics.pairwise.distance_metrics.Lesen Sie mehr im Benutzerhandbuch.
- Parameter:
- X{array-artig, sparsen Matrix} von Form (n_samples_X, n_samples_X) oder (n_samples_X, n_features)
Array von paarweisen Distanzen zwischen Stichproben oder ein Merkmalsarray. Die Form des Arrays sollte (n_samples_X, n_samples_X) sein, wenn metric == "precomputed" ist, und andernfalls (n_samples_X, n_features).
- Y{array-like, sparse matrix} der Form (n_samples_Y, n_features), Standard=None
Ein optionales zweites Merkmalsarray. Nur erlaubt, wenn metric != "precomputed".
- metricstr oder callable, Standard=’euclidean’
Die Metrik, die zur Berechnung der Distanz zwischen Instanzen in einem Merkmalsarray verwendet wird. Wenn metric ein String ist, muss es eine der von
scipy.spatial.distance.pdistfür seinen metric-Parameter zulässigen Optionen sein oder eine Metrik, die inpairwise.PAIRWISE_DISTANCE_FUNCTIONSaufgeführt ist. Wenn metric "precomputed" ist, wird davon ausgegangen, dass X eine Distanzmatrix ist. Alternativ, wenn metric eine aufrufbare Funktion ist, wird sie für jedes Paar von Instanzen (Zeilen) aufgerufen und der resultierende Wert aufgezeichnet. Die aufrufbare Funktion sollte zwei Arrays aus X als Eingabe erhalten und einen Wert zurückgeben, der die Distanz zwischen ihnen angibt.- n_jobsint, default=None
Die Anzahl der zu verwendenden Jobs für die Berechnung. Dies funktioniert, indem die paarweise Matrix in n_jobs gleichmäßige Abschnitte unterteilt und diese durch Multithreading berechnet werden.
Nonebedeutet 1, außer in einemjoblib.parallel_backendKontext.-1bedeutet die Verwendung aller Prozessoren. Siehe Glossar für weitere Details.Die Metriken "euclidean" und "cosine" sind stark auf BLAS angewiesen, das bereits multithreaded ist. Daher würde eine Erhöhung von
n_jobswahrscheinlich zu einer Übersubskription führen und die Leistung schnell verschlechtern.- ensure_all_finitebool oder ‘allow-nan’, Standard=True
Ob ein Fehler bei np.inf, np.nan, pd.NA im Array ausgelöst werden soll. Ignoriert für eine Metrik, die in
pairwise.PAIRWISE_DISTANCE_FUNCTIONSaufgeführt ist. Die Möglichkeiten sind:True: Alle Werte des Arrays werden gezwungen, endlich zu sein.
False: Akzeptiert np.inf, np.nan, pd.NA im Array.
‘allow-nan’: Akzeptiert nur np.nan und pd.NA Werte im Array. Werte dürfen nicht unendlich sein.
Hinzugefügt in Version 1.6:
force_all_finitewurde inensure_all_finiteumbenannt.- **kwdsoptionale Schlüsselwortparameter
Alle weiteren Parameter werden direkt an die Distanzfunktion übergeben. Bei Verwendung einer scipy.spatial.distance-Metrik sind die Parameter immer noch metrikabhängig. Beispiele für die Verwendung finden Sie in der SciPy-Dokumentation.
- Gibt zurück:
- Dndarray der Form (n_samples_X, n_samples_X) oder (n_samples_X, n_samples_Y)
Eine Distanzmatrix D, sodass D_{i, j} die Distanz zwischen dem i-ten und j-ten Vektor der gegebenen Matrix X ist, wenn Y None ist. Wenn Y nicht None ist, dann ist D_{i, j} die Distanz zwischen dem i-ten Array aus X und dem j-ten Array aus Y.
Siehe auch
pairwise_distances_chunkedFührt dieselbe Berechnung wie diese Funktion durch, gibt aber einen Generator von Teilen der Distanzmatrix zurück, um den Speicherverbrauch zu begrenzen.
sklearn.metrics.pairwise.paired_distancesBerechnet die Distanzen zwischen entsprechenden Elementen zweier Arrays.
Anmerkungen
Wenn metric eine aufrufbare Funktion ist, sind keine Einschränkungen für die Dimensionen von
XundYvorhanden.Beispiele
>>> from sklearn.metrics.pairwise import pairwise_distances >>> X = [[0, 0, 0], [1, 1, 1]] >>> Y = [[1, 0, 0], [1, 1, 0]] >>> pairwise_distances(X, Y, metric='sqeuclidean') array([[1., 2.], [2., 1.]])
Galeriebeispiele#
Agglomeratives Clustering mit verschiedenen Metriken