更改Kmean集群的标签名称

问题描述

我正在通过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集群模型中默认设置不同的集群名称。

解决方法


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

使用字典解决方案:

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

# Output
['black','black','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[:,arr[:,1])

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

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

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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...