更改Kmean集群的标签名称

时间:2020-09-02 02:31:29

标签: machine-learning scikit-learn cluster-analysis k-means

我正在通过sklearn在python中进行kmean聚类。我想知道如何更改kmean群集的生成的标签名称。例如:

data          Cluster
0.2344         1
1.4537         2
2.4428         2
5.7757         3

我想实现

data          Cluster
0.2344         black
1.4537         red
2.4428         red
5.7757         blue

我不是要通过打印直接设置1 -> black; 2 -> red。我想知道是否可以在kmean集群模型中默认设置不同的集群名称。

1 个答案:

答案 0 :(得分:1)


无法更改默认标签。
您必须使用字典分别映射它们。 您可以在文档here中查看所有可用的方法。
任何可用的方法或属性都不允许您更改默认标签。

使用字典解决方案:

# Code
a = [0,0,1,1,2,2]
mapping = {0:'black', 1:'red', 2:'blue'}
a = [mapping[i] for i in a]

# Output
['black', 'black', 'red', 'red', 'blue', 'blue']

如果更改数据或集群数量: 首先,我们将看到可视化效果:
代码:
导入并生成随机数据:

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

x = np.random.uniform(100, size =(10,2))

应用Kmeans算法

kmeans = KMeans(n_clusters=3, random_state=0).fit(x)

获取集群中心

arr = kmeans.cluster_centers_

您的簇质心如下:

array([[23.81072765, 77.21281171],
       [ 8.6140551 , 23.15597377],
       [93.37177176, 32.21581703]])

这里,第一行是簇0的质心,第二行是簇1的质心,依此类推。

可视化质心和数据

plt.scatter(x[:,0],x[:,1])
plt.scatter(arr[:,0], arr[:,1])

您得到的图形如下所示: My graph

如您所见,您可以访问质心以及训练数据。如果您的训练数据和簇数恒定,则这些质心不会真正改变。

但是,如果您添加更多的训练数据或更多的群集,则必须根据生成的质心来创建新的映射。