如何解决“AttributeError:'PathCollection'对象没有属性'pred'”错误?

2024-07-03 06:57:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在进行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')

结果是,我想这有点奇怪

enter image description here

编辑:当我删除散布函数中的pred=I参数时,绘图显示:

它看起来不像通常的聚类图。有人能解释一下为什么会发生这种情况吗?谢谢大家!

enter image description here


Tags: theindfpltlabelmeansfitsse