繁体   English   中英

如何使 python 中没有簇质心的簇不可见?

[英]How can i make invisible the clusters without cluster centroid in python?

我有一个 kmeans 集群 object 有 15 个集群。 我重新排列了 object 的 cluster_centers 并从该列表中删除了 5 个特定的集群中心。 现在我想查看我的 object 和集群中心。 但我找不到让一些集群不可见的方法。

我最初的聚类数据是:

在此处输入图像描述

当我尝试使用其新的集群质心来可视化我的 kmeans 数据 object 时,我得到了这个 output: 在此处输入图像描述

我想让上面没有“X”标记的集群不可见。 我怎样才能做到这一点?

我将此代码用于上述 plot :

plt.scatter(X_train[:,0], X_train[:,1],c=TrainData[1],cmap='gist_rainbow')
plt.scatter(new_centroids[:,0], new_centroids[:, 1],s = 150, c = 'black', label = 'Centroid', marker="x")
plt.show()

您可以构建一个过滤器来排除不需要的值。 您需要使用np.array(TrainData[1])将您的TrainData[1]转换为 numpy 数组(如果还没有的话)。

这是使用 sklearns KMeans的示例:


import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
import numpy as np

X_train = np.random.normal(size=(5000, 2))
kmeans_result = KMeans(n_clusters=15).fit(X_train)
new_centroids = kmeans_result.cluster_centers_
cluster_ids = kmeans_result.labels_
# cluster_ids = np.array(TrainData[1])

undesired1 = 3
undesired2 = 5
undesired3 = 7
filter = (cluster_ids != undesired1) & (cluster_ids != undesired2) & (cluster_ids != undesired3)
plt.scatter(X_train[filter, 0], X_train[filter, 1], c=cluster_ids[filter], cmap='gist_rainbow', alpha=0.4)
desired_centroid_ids = np.array([i for i in range(len(new_centroids)) if i not in [undesired1, undesired2, undesired3]])
plt.scatter(new_centroids[desired_centroid_ids, 0], new_centroids[desired_centroid_ids, 1], s=150, c='black',
            label='Centroid', marker="x")
plt.show()

示例图

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM