Добрый день дорогие друзья, в данной статье я описываю Евклидову метрику или, как её еще называют Евклидово расстояние.

Евклидово расстояние - это расстояние между двумя точками. Расстояние между двумя точками в свою очередь вычисляется по теореме Пифагора. Это можно увидеть на Рис.1 Расстояние между двумя точка по теореме Пифагора.

Рис. 1 Расстояние между двумя точка по теореме Пифагора.
Рис. 1 Расстояние между двумя точка по теореме Пифагора.
d(x,y) = \sqrt{\sum_{i=1}^n(x_{i}-y_{i})^{2}}

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

Рассмотрим на примере как мы можем найти расстояние от каждой точки из массива ???? до центра кластера.

Импортируем библиотеку NumPy:

import numpy as np

Пусть наши обьекты будут располагаться по следующим координатам:

clust = np.array([
 [-0.5972191612445694, -0.5919098916910581],
 [-1.5838020751869848, 0.4743393635868491],
 [-1.892642118066139, -1.2770390481464395],
 [-1.021761443519372, -0.38446059106320013],
 [-0.628271339507516, -2.308149346281125],
 [-0.7180915776856387, 1.1805550909358404],
 [-1.543143767548152, -1.4163791359687334],
 [0.022103701018375554, -1.1279478858865397],
 [-0.7776518874305778, -0.4157532453316538],
 [-1.2073577296008344, -1.1308523658604184]
])

Координаты центра кластера будут:

centroid = np.array([-0.9774245525274352, -0.032635425821084516])

Воспользуемся ранее указанной формулой:

raznost = np.sqrt((centroid - clust)**2)
total = np.sum(raznost)
total

В итоге получим сумму растояний: 14.661150278896905

В следующей статье будет крастко рассмотрен алгоритм k-средних для количества кластеров n=3. 

Комментарии (4)


  1. red-cat-fat
    17.08.2022 14:37
    +6

    Такими темпами будут статьи про то, как if/else условия писать...


  1. nUser123
    17.08.2022 15:40
    +2

    raznost = np.sqrt((centroid - clust)**2) - в формуле же корень из суммы вроде. А вообще - для кого написана статья? и с какой целью.


  1. AlexSbb
    17.08.2022 17:20

    Такими небольшими шагами до k-means будет долго идти... На вики про Euclidean distances больше написано. Ну и весь код это: dist = np.linalg.norm(point1 - point2)


  1. khaa
    18.08.2022 13:14

    Теоретическая преамбула статьи - низкокачественный компилят. Уж если писать то дать нормальное определение точкам в N-мерном пространстве, ввести обозначения их координат и уж потом давать формулу. Давать точкам имена X и Y, при том, что это имена координат в двухмерном пространстве - моветон, не просто так в википедии, откуда взята картинка точки названы P и Q.