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