Euclidean distances. Реализация функции из sklearn

от автора

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

Евклидово расстояние — это расстояние между двумя точками. Расстояние между двумя точками в свою очередь вычисляется по теореме Пифагора. Это можно увидеть на Рис.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. 


ссылка на оригинал статьи https://habr.com/ru/articles/683072/


Комментарии

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

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