Python k-mean, centroids are placed outside of the clusters(蟒蛇k-均值,质心被放置在集群的外部)
本文介绍了蟒蛇k-均值,质心被放置在集群的外部的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试使用k-Means算法执行混合数据的聚类:chemical_1
,chemical_2
-数值,season
-分类。
已将season
列转换为虚拟对象,以便在K-Means算法中使用它。
我已使用plt.scatter(centers[:,0], centers[:,1], marker="x", color='r')
添加了群集中心,但它将它们放在了错误的位置,位于群集之外。
我应该如何处理kmeans.cluster_centers_
才能正确绘制它们?
#Make a copy of DF
df_transformed = df
#Transform the 'season' to dummies
df_transformed = pd.get_dummies(df_transformed, columns=['season'])
#Standardize
columns = ['chemical_1', 'chemical_2', 'season_winter', 'season_spring', 'season_autumn', 'season_summer']
df_tr_std = stats.zscore(df_transformed[columns])
#Cluster the data
kmeans = KMeans(n_clusters=4).fit(df_tr_std)
labels = kmeans.labels_
centers = np.array(kmeans.cluster_centers_)
#Glue back to original data
df_transformed['clusters'] = labels
#Add the column into our list
columns.extend(['clusters'])
#Analyzing the clusters
print(df_transformed[columns].groupby(['clusters']).mean())
chemical_1 chemical_2 season_winter season_spring season_autumn
clusters
0 7.951500 10.600500 0 0 1
1 8.119180 8.818852 1 0 0
2 8.024423 8.009615 0 1 0
3 7.939432 9.414773 0 0 0
season_summer
clusters
0 0
1 0
2 0
3 1
#Scatter plot of chemical_1 and chemical_2
sns.lmplot('chemical_1', 'chemical_2',
data=df_transformed,
size = 10,
fit_reg=False,
hue="clusters",
scatter_kws={"marker": "D",
"s": 100}
)
plt.scatter(centers[:,0], centers[:,1], marker="x", color='r')
plt.title('Clusters chemical_1 vs chemical_2')
plt.xlabel('chemical_1')
plt.ylabel('chemical_2')
plt.show
更新:我尝试使用PCA进行转换。这条路对吗?此外,我只能使用matplotlib绘制数据。在这里使用海运的正确方式是什么?
pca = PCA(n_components=2, whiten=True).fit(df_tr_std)
#Cluster the data
kmeans = KMeans(n_clusters=4)
kmeans.fit(df_tr_std)
labels = kmeans.labels_
centers = pca.transform(kmeans.cluster_centers_)
plt.scatter(df_tr_std[:,0], df_tr_std[:,1])
plt.scatter(centers[:,0], centers[:,1], marker="x", color='r')
现在散点图如下所示:
推荐答案
如果您对z分数进行群集,则生成的中心也将是z分数。
KMeans显然无法将它们映射回您的旧坐标系-您必须自己映射。
由于z得分转换是简单的线性转换,因此可以直接重新创建此函数和逆转换。
这篇关于蟒蛇k-均值,质心被放置在集群的外部的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:蟒蛇k-均值,质心被放置在集群的外部
猜你喜欢
- 检查具有纬度和经度的地理点是否在 shapefile 中 2022-01-01
- ";find_element_by_name(';name';)";和&QOOT;FIND_ELEMENT(BY NAME,';NAME';)";之间有什么区别? 2022-01-01
- 使用 Cython 将 Python 链接到共享库 2022-01-01
- 我如何卸载 PyTorch? 2022-01-01
- YouTube API v3 返回截断的观看记录 2022-01-01
- 计算测试数量的Python单元测试 2022-01-01
- 使用公司代理使Python3.x Slack(松弛客户端) 2022-01-01
- 如何使用PYSPARK从Spark获得批次行 2022-01-01
- CTR 中的 AES 如何用于 Python 和 PyCrypto? 2022-01-01
- 我如何透明地重定向一个Python导入? 2022-01-01