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 расстояние должно быть истинной метрикой: т.е. оно должно удовлетворять следующим свойствам- Неотрицательность: 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–2025 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.6/modules/generated/sklearn.metrics.DistanceMetric.html