将类标签分配给 k-means 集群

机器算法验证 k-均值
2022-03-01 08:45:05

我有一个关于集群的非常基本的问题。在找到具有质心的 k 个集群之后,我该如何解释我已经聚类的数据点的类(为每个集群分配有意义的类标签)。我不是在谈论对找到的集群的验证。

是否可以在给定一组带标签的数据点的情况下完成,计算这些带标签的点属于哪个集群,并根据每个集群接收的点的类型和数量来决定标签?这似乎很明显,但我不知道以这种方式将标签分配给集群的标准。

需要明确的是,我想执行不使用任何标签的无监督聚类来首先找到我的聚类。然后找到集群后,我想根据一些示例数据点的属性为集群分配有意义的类标签。

3个回答

是的。您提出的建议完全是标准的,这是标准 k-means 软件自动工作的方式。在 k-means 的情况下,您计算每个观测值(数据点)和每个聚类平均值(质心)之间的欧几里德距离,并将观测值分配给最相似的聚类。然后,通过检查分类到该集群的观察的平均特征相对于那些相对于其他集群的平均值的平均值来确定集群的标签。

如果您查看 kmeans 对象中的名称,您会注意到有一个“集群”对象。这包含与输入数据相同的类标签。这是一个将集群标签绑定回您的数据的简单示例。

x <- data.frame(X=rnorm(100, sd=0.3), Y=rnorm(100, mean=1, sd=0.3))

k <- kmeans(x, 2) 
names(k)
x <- data.frame(x, K=k$cluster)

# You can also directly return the clusters
x <- data.frame(x, K=kmeans(x, 2)$cluster)

集群的标签可以基于集群内多数样本的类别。但这只有在集群的数量等于类的数量时才成立。