Вычисление расстояния между двумя векторами: подробное руководство с примерами кода

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

  1. Евклидово расстояние:
    Евклидово расстояние — наиболее распространенный метод, используемый для измерения расстояния между двумя векторами. Он вычисляет расстояние по прямой между двумя точками в евклидовом пространстве.

Пример кода:

import numpy as np
def euclidean_distance(vector1, vector2):
    return np.linalg.norm(vector1 - vector2)
vector1 = np.array([1, 2, 3])
vector2 = np.array([4, 5, 6])
distance = euclidean_distance(vector1, vector2)
print("Euclidean Distance:", distance)
  1. Манхэттенское расстояние.
    Манхэттенское расстояние, также известное как расстояние городского квартала или норма L1, рассчитывает сумму абсолютных разностей между соответствующими элементами двух векторов.

Пример кода:

import numpy as np
def manhattan_distance(vector1, vector2):
    return np.sum(np.abs(vector1 - vector2))
vector1 = np.array([1, 2, 3])
vector2 = np.array([4, 5, 6])
distance = manhattan_distance(vector1, vector2)
print("Manhattan Distance:", distance)
  1. Расстояние Минковского:
    Расстояние Минковского является обобщением евклидова и манхэттенского расстояний. Это позволяет нам рассчитывать расстояние, используя разные p-нормы.

Пример кода:

import numpy as np
def minkowski_distance(vector1, vector2, p):
    return np.linalg.norm(vector1 - vector2, ord=p)
vector1 = np.array([1, 2, 3])
vector2 = np.array([4, 5, 6])
distance = minkowski_distance(vector1, vector2, p=3)
print("Minkowski Distance:", distance)
  1. Косинусное сходство.
    Косинусное сходство измеряет косинус угла между двумя векторами, обеспечивая меру сходства, а не меру расстояния. Его часто используют в системах анализа текста и рекомендательных системах.

Пример кода:

import numpy as np
from sklearn.metrics.pairwise import cosine_similarity
def cosine_distance(vector1, vector2):
    return 1 - cosine_similarity(vector1.reshape(1, -1), vector2.reshape(1, -1))
vector1 = np.array([1, 2, 3])
vector2 = np.array([4, 5, 6])
distance = cosine_distance(vector1, vector2)
print("Cosine Distance:", distance)

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

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