DistanceMetric#
- класс sklearn.metrics.DistanceMetric#
Унифицированный интерфейс для быстрых функций метрики расстояния.
The
DistanceMetricкласс предоставляет удобный способ вычисления попарных расстояний между образцами. Он поддерживает различные метрики расстояний, такие как евклидово расстояние, расстояние Манхэттена и другие.The
pairwiseметод может использоваться для вычисления попарных расстояний между образцами во входных массивах. Он возвращает матрицу расстояний, представляющую расстояния между всеми парами образцов.The
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...]])
Доступные метрики
Ниже приведены идентификаторы строковых метрик и связанные с ними классы метрик расстояния:
Метрики, предназначенные для вещественных векторных пространств:
идентификатор
имя класса
args
функция расстояния
“euclidean”
EuclideanDistance
sqrt(sum((x - y)^2))“manhattan”
ManhattanDistance
sum(|x - y|)“чебышев”
Расстояние Чебышёва
max(|x - y|)«minkowski»
MinkowskiDistance
p, w
sum(w * |x - y|^p)^(1/p)“seuclidean”
SEuclideanDistance
V
sqrt(sum((x - y)^2 / V))“mahalanobis”
Расстояние Махаланобиса
V или 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”
Расстояние Брея-Кертиса
sum(|x - y|) / (sum(|x|) + sum(|y|))Метрики, предназначенные для булевых векторных пространств: Любой ненулевой элемент оценивается как «Истина». В приведённых ниже списках используются следующие сокращения:
N: количество измерений
NTT: количество измерений, в которых оба значения True
NTF: количество измерений, в которых первое значение True, второе False
NFT: количество измерений, в которых первое значение False, второе True
NFF: количество измерений, в которых оба значения равны False
NNEQ: количество неравных измерений, NNEQ = NTF + NFT
NNZ: количество ненулевых измерений, NNZ = NTF + NFT + NTT
идентификатор
имя класса
функция расстояния
“jaccard”
JaccardDistance
NNEQ / NNZ
“соответствие”
MatchingDistance
NNEQ / N
“dice”
Расстояние Dice
NNEQ / (NTT + NNZ)
«кульсинский»
KulsinskiDistance
(NNEQ + N - NTT) / (NNEQ + N)
«rogerstanimoto»
RogersTanimotoDistance
2 * NNEQ / (N + NNEQ)
“russellrao”
RussellRaoDistance
(N - NTT) / N
“sokalmichener”
. Первое — количество деревьев в лесу. Чем больше, тем лучше, но и тем дольше будет вычисление. Кроме того, результаты перестают значительно улучшаться после критического числа деревьев. Второе — размер случайных подмножеств признаков, рассматриваемых при разделении узла. Чем ниже, тем больше снижение дисперсии, но и больше увеличение смещения. Эмпирически хорошие значения по умолчанию:
2 * NNEQ / (N + NNEQ)
“sokalsneath”
SokalSneathDistance
NNEQ / (NNEQ + 0.5 * NTT)
Пользовательское расстояние:
идентификатор
имя класса
args
"pyfunc"
PyFuncDistance
функция
Здесь
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, это будет довольно медленно, но будет иметь то же масштабирование, что и другие расстояния.
-
метод класса get_metric(метрика, dtype=
'numpy.float64'> , **kwargs)# Получить заданную метрику расстояния из строкового идентификатора.
Смотрите документацию DistanceMetric для списка доступных метрик.
- Параметры:
- метрикаstr или имя класса
Строковый идентификатор или имя класса желаемой метрики расстояния. См. документацию
DistanceMetricкласс для списка доступных метрик.- dtype{np.float32, np.float64}, по умолчанию=np.float64
Тип данных входных данных, к которым будет применяться метрика. Это влияет на точность вычисленных расстояний. По умолчанию установлено
np.float64.- **kwargs
Дополнительные ключевые аргументы, которые будут переданы запрошенной метрике. Эти аргументы могут использоваться для настройки поведения конкретной метрики.
- Возвращает:
- metric_objэкземпляр запрошенной метрики
Экземпляр запрошенного класса метрики расстояния.