Методы Python для присвоения точек кластерам на основе ближайшего центроида

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

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

    import math
    def euclidean_distance(point, centroid):
       return math.sqrt((point[0] - centroid[0])2 + (point[1] - centroid[1])2)
  2. Манхэттенское расстояние: этот метод вычисляет Манхэттенское расстояние между каждой точкой и центроидами. Формула манхэттенского расстояния в двумерном пространстве:

    def manhattan_distance(point, centroid):
       return abs(point[0] - centroid[0]) + abs(point[1] - centroid[1])
  3. Косинусное сходство. Если ваши точки данных представлены в виде векторов, вы можете вычислить косинусное сходство между каждой точкой и центроидами. Точка присваивается кластеру с наибольшим значением косинусного сходства. Формула косинусного подобия:

    import numpy as np
    def cosine_similarity(point, centroid):
       dot_product = np.dot(point, centroid)
       magnitude = np.linalg.norm(point) * np.linalg.norm(centroid)
       return dot_product / magnitude

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