Визуализация 3d кластеров - PullRequest
0 голосов
/ 04 июля 2018

Итак, у меня есть 3 кластера, которые я хотел бы визуализировать на трехмерном графике. Я не уверен, как я могу добавить третью ось.

X = np.array(X)
plt.scatter(X[y_kmeans == 0, 0], X[y_kmeans == 0, 1], s = 100, c = 'red', label = 'Cluster 1')
plt.scatter(X[y_kmeans == 1, 0], X[y_kmeans == 1, 1], s = 100, c = 'blue', label = 'Cluster 2')
plt.scatter(X[y_kmeans == 2, 0], X[y_kmeans == 2, 1], s = 100, c = 'green', label = 'Cluster 3')
plt.xlabel("Recency")
plt.ylabel("Frequency")
plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1],s = 300, c = 'yellow', label = 'Centroids')
plt.show()

Это то, что я сделал, но я знаю, что это только для 2d. Y_kmeans содержит кластер, соответствующий номеру строки в моем наборе данных X. Набор данных X имеет 3 столбца. Мне было интересно, если кто-нибудь может мне помочь, как я могу это сделать? ОБНОВИТЬ: удалось заставить его работать с помощью ответа ниже.

1 Ответ

0 голосов
/ 05 июля 2018

не стесняйтесь приспосабливаться к вашим потребностям

from matplotlib import pyplot
from mpl_toolkits.mplot3d import Axes3D
import random


fig = pyplot.figure()
ax = Axes3D(fig)

x_vals = np.random.rand(1000)
y_vals = np.random.rand(1000)
z_vals = np.random.rand(1000)



ax.scatter(x_vals, y_vals, z_vals, color='red')
ax.scatter(x_vals+0.2, y_vals-0.8, z_vals, color='blue')
pyplot.show()

выход:

enter image description here

...