Расскажите про алгоритм K-means и его продвинутые аналоги (K-means++).
Ответ от нейросети
sobes.tech AI
Алгоритм K-means — это метод кластеризации, который разбивает набор данных на K кластеров, минимизируя внутрикластерную дисперсию. Работает итеративно: сначала выбираются K центроидов, затем каждый объект назначается к ближайшему центроиду, после чего центроиды пересчитываются как средние точки кластеров, и процесс повторяется до сходимости.
K-means++ — улучшенный метод инициализации центроидов, который выбирает начальные центры более осознанно, чтобы избежать плохих локальных минимумов и ускорить сходимость. Вместо случайного выбора центров, K-means++ выбирает первый центр случайно, а последующие — с вероятностью, пропорциональной квадрату расстояния до ближайшего уже выбранного центра.
Пример на Python с использованием sklearn:
from sklearn.cluster import KMeans
import numpy as np
X = np.array([[1, 2], [1, 4], [1, 0],
[10, 2], [10, 4], [10, 0]])
kmeans = KMeans(n_clusters=2, init='k-means++', random_state=42)
kmeans.fit(X)
print(kmeans.labels_)