Что такое евклидово расстояние между векторами
Перейти к содержимому

Что такое евклидово расстояние между векторами

  • автор:

Расстояние Евклида (Euclid distance)

Расстояние Евклида — это геометрическое расстояние в многомерном пространстве. Оно вычисляется по теореме Пифагора.

Пусть в n-мерном пространстве заданы две точки: p ( p 1 , p 2 , . . . p n ) и q ( q 1 , q 2 , . . . q n ) . Тогда евклидово расстояние между ними вычисляется по следующей формуле:

d p q = √ n ∑ i = 1 ( p i − q i ) 2 ,

Например, расстояние Евклида между двумя точками a ( x a , y a , z a ) и b ( x b , y b , z b ) в 3-мерном пространстве ( X Y Z ) рассчитывается по формуле:

d a b = √ ( x a − x b ) 2 + ( y a − y b ) 2 + ( z a − z b ) 2 .

Евклидово расстояние является наиболее понятной и интерпретируемой мерой различия или близости объектов, представленных векторами признаков в многомерном пространстве, отражая интуитивные свойства расстояния между точками. Поэтому оно широко используется в анализе данных в качестве критерия для объединения наблюдений в классы и кластеры, оценки ошибок в предсказательной аналитике, а также в инструментах визуализации (например, картах Кохонена).

9.26. Python – Метод math.hypot() – расстояние между векторами (евклидова норма)

Python – это универсальный язык, который можно использовать для решения самых разных задач. В этой статье мы рассмотрим метод math.hypot() – в частности, как его можно использовать для вычисления расстояния между векторами (евклидова норма). Независимо от того, являетесь ли вы новичком в Python или опытным программистом, мы надеемся, что эта статья будет для вас информативной и полезной.

Метод

hypot() – возвращает евклидову норму, sqrt(x*x + y*y).

Евклидова норма, также известная как евклидово расстояние или просто расстояние между двумя векторами, является мерой того, насколько далеко они находятся друг от друга. Евклидова норма определяется как квадратный корень из суммы квадратов разностей между компонентами двух векторов.

Например, если у нас есть два вектора a и b с компонентами (a1, a2,…, an) и (b1, b2,…, bn), то евклидова норма их разности определяется следующим образом:

||a-b|| = sqrt((a1-b1)^2 + (a2-b2)^2 +… + (an-bn)^2) 

Пифагорейская теорема гласит, что в треугольнике с прямым углом квадрат длины гипотенузы равен сумме квадратов двух других сторон. Эту теорему можно использовать для доказательства того, что ||a+b|| = ||a||| + ||b|| для любых двух векторов a и b.

Синтаксис

Ниже приведен синтаксис метода hypot() в Python:

hypot(x, y) 

Примечание. Эта функция недоступна напрямую, поэтому нам нужно импортировать математический модуль, а затем нам нужно вызвать эту функцию, используя математический статический объект.

Параметры

x – должно быть числовое значение.

y – должно быть числовое значение.

Возвращаемое значение

Функция возвращает евклидову норму, sqrt(x*x + y*y).

Пример

В следующем примере показано использование метода hypot() в Python.

#!/usr/bin/python import math print "hypot(3, 2): ", math.hypot(3, 2) print "hypot(-3, 3): ", math.hypot(-3, 3) print "hypot(0, 2): ", math.hypot(0, 2) 

Когда приведённый выше код выполнится, он даст следующий результат:

hypot(3, 2): 3.60555127546 hypot(-3, 3): 4.24264068712 hypot(0, 2): 2.0 

Оглавление

  • 1. Python – Самоучитель для начинающих
  • 2. Python – Обзор
  • 3. Python – Установка среды
  • 4. Python – Базовый синтаксис
  • 4.1. Python – Аргументы командной строки
  • 5. Python – Типы переменных
  • 6. Python – Основные операторы
  • 6.1. Python – Арифметические операторы
  • 6.2. Python – Операторы сравнения
  • 6.3. Python – Операторы присваивания: примеры
  • 6.4. Python – Побитовые операторы
  • 6.5. Python – Логические операторы
  • 6.6. Python – Операторы членства
  • 6.7. Python – Операторы идентификации
  • 6.8. Python – Приоритет операторов
  • 7. Python – Условные операторы
  • 7.1. Python – Условие if
  • 7.2. Python – Условные операторы if. else и elif
  • 7.3. Python – Вложенные операторы if
  • 8. Python – Циклы
  • 8.1. Python – Цикл while
  • 8.2. Python – Цикл for
  • 8.3. Python – Вложенные циклы
  • 8.4. Python – Оператор break
  • 8.5. Python – Оператор continue
  • 8.6. Python – Оператор pass
  • 9. Python – Числа
  • 9.1. Python – Метод abs()
  • 9.2. Python – Метод ceil()
  • 9.3. Python – Метод cmp()
  • 9.4. Python – Метод exp()
  • 9.5. Python – Метод fabs()
  • 9.6. Python – Метод floor()
  • 9.7. Python – Метод log()
  • 9.8. Python – Метод log10()
  • 9.9. Python – Метод max()
  • 9.10. Python – Метод min()
  • 9.11. Python – Метод modf()
  • 9.12. Python – Метод pow()
  • 9.13. Python – Метод round()
  • 9.14. Python – Метод sqrt()
  • 9.15. Python – Метод choice()
  • 9.16. Python – Метод randrange()
  • 9.17. Python – Метод random()
  • 9.18. Python – Метод seed()
  • 9.19. Python – Метод shuffle()
  • 9.20. Python – Метод uniform()
  • 9.21. Python – Метод acos()
  • 9.22. Python – Метод asin()
  • 9.23. Python – Метод atan()
  • 9.24. Python – Метод atan2()
  • 9.25. Python – Метод cos()
  • 9.26. Python – Метод hypot()
  • 9.27. Python – Метод sin()
  • 9.28. Python – Метод tan()
  • 9.29. Python – Метод degrees()
  • 9.30. Python – Метод radians()

Расчет евклидова расстояния с помощью NumPy

Евклидово расстояние — это фундаментальная метрика расстояния, относящаяся к системам в евклидовом пространстве.

  • Евклидово пространство — это классическое геометрическое пространство, с которым вы знакомитесь на уроке математики, обычно связанное с 3 измерениями. Хотя его также можно приписать к любой неотрицательной целочисленной размерности.
  • Евклидово расстояние — кратчайшая прямая между двумя точками в евклидовом пространстве.

Название происходит от Евклида, который широко известен как «отец геометрии», так как это было единственное пространство, которое люди в то время обычно задумывали. Со временем в физике и математике наблюдались различные типы пространства, такие как пространство Аффин.

  • В 3-мерном евклидовом пространстве кратчайшая прямая между двумя точкамивсегдабудетпрямой линиеймежду ними.

Учитывая этот факт, евклидово расстояние не всегда является наиболее полезной метрикой для отслеживания при работе со многими размерностями, мы сосредоточимся на 2D и 3D евклидовом пространстве для расчета евклидова расстояния.

Вообще говоря, евклидова расстояние широко используется в разработке 3D-миров, а также алгоритмов машинного обучения, которые включают в себя метрики расстояния, такие как K-ближайшие соседи. Как правило, евклидово расстояние будет представлять, насколько похожи две точки данных, предполагая, что некоторая кластеризация на основе других данных уже была выполнена.

Математическая формула

Математическая формула расчета евклидова расстояния между 2 точками в 2D пространстве:

Формула легко адаптируется к 3D-пространство, а также к любому размеру:

Общая формула может быть упрощена до:

Острый глаз может заметить сходство между евклидовым расстоянием и теоремой Пифагора:

На самом деле существует связь между ними — евклидовое расстояние рассчитывается с помощью теоремы Пифагора, учитывая декартовы координаты двух точек.

Из-за этого евклидова расстояние иногда называют расстоянием Пифагора, хотя прежнее название гораздо более известно.

Примечание: Две точки являются векторами, но выход должен быть скалярным.

Мы будем использовать NumPy для расчета этого расстояния для двух точек, и один и тот же подход используется для 2D и 3D пространств:

import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D fig = plt.figure() ax = fig.add_subplot(111, projection = '3d') ax.scatter(0, 0, 0) ax.scatter(3, 3, 3) plt.show()

Расчет евклидова расстояния в Python с помощью NumPy

Во-первых, нам нужно будет установить библиотеку NumPy:

$ pip install numpy

Теперь давайте импортируем его и настроим две наши точки с декартовыми координатами (0, 0, 0) и (3, 3, 3):

import numpy as np # Initializing the points point_1 = np.array((0, 0, 0)) point_2 = np.array((3, 3, 3))

Вместо того, чтобы выполнять расчет вручную, мы будем использовать вспомогательные методы NumPy, чтобы сделать его еще проще!

Операции и математические функции, необходимые для расчета евклидова расстояния, довольно просты: сложение, вычитание, а также функция квадратного корня. Несколько слагаемых также можно заменить суммой:

NumPy предоставляет нам функцию np.sqrt(), представляющую функцию квадратного корня, а также функцию np.sum(), которая представляет собой сумму. При этом расчет евклидова расстояния в Python прост и интуитивно понятен:

# Get the square of the difference of the 2 vectors square = np.square(point_1 - point_2) # Get the sum of the square sum_square = np.sum(square)

Данная формула дает нам довольно простой результат:

(0-3)^2 + (0-3)^2 + (0-3)^2

Что равно 27. Осталось все, что получить квадратный корень из этого числа:

# The last step is to get the square root and print the Euclidean distance distance = np.sqrt(sum_square) print(distance)
5.196152422706632

В истинном питоновом духе это можно сократить до одной строки:

И вы даже можете вместо этого использовать встроенные методы pow() и sum() математического модуля Python, хотя они требуют, чтобы вы немного поработали с вводом, который удобно абстрагируется с помощью NumPy, так как функция pow() работает только со скалярами (каждый элемент в массиве индивидуально) и принимает аргумент — в какой степени вы увеличиваете число.

Этот подход, однако, интуитивно больше похож на формулу, которую мы использовали раньше:

from math import * distance = np.sqrt(sum(pow(a-b, 2) for a, b in zip(point_1, point_2))) print(distance)

Это также приводит к:

5.196152422706632

np.linalg.norm()

Функция np.linalg.norm() представляет математическую норму. По сути, нормой вектора является его длина. Эта длина не обязательно должна быть евклидовым расстоянием, а может быть и другими расстояниями. Евклидово расстояние-это норма L2 вектора (иногда известная как евклидова норма), и по умолчанию функция norm() использует L2 — параметр ord имеет значение 2.

Если бы вы установили для параметра ord какое-то другое значение p, вы бы рассчитали другие p-нормы. Например, норма L1 вектора-это расстояние Манхэттена!

Имея это в виду, мы можем использовать функцию np.linalg.norm() для легкого и гораздо более чистого вычисления евклидова расстояния, чем использование других функций:

distance = np.linalg.norm(point_1-point_2) print(distance)

Это приводит к печати расстояния L2/евклида:

5.196152422706632

Нормализация L2 и нормализация L1 широко используются в машинном обучении для нормализации входных данных.

Мы также можем использовать точечное произведение для расчета евклидова расстояния. В математике точечное произведение является результатом умножения двух векторов равной длины, а результатом является единственное число — скалярное значение. Из-за возвращаемого типа его иногда также называют «скалярным продуктом». Эту операцию часто называют внутренним произведением для двух векторов.

Для расчета точечного произведения между 2 векторами вы можете использовать следующую формулу:

С помощью NumPy мы можем использовать функцию np.dot(), передавая два вектора.

Если мы вычислим точечное произведение разницы между обеими точками с той же разницей — мы получим число, которое находится в зависимости от евклидова расстояния между этими двумя векторами. Извлечение квадратного корня из этого числа дает нам расстояние, которое мы ищем:

# Take the difference between the 2 points diff = point_1 - point_2 # Perform the dot product on the point with itself to get the sum of the squares sum_square = np.dot(diff, diff) # Get the square root of the result distance = np.sqrt(sum_square) print(distance)

Конечно, вы также можете сократить это до однострочного:

distance = np.sqrt(np.dot(point_1-point_2, point_1-point_2)) print(distance)
5.196152422706632
Использование встроенной системы math.dist()

В Python есть встроенный метод в математическом модуле, который вычисляет расстояние между 2 точками в трехмерном пространстве. Однако это работает только с Python 3.8 или более поздней версии.

math.dist()принимает два параметра, которые являются двумя точками, и возвращает евклидово расстояние между этими точками.

Примечание: Обратите внимание, что две точки должны иметь одинаковые размеры (т.е. оба в 2d или 3d пространстве).

Теперь, чтобы вычислить Евклидово расстояние между этими двумя точками, мы просто заправляем их в метод thedistdist():

import math distance = math.dist(point_1, point_2) print(distance)
5.196152422706632

Заключение

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

  • евклидово расстояние
  • евклидова метрика
  • евклидово пространство

Евклидово расстояние

В математике евклидово расстояние между двумя точками в евклидовом пространстве представляет собой число, длину отрезок между двумя точками. Его можно вычислить из декартовых координат точек, используя теорему Пифагора, и иногда его называют расстоянием Пифагора . Эти имена происходят от древнегреческих математиков Евклид и Пифагор, но Евклид не представлял расстояния в виде чисел, и связь теоремы Пифагора с вычислением расстояний не проводилась до 17 века..

Расстояние между двумя объектами, которые не являются точками, обычно определяется как наименьшее расстояние между любыми двумя точками от двух объектов. Известны формулы для вычисления расстояний между различными типами объектов, например расстояния от точки до линии. В высшей математике понятие расстояния было обобщено на абстрактные метрические пространства, и были изучены другие расстояния, кроме евклидова. Квадрат евклидова расстояния не является метрикой, но удобен для многих приложений в статистике и оптимизации.

Формулы расстояния

Одно измерение

Расстояние между любыми двумя точками на вещественной прямой является абсолютным значением числовой разности их координат. Таким образом, если p и q — две точки на реальной прямой, то расстояние между ними определяется по формуле:

Более сложная формула, дающая то же значение, но более легко обобщающая на более высокие измерения:

В этой формуле возведение в квадрат с последующим извлечением квадратного корня оставляет любое положительное число неизменным, но заменяет любое отрицательное число его абсолютным значением.

Два измерения

В евклидовой плоскости пусть точка p имеют декартовы координаты (p 1, p 2) , p_ )> и пусть точка q имеет координаты (q 1, q 2) , q_ )> . Тогда расстояние между p и q определяется следующим образом:

Это можно увидеть, применив теорему Пифагора к прямоугольному треугольнику с горизонтальной и вертикальной сторонами, имеющему отрезок из p От до q в качестве его гипотенузы. Две квадратные формулы внутри квадратного корня дают площади квадратов на горизонтальной и вертикальной сторонах, а внешний квадратный корень преобразует площадь квадрата на гипотенузе в длину гипотенузы.

Также возможно вычислить расстояние для точек, заданных полярными координатами. Если полярные координаты p равны (r, θ) , а полярные координаты q are (s, ψ) , тогда расстояние до них

d ( p, q) знак равно r 2 + s 2 — 2 rs cos ⁡ (θ — ψ). + s ^ -2rs \ cos (\ theta — \ psi)>>.>

Когда p и q выражаются как комплексные числа в комплексной плоскости, та же формула для одномерных точек, выраженных действительными числами, можно использовать:

Высшие измерения

Получение n -размерной формулы Евклидова расстояния путем многократного применения пифагорова Теорема

В общем, для точек, заданных декартовыми координатами в n -мерном евклидовом пространстве, расстояние составляет

d (p, q) = (p 1 — q 1) 2 + (p 2 — q 2) 2 + ⋯ + (pi — qi) 2 + ⋯ + (pn — qn) 2. -q_ ) ^ + (p_ -q_ ) ^ + \ cdots + ( p_ -q_ ) ^ + \ cdots + (p_ -q_ ) ^ >>.>

Другие объекты, кроме точек

Для пар объектов, которые не являются обеими точками, расстояние проще всего определить как наименьшее расстояние между любыми двумя точками от двух объектов, хотя более сложные обобщения от точек к множествам, такие как расстояние Хаусдорфа, также являются обычно используется. Формулы для вычисления расстояний между различными типами объектов включают:

  • расстояние от точки до линии в евклидовой плоскости
  • расстояние от точки до плоскости в трехмерном евклидовом пространстве
  • расстояние между двумя линиями в трехмерном евклидовом пространстве

Евклидово расстояние в квадрате

Во многих приложениях и в В частности, при сравнении расстояний может быть удобнее опускать конечный квадратный корень при вычислении евклидовых расстояний. Результатом этого упущения является квадрат евклидова расстояния, который называется квадратом евклидова расстояния . В виде уравнения:

d 2 (p, q) = (p 1 — q 1) 2 + (p 2 — q 2) 2 + ⋯ + (pi — qi) 2 + ⋯ + (pn — qn) 2. (p, q) = (p_ -q_ ) ^ + (p_ -q_ ) ^ + \ cdots + ( p_ -q_ ) ^ + \ cdots + (p_ -q_ ) ^ .>

Помимо применения в сравнении расстояний, квадрат евклидова расстояния равен центральная важность в статистике, где он используется в методе наименьших квадратов, стандартном методе подбора статистических оценок к данным путем минимизации среднего квадрата расстояний между наблюдаемыми и оценочными значениями. Сложение квадратов расстояний друг с другом, как это делается при аппроксимации методом наименьших квадратов, соответствует операции с (неквадратными) расстояниями, называемой сложением Пифагора. В кластерном анализе квадраты расстояний могут использоваться для усиления эффекта больших расстояний.

Евклидово расстояние в квадрате не является метрикой , так как оно не удовлетворяет критерию неравенство треугольника. Однако это гладкая, строго выпуклая функция двух точек, в отличие от расстояния, которое негладко для равных точек и выпукло, но не строго выпукло. Таким образом, квадрат расстояния является предпочтительным в теории оптимизации, поскольку он позволяет использовать выпуклый анализ. Поскольку возведение в квадрат — это монотонная функция неотрицательных значений, минимизация квадрата расстояния эквивалентна минимизации евклидова расстояния, поэтому задача оптимизации эквивалентна с точки зрения любого из них, но ее легче решить, используя квадрат расстояния.

Набор всех квадратов расстояний между парами точек из конечного набора может храниться в матрице евклидовых расстояний. В рациональной тригонометрии используется квадрат евклидова расстояния, потому что (в отличие от самого евклидова расстояния) квадрат расстояния между точками с координатами рациональное число всегда рационально; в этом контексте его также называют «квадранс».

В более сложных областях математики евклидово пространство и его расстояние являются стандартным примером метрического пространства, называется евклидовой метрикой . Евклидова дистанционная геометрия изучает свойства евклидовой геометрии с точки зрения ее расстояний и свойства наборов расстояний, которые можно использовать для определения того, происходят ли они из евклидовой метрики. При просмотре евклидова пространства как векторного пространства его расстояние связано с нормой , называемой евклидовой нормой, определяемой как расстояние каждого вектора от происхождение. Одно из важных свойств этой нормы по сравнению с другими нормами — то, что она остается неизменной при произвольных поворотах пространства вокруг начала координат. Согласно теореме Дворецкого, каждое конечномерное нормированное векторное пространство имеет подпространство большой размерности, норма в котором приблизительно евклидова; евклидова норма — единственная норма с этим свойством. Его можно расширить до бесконечномерных векторных пространств как L norm или расстояние L.

Другие распространенные расстояния в евклидовых пространствах и векторных пространствах низкой размерности включают:

  • расстояние Чебышева, который измеряет расстояние, предполагая, что имеет значение только наиболее значимое измерение.
  • Манхэттенское расстояние, которое измеряет расстояние только в направлениях, выровненных по оси.
  • Расстояние Минковского, обобщение, объединяющее евклидово расстояние, Расстояние Манхэттена и расстояние Чебышева.

Для точек на поверхности в трех измерениях евклидово расстояние следует отличать от геодезического расстояния, длины кратчайшей кривой, которая принадлежит поверхности. В частности, для измерения расстояний по большому кругу на Земле или других почти сферических поверхностях использованные расстояния включают расстояние Гаверсинуса, дающее расстояние по большому кругу между двумя точками на сфере с учетом их долготы и широты., и формулы Винсенти, также известные как «расстояние Винсента» для определения расстояния на сфероиде.

Евклидово расстояние — это расстояние в евклидовом пространстве ; обе концепции названы в честь древнегреческого математика Евклида, чьи Элементы стали стандартным учебником по геометрии на многие века. Понятия длина и расстояние широко распространены в разных культурах, их можно датировать самыми ранними сохранившимися «протолитическими» бюрократическими документами из Шумера четвертого тысячелетия до нашей эры (намного раньше Евклид), и было выдвинуто предположение, что у детей они развиваются раньше, чем соответствующие концепции скорости и времени. Но понятие расстояния, как числа, определяемого двумя точками, на самом деле не встречается в «Элементах» Евклида. Вместо этого Евклид приближается к этой концепции неявно, через конгруэнтность отрезков прямой, через сравнение длин отрезков и через концепцию пропорциональности.

Теорема Пифагора тоже древний, но он сыграл центральную роль в измерении расстояний с изобретением декартовых координат Рене Декартом в 1637 году. Из-за этой связи евклидово расстояние также иногда называется расстоянием Пифагора. Хотя точные измерения больших расстояний на поверхности Земли, которые не являются евклидовыми, снова изучались во многих культурах с древних времен (см. история геодезии ), идея о том, что евклидово расстояние может быть не единственным способом Измерение расстояний между точками в математических пространствах пришло еще позже, с формулировкой 19 века неевклидовой геометрии. Определение евклидовой нормы и евклидова расстояния для геометрии более трех измерений также впервые появилось в 19 веке в работе Огюстена-Луи Коши.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *