我正在通过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集群模型中默认设置不同的集群名称。
答案 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])
如您所见,您可以访问质心以及训练数据。如果您的训练数据和簇数恒定,则这些质心不会真正改变。
但是,如果您添加更多的训练数据或更多的群集,则必须根据生成的质心来创建新的映射。