haversine_distances#
- sklearn.metrics.pairwise.haversine_distances(X, Y=None)[источник]#
Вычислить расстояние Хаверсина между образцами в X и Y.
Расстояние Хаверсина (или расстояние по большому кругу) — это угловое расстояние между двумя точками на поверхности сферы. Первая координата каждой точки предполагается широтой, вторая — долготой, заданной в радианах. Размерность данных должна быть 2.
\[D(x, y) = 2\arcsin[\sqrt{\sin^2((x_{lat} - y_{lat}) / 2) + \cos(x_{lat})\cos(y_{lat})\ sin^2((x_{lon} - y_{lon}) / 2)}]\]- Параметры:
- X{array-like, sparse matrix} формы (n_samples_X, 2)
Массив признаков.
- Y{array-like, sparse matrix} формы (n_samples_Y, 2), по умолчанию=None
Необязательный второй массив признаков. Если
None, используетY=X.
- Возвращает:
- расстоянияndarray формы (n_samples_X, n_samples_Y)
Матрица расстояний.
Примечания
Поскольку Земля почти сферическая, формула гаверсинуса даёт хорошее приближение расстояния между двумя точками на поверхности Земли с ошибкой менее 1% в среднем.
Примеры
Мы хотим рассчитать расстояние между аэропортом Эсейса (Буэнос-Айрес, Аргентина) и аэропортом Шарль-де-Голль (Париж, Франция).
>>> from sklearn.metrics.pairwise import haversine_distances >>> from math import radians >>> bsas = [-34.83333, -58.5166646] >>> paris = [49.0083899664, 2.53844117956] >>> bsas_in_radians = [radians(_) for _ in bsas] >>> paris_in_radians = [radians(_) for _ in paris] >>> result = haversine_distances([bsas_in_radians, paris_in_radians]) >>> result * 6371000/1000 # multiply by Earth radius to get kilometers array([[ 0. , 11099.54035582], [11099.54035582, 0. ]])