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}')

введите сюда описание изображения

→ Ссылка