Spec-Zone.ru › scikit-learn

DistanceMetric

classsklearn.metrics.DistanceMetric

Единый интерфейс для быстрых функций метрик расстояния.

Класс DistanceMetric предоставляет удобный способ вычисления парных расстояний между образцами. Он поддерживает различные метрики расстояния, такие как евклидово расстояние, расстояние Манхэттена и другие.

Метод pairwise может использоваться для вычисления парных расстояний между образцами в входных массивах. Он возвращает матрицу расстояний, представляющую расстояния между всеми парами образцов.

Метод get_metric позволяет получить определённую метрику, используя её строковый идентификатор.

Примеры

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

Доступные метрики

Ниже перечислены строковые идентификаторы метрик и соответствующие классы метрик расстояния:

Метрики, предназначенные для вещественнозначных векторных пространств:

идентификатор

имя класса

аргументы

функция расстояния

“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 or VI

sqrt((x - y)' V^-1 (x - y))

Метрики, предназначенные для двумерных векторных пространств: Обратите внимание, что метрика расстояния гаверсину требует данных в виде [широта, долгота], и как входные, так и выходные данные находятся в единицах радиан.

идентификатор

имя класса

функция расстояния

“haversine”

HaversineDistance

2 arcsin(sqrt(sin^2(0.5*dx) + cos(x1)cos(x2)sin^2(0.5*dy)))

Метрики, предназначенные для целочисленных векторных пространств: Хотя они предназначены для целочисленных векторов, они также являются допустимыми метриками в случае вещественнозначных векторов.

идентификатор

имя класса

функция расстояния

“hamming”

HammingDistance

N_unequal(x, y) / N_tot

“canberra”

CanberraDistance

sum(|x - y| / (|x| + |y|))

“braycurtis”

BrayCurtisDistance

sum(|x - y|) / (sum(|x|) + sum(|y|))

Метрики, предназначенные для булевых векторных пространств: Любое ненулевое значение оценивается как “True”. В списках ниже используются следующие сокращения:

  • N: число измерений
  • NTT: число измерений, в которых оба значения равны True
  • NTF: число измерений, в которых первое значение равно True, второе — False
  • NFT: число измерений, в которых первое значение равно False, второе — True
  • NFF: число измерений, в которых оба значения равны False
  • NNEQ: число неравных измерений, NNEQ = NTF + NFT
  • NNZ: число ненулевых измерений, NNZ = NTF + NFT + NTT

идентификатор

имя класса

функция расстояния

“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)

Пользовательское расстояние:

идентификатор

имя класса

аргументы

“pyfunc”

PyFuncDistance

func

Здесь func — функция, которая принимает два одномерных массива NumPy и возвращает расстояние. Обратите внимание, что для использования в BallTree расстояние должно быть истинной метрикой: т.е. оно должно удовлетворять следующим свойствам

  1. Неотрицательность: d(x, y) >= 0
  2. Тождество: d(x, y) = 0 тогда и только тогда, когда x == y
  3. Симметрия: d(x, y) = d(y, x)
  4. Неравенство треугольника: d(x, y) + d(y, z) >= d(x, z)

Из-за накладных расходов на объекты Python, связанных с вызовом Python-функции, это будет довольно медленно, но масштабирование будет таким же, как и у других расстояний.

classmethodget_metric(metric, dtype=<class 'numpy.float64'>, **kwargs)

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

См. документацию DistanceMetric для списка доступных метрик.

Параметры:
metricстрока или имя класса

Строковый идентификатор или имя класса желаемой метрики расстояния. См. документацию класса DistanceMetric для списка доступных метрик.

dtype{np.float32, np.float64}, по умолчанию=np.float64

Тип данных входных данных, к которым будет применена метрика. Это влияет на точность вычисленных расстояний. По умолчанию он установлен в np.float64.

**kwargs

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

Возвращает:
metric_objэкземпляр запрошенной метрики

Экземпляр запрошенного класса метрики расстояния.

© 2007–2025 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.6/modules/generated/sklearn.metrics.DistanceMetric.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API