Введение в алгоритм кластеризации K-средних
Алгоритм кластеризации K-средних(кластеризация K-средних) — это простой, мощный и широко используемый метод машинного обучения без учителя. Технология неконтролируемого машинного обучения относится к выводу из наборов данных без меток и получению результатов вывода.
Целью алгоритма кластеризации K-средних является классификация данных в наборе данных в соответствии с их сходством, количество категорий равно k, и каждая категория будет иметь центр кластера (центроид). Сходство между данными обычно определяется «евклидовым расстоянием», конечно, могут быть разработаны и другие меры.
Алгоритмические шаги K-средних
- Определите целевое количество кластеров K, например, k=3
- Случайно инициализированные k кластерных центров (контроидов)
- Рассчитайте евклидово расстояние от каждой точки данных до K центров кластера, а затем назначьте точки данных классу, соответствующему центру кластера с наименьшим евклидовым расстоянием.
- Для каждой категории пересчитайте ее центр кластера;
- Повторяйте шаги 3-4 выше, пока не будет достигнуто определенное условие завершения (количество итераций, минимальное изменение ошибки и т. д.).
Для визуализации алгоритма K-средних см.:Стэнфорд.Сумма/класс/Студент1…
код реализации
Алгоритм K-средних можно реализовать, напрямую вызвав класс KMeans sklearn, Пример кода выглядит следующим образом:
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
df = pd.DataFrame({"x": [25, 34, 22, 27, 33, 33, 31, 22, 35, 34, 67, 54, 57, 43, 50, 57, 59, 52, 65, 47, 49, 48, 35, 33, 44, 45, 38, 43, 51, 46],
"y": [79, 51, 53, 78, 59, 74, 73, 57, 69, 75, 51, 32, 40, 47, 53, 36, 35, 59, 59, 50, 25, 20, 14, 12, 20, 5, 29, 27, 8, 7]})
kmeans = KMeans(n_clusters=3).fit(df)
centroids = kmeans.cluster_centers_
# 打印类聚中心
print(type(centroids), centroids)
# 可视化类聚结果
fig, ax = plt.subplots()
ax.scatter(df['x'],df['y'],c=kmeans.labels_.astype(float),s=50, alpha=0.5)
ax.scatter(centroids[:, 0], centroids[:, 1], c='red', s=50)
plt.show()