Я пытаюсь визуализировать Dataframe, который имеет 3 столбца, например:
Recency Frequency Revenue
370 14 1717.99
382 130 144280.48
383 20 126129.37
Для визуализации в 2d я применяю преобразование PCA и получаю следующее:
sklearn_pca = PCA(n_components = 2)
X1 = sklearn_pca.fit_transform(df1)
X1 = X1[:, ::-1] # flip axes
kmeans = KMeans(3, random_state=0)
labels = kmeans.fit(X1).predict(X1)
plt.scatter(X1[:, 0], X1[:, 1], c=labels, s=40, cmap='viridis');
Следующий код предназначен для визуализации кластеризации K-средних с данными, но я получаю плоский график.
from scipy.spatial.distance import cdist
def plot_kmeans(kmeans, X, n_clusters=4, rseed=0, ax=None):
labels = kmeans.fit_predict(X)
# plot the input data
ax = ax or plt.gca()
ax.axis('equal')
ax.scatter(X[:, 0], X[:, 1], c=labels, s=40, cmap='viridis', zorder=2)
# plot the representation of the KMeans model
centers = kmeans.cluster_centers_
radii = [cdist(X[labels == i], [center]).max()
for i, center in enumerate(centers)]
for c, r in zip(centers, radii):
ax.add_patch(plt.Circle(c, r, fc='#CCCCCC', lw=3, alpha=0.5, zorder=1))
kmeans = KMeans(n_clusters=3, random_state=0)
plot_kmeans(kmeans, X1)
Любая помощь о том, как решить эту проблему будет принята! Заранее спасибо.