pairwise_distances#

sklearn.metrics.pairwise_distances(X, Y=None, метрика='euclidean', *, n_jobs=None, ensure_all_finite=True, **kwds)[источник]#

Вычислить матрицу расстояний из массива признаков X и необязательного Y.

Эта функция принимает один или два массива признаков или матрицу расстояний и возвращает матрицу расстояний.

  • Если X является массивом признаков, формы (n_samples_X, n_features), и:

    • Y является None и metric не является 'precomputed', попарные расстояния между X и сам возвращаются.

    • Y является массивом признаков формы (n_samples_Y, n_features), попарные расстояния между X и Y возвращается.

  • Если X является матрицей расстояний формы (n_samples_X, n_samples_X), metric должно быть 'precomputed'. Y поэтому игнорируется и X возвращается как есть.

Если входные данные представляют собой коллекцию нечисловых данных (например, список строк или булев массив), необходимо передать пользовательскую метрику.

Этот метод обеспечивает безопасный способ использования матрицы расстояний в качестве входных данных, сохраняя совместимость со многими другими алгоритмами, которые принимают массив векторов.

Допустимые значения для metric:

  • Из scikit-learn: ['cityblock', 'cosine', 'euclidean', 'l1', 'l2', 'manhattan', 'nan_euclidean']. Все метрики поддерживают разреженные матрицы, кроме 'nan_euclidean'.

  • Из scipy.spatial.distance: ['braycurtis', 'canberra', 'chebyshev', 'correlation', 'dice', 'hamming', 'jaccard', 'kulsinski', 'mahalanobis', 'minkowski', 'rogerstanimoto', 'russellrao', 'seuclidean', 'sokalmichener', 'sokalsneath', 'sqeuclidean', 'yule']. Эти метрики не поддерживают разреженные матричные входы.

Примечание

'kulsinski' устарел в SciPy 1.9 и будет удален в SciPy 1.11.

Примечание

'matching' был удален в SciPy 1.9 (используйте 'hamming' вместо этого).

Обратите внимание, что в случае 'cityblock', 'cosine' и 'euclidean' (которые являются допустимыми scipy.spatial.distance метрики), реализация scikit-learn будет использована, которая быстрее и поддерживает разреженные матрицы (кроме 'cityblock'). Для подробного описания метрик из scikit-learn, см. sklearn.metrics.pairwise.distance_metrics функция.

Подробнее в Руководство пользователя.

Параметры:
X{array-like, sparse matrix} формы (n_samples_X, n_samples_X) или (n_samples_X, n_features)

Массив попарных расстояний между образцами или массив признаков. Форма массива должна быть (n_samples_X, n_samples_X), если metric == "precomputed", и (n_samples_X, n_features) в противном случае.

Y{array-like, sparse matrix} формы (n_samples_Y, n_features), по умолчанию=None

Необязательный второй массив признаков. Разрешён только если metric != "precomputed".

метрикаstr или callable, по умолчанию='euclidean'

Метрика для использования при вычислении расстояния между экземплярами в массиве признаков. Если метрика является строкой, она должна быть одной из опций, разрешенных scipy.spatial.distance.pdist для его параметра metric, или метрикой, перечисленной в pairwise.PAIRWISE_DISTANCE_FUNCTIONS. Если метрика — "precomputed", предполагается, что X — матрица расстояний. В качестве альтернативы, если метрика — вызываемая функция, она вызывается для каждой пары экземпляров (строк), и полученное значение записывается. Вызываемая функция должна принимать два массива из X в качестве входных данных и возвращать значение, указывающее расстояние между ними.

n_jobsint, default=None

Количество заданий для вычисления. Это работает путем разбиения матрицы попарных расстояний на n_jobs равных частей и их вычисления с использованием многопоточности.

None означает 1, если только не в joblib.parallel_backend контекст. -1 означает использование всех процессоров. См. Глоссарий для получения дополнительной информации.

Метрики 'euclidean' и 'cosine' сильно зависят от BLAS, который уже многопоточный. Поэтому увеличение n_jobs вероятно вызовет переподписку и быстро ухудшит производительность.

ensure_all_finitebool или 'allow-nan', по умолчанию=True

Следует ли вызывать ошибку при np.inf, np.nan, pd.NA в массиве. Игнорируется для метрики, перечисленной в pairwise.PAIRWISE_DISTANCE_FUNCTIONS. Возможности:

  • True: Принудительно сделать все значения массива конечными.

  • является строкой, содержащей имя, которое вы хотите дать этому шагу, и

  • ‘allow-nan’: принимает только значения np.nan и pd.NA в массиве. Значения не могут быть бесконечными.

Добавлено в версии 1.6: force_all_finite был переименован в ensure_all_finite.

**kwdsопциональные параметры ключевых слов

Любые дополнительные параметры передаются непосредственно в функцию расстояния. При использовании метрики scipy.spatial.distance параметры все еще зависят от метрики. См. документацию scipy для примеров использования.

Возвращает:
Dndarray формы (n_samples_X, n_samples_X) или (n_samples_X, n_samples_Y)

Матрица расстояний D, такая что D_{i, j} — расстояние между i-м и j-м векторами данной матрицы X, если Y равно None. Если Y не равно None, то D_{i, j} — расстояние между i-м массивом из X и j-м массивом из Y.

Смотрите также

pairwise_distances_chunked

Выполняет те же вычисления, что и эта функция, но возвращает генератор фрагментов матрицы расстояний, чтобы ограничить использование памяти.

sklearn.metrics.pairwise.paired_distances

Вычисляет расстояния между соответствующими элементами двух массивов.

Примечания

Если metric является вызываемым объектом, никаких ограничений не накладывается на X и Y измерения.

Примеры

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