我正在进行k-means聚类分析,并试图绘制聚类图。但是,我的代码遇到错误:
AttributeError: 'PathCollection' object has no property 'pred'
我的代码:
#scale features
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
scaled_df = scaler.fit_transform(df)
# fitting multiple k-means algorithms and storing the values in an empty list
SSE = []
for cluster in range(1,40):
kmeans = KMeans(n_jobs = -1, n_clusters = cluster, init='k-means++')
kmeans.fit(scaled_df)
SSE.append(kmeans.inertia_)
# converting the results into a dataframe and plotting them
frame = pd.DataFrame({'Cluster':range(1,40), 'SSE':SSE})
plt.figure(figsize=(12,6))
plt.plot(frame['Cluster'], frame['SSE'], marker='o')
plt.xlabel('Number of clusters')
plt.ylabel('Inertia')
kmeans = KMeans(n_clusters=16, init ='k-means++', max_iter=300, n_init=10,random_state=0 )
pred = kmeans.fit_predict(scaled_df)
#Plot All K-Means Clusters
#Getting unique labels
u_labels = np.unique(pred)
#plotting the results:
for i in u_labels:
plt.scatter(scaled_df[pred == i , 0], scaled_df[pred == i , 1], pred = i)
plt.legend()
plt.show()
我有18个属性要进行集群,如果您能帮助我获取每个集群中的属性,我将不胜感激。谢谢
我试图分别绘制前5个簇:
plt.scatter(scaled_df_uk19[pred==0, 0], scaled_df_uk19[pred==0, 1], s=100, c='red', label ='Cluster 1')
plt.scatter(scaled_df_uk19[pred==1, 0], scaled_df_uk19[pred==1, 1], s=100, c='blue', label ='Cluster 2')
plt.scatter(scaled_df_uk19[pred==2, 0], scaled_df_uk19[pred==2, 1], s=100, c='green', label ='Cluster 3')
plt.scatter(scaled_df_uk19[pred==3, 0], scaled_df_uk19[pred==3, 1], s=100, c='cyan', label ='Cluster 4')
plt.scatter(scaled_df_uk19[pred==4, 0], scaled_df_uk19[pred==4, 1], s=100, c='magenta', label ='Cluster 5')
结果是,我想这有点奇怪
编辑:当我删除散布函数中的pred=I参数时,绘图显示:
它看起来不像通常的聚类图。有人能解释一下为什么会发生这种情况吗?谢谢大家!
目前没有回答
相关问题 更多 >
编程相关推荐