Попробуйте это:
from sklearn.cluster import KMeans
import numpy as np
data = np.random.randint(100, size=(100, 2))
kmeans = KMeans(n_clusters=5)
kmeans.fit(data)
centroids_partitions = {}
for centr in kmeans.cluster_centers_:
centroid_label = kmeans.predict([centr])
partition = []
for k, v in zip(data, kmeans.labels_):
if v == centroid_label:
partition.append(k.ravel())
centroids_partitions[centroid_label[0]] = partition
print(centroids_partitions)
, который возвращает диктовку, например:
{0: [array([55, 8]), ... ,[truncated], 1: [array([70, 87]), array([77, 63]), ... ]}
, где 0, 1 и т. Д. c - метки кластеров kmeans.labels_
Или, если вы хотите, чтобы центроиды координировались в качестве ключа для dict, замените на:
centroids_partitions[centr[0],centr[1]] = partition
, что выводит:
{(68.29411764705881, 24.470588235294127): [array([72, 19]), array([69, 1]), array([58, 46]), .... ]}