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 X ein Merkmalsarray der Form (n_samples_X, n_features) ist und

    • Y None ist und metric nicht 'precomputed' ist, werden die paarweisen Distanzen zwischen X und sich selbst zurückgegeben.

    • Y ein Merkmalsarray der Form (n_samples_Y, n_features) ist, werden die paarweisen Distanzen zwischen X und Y zurückgegeben.

  • Wenn X eine Distanzmatrix der Form (n_samples_X, n_samples_X) ist, sollte metric 'precomputed' sein. Y wird somit ignoriert und X wird 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.distance Metriken 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 Funktion sklearn.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.pdist für seinen metric-Parameter zulässigen Optionen sein oder eine Metrik, die in pairwise.PAIRWISE_DISTANCE_FUNCTIONS aufgefü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.

None bedeutet 1, außer in einem joblib.parallel_backend Kontext. -1 bedeutet 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_jobs wahrscheinlich 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_FUNCTIONS aufgefü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_finite wurde in ensure_all_finite umbenannt.

**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_chunked

Fü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_distances

Berechnet die Distanzen zwischen entsprechenden Elementen zweier Arrays.

Anmerkungen

Wenn metric eine aufrufbare Funktion ist, sind keine Einschränkungen für die Dimensionen von X und Y vorhanden.

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