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 требует данные в формате [широта, долгота], а входные и выходные значения задаются в радианах.
идентификатор
имя класса
функция расстояния
“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 расстояние должно быть настоящей метрикой, то есть удовлетворять следующим свойствам:- Неотрицательность: d(x, y) >= 0
- Тождественность: d(x, y) = 0 тогда и только тогда, когда x == y
- Симметричность: d(x, y) = d(y, x)
- Неравенство треугольника: 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–2026 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.9/modules/generated/sklearn.metrics.DistanceMetric.html