import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
# Исходный массив данных
X = np.array([
[5, 3],
[10, 15],
[15, 12],
[24, 10],
[30, 45],
[85, 70],
[71, 80],
[60, 78],
[55, 52],
[80, 91]
])
# Экспериментируем с количеством кластеров
for k in [2, 3, 4]:
kmeans = KMeans(n_clusters=k, random_state=0, n_init=10)
labels = kmeans.fit_predict(X)
print(f"\nКоличество кластеров: {k}")
print("Метки кластеров:", labels)
print("Центры кластеров:")
print(kmeans.cluster_centers_)
plt.figure(figsize=(6, 5))
plt.scatter(X[:, 0], X[:, 1], c=labels, cmap='rainbow', s=80)
# Отображаем центры кластеров
plt.scatter(
kmeans.cluster_centers_[:, 0],
kmeans.cluster_centers_[:, 1],
c='black',
marker='X',
s=200,
label='Центры кластеров'
)
plt.title(f'Кластеризация K-средних, k = {k}')
plt.xlabel('Признак 1')
plt.ylabel('Признак 2')
plt.legend()
plt.grid(True)
plt.show()