Чтобы назначить каждую точку кластеру с ближайшим центроидом в Python, вы можете использовать несколько методов. Вот несколько часто используемых подходов:
-
Евклидово расстояние: можно вычислить евклидово расстояние между каждой точкой и центроидами и назначить точку кластеру с ближайшим центроидом. Формула евклидова расстояния в двумерном пространстве:
import math def euclidean_distance(point, centroid): return math.sqrt((point[0] - centroid[0])2 + (point[1] - centroid[1])2) -
Манхэттенское расстояние: этот метод вычисляет Манхэттенское расстояние между каждой точкой и центроидами. Формула манхэттенского расстояния в двумерном пространстве:
def manhattan_distance(point, centroid): return abs(point[0] - centroid[0]) + abs(point[1] - centroid[1]) -
Косинусное сходство. Если ваши точки данных представлены в виде векторов, вы можете вычислить косинусное сходство между каждой точкой и центроидами. Точка присваивается кластеру с наибольшим значением косинусного сходства. Формула косинусного подобия:
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
Это всего лишь несколько примеров методов, которые можно использовать для назначения точек кластерам на основе ближайшего центроида. В зависимости от вашей конкретной проблемы и данных более подходящими могут оказаться другие показатели расстояния и меры сходства.