k-means как назвать точки
import matplotlib.pyplot as plt
import numpy as np
from sklearn.cluster import KMeans
x = [39.41723, 39.756065, 40.368254, 41.154703, 40.195698, 39.940795, 41.129726, 40.067598, 39.705654, 40.193159, 40.257899, 39.82696, 40.194204, 40.069023, 40.392714, 39.888213, 40.125922, 40.48876, 39.611413, 39.746618, 40.092546, 38.916944, 38.672639, 40.095974, 40.627279]
y = [47.098625, 47.149491, 48.053909, 48.199755, 47.815068, 48.050114, 48.172159, 48.116712, 47.204865, 48.04591, 48.329826, 47.229433, 48.15691, 47.482597, 48.922104, 47.807932, 48.047976, 48.185603, 47.249161, 47.244413, 47.881827, 47.262486, 47.693759, 47.440338, 48.030066]
data = list(zip(x, y))
print(data)
inertias = []
for i in range(1,26):
kmeans = KMeans(n_clusters=i)
kmeans.fit(data)
inertias.append(kmeans.inertia_)
plt.plot(range(1,26), inertias, marker='o')
plt.title('Elbow method')
plt.xlabel('Number of clusters')
plt.ylabel('Intertia')
plt.show()
kmeans = KMeans(n_clusters=5)
kmeans.fit(data)
plt.scatter(x, y, c=kmeans.labels_)
centroids = kmeans.cluster_centers_
#plt.scatter(centroids[:, 0], centroids[:, 1], c='red', s=200, marker='X', label='center')
plt.show()
print(kmeans.cluster_centers_)
Вот такой вот код. Подскажите пожалуйста, как мне в коде дать название эти точкам? И как потом возле кружков точек на графике показать эти названия?
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
Непонятно - каким именно точкам и какие именно названия вы хотите дать. Но покажу вам пример, как можно подписать точки с помощью метода plt.text, при этом подходящий сдвиг от точки координат для размещения текста придётся немножко угадывать:
for i in range(1,26):
kmeans = KMeans(n_clusters=i)
kmeans.fit(data)
inertias.append(kmeans.inertia_)
if i <= 5:
plt.text(i + 0.3, kmeans.inertia_ - 0.1, f'{kmeans.inertia_:0.2f}')
