Я построил кластеризацию Kmeans в Python на основе данных, импортированных из файла .txt.Я сгенерировал 100 центроидов, и с помощью Matplotlib построены две фигуры, на которых показаны эти центроиды: одна фигура, связывающая облако точек (созданная из файла .txt), которая представляет данные до кластеризациии еще одна фигура, содержащая черные звезды для обозначения каждого центроида.
Что я должен сделать, чтобы нанести каждый центроид на определенный цвет, выбранный случайным образом, вместо черных звезд?Что означает, что каждая группа точек центроидов будет иметь разные цвета.
Код:
import numpy as np
from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from sklearn.cluster import KMeans
#building the 22797x3 array:
#loading the first array from .txt file, 22797x400 long.
array = np.loadtxt('C:\Scripts/final_array_2.txt', usecols=range(400))
array = np.float32(array)
#plotting data before the clustering:
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.scatter(result[:, 0], result[:, 1], result[:, 2], alpha = 0.1)
ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')
ax.set_zlabel('Z Label')
# Initializing KMeans, plotting clusters
kmeans = KMeans(n_clusters=100)
# Fitting with inputs
kmeans = kmeans.fit(result)
# Predicting the clusters
labels = kmeans.predict(result)
# Getting the cluster centers
C = kmeans.cluster_centers_
fig = plt.figure()
ax = Axes3D(fig)
ax.scatter(result[:, 0], result[:, 1], result[:, 2])
ax.scatter(C[:, 0], C[:, 1], C[:, 2], marker='*', c='#050505', s=1000)
plt.show()
Результаты кода выше
Данные до скопления: https://i.stack.imgur.com/IXa7R.png
Данные после скопления с черными звездами: https://i.stack.imgur.com/1u4JY.png
Что мне нужно получить (аналогичный пример, а не то же облако точек): https://i.stack.imgur.com/K5oDT.png В этом случае это будет 100 цветов, а не только три.
Любая помощь