我在matplotlib上绘制集群时遇到了这个问题
# Training the K-Means model on the dataset
kmeans = KMeans(n_clusters = 4, init = 'k-means++', random_state = 42)
y_kmeans = kmeans.fit_predict(X)
#X.shape is (767135, 37) (It has undergone One Hot Encoding)
# Visualising the clusters
plt.scatter(X[y_kmeans == 0, 0], X[y_kmeans == 0, 1], s = 50, c = 'red',alpha = 0.3, label = 'Cluster 1')
plt.scatter(X[y_kmeans == 1, 0], X[y_kmeans == 1, 1], s = 50, c = 'blue',alpha = 0.3, label = 'Cluster 2')
plt.scatter(X[y_kmeans == 2, 0], X[y_kmeans == 2, 1], s = 50, c = 'green',alpha = 0.3, label = 'Cluster 3')
plt.scatter(X[y_kmeans == 3, 0], X[y_kmeans == 3, 1], s = 50, c = 'cyan',alpha = 0.3, label = 'Cluster 4')
plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], s = 300, c = 'yellow', label = 'Centroids')
plt.title('Clusters of customers')
plt.xlabel('Nationality')
plt.ylabel('Total Spending')
plt.legend()
plt.show()
运行代码时,我遇到以下错误:
TypeError: float() argument must be a string or a number, not 'csr_matrix'
ValueError: setting an array element with a sequence.
这篇关于KD Nuggets的文章将向您展示如何做到这一点,因为它是一个非常相似的数据集。它甚至还向您展示了如何进行三维可视化
https://www.kdnuggets.com/2019/11/customer-segmentation-using-k-means-clustering.html
这个挑战使用年龄、性别而不是国籍。。。但是数据分析和方法与你的目标是一致的
现在,他们正在使用3d绘图,但我认为这仍然适用,并将修复矩阵问题。尝试使用以下参数类型而不是矩阵调用散点图:
相关问题 更多 >
编程相关推荐