将类别标签分配给k-均值聚类


10

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

可以给定一个小的标记数据点集,计算这些标记点属于哪个群集,并根据每个群集接收的点的类型和数量来确定标签吗?这似乎很明显,但我不知道以这种方式将标签分配给群集的标准。

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


我不确定要了解您的问题:通常,任何k-means算法都应为每个数据点返回有关类成员资格的信息。您是在谈论实际数据点还是新观察?
chl 2013年

@chi我怀疑Riyaz担心要寻找用来标记聚类的名称,并且正在谈论先验地命名一些点,然后使用某种算法,该算法考虑聚类中命名点的优势来命名这些聚类。
Glen_b-恢复莫妮卡

2
@Riyaz,我们可以使用下面的类比分析来理解您的问题吗?通常有人会分析一组变量,将它们聚类为似乎“挂在一起”的变量组,但是分析人员需要考虑组成每个聚类的变量的性质,并为其命名。 /考虑每个群集(因子)什么的方式。这基本上就是您在这里得到的吗?
gung-恢复莫妮卡

Answers:


4

是。您提出的建议完全是标准的,这是标准k-means软件自动运行的方式。对于k均值,您需要计算每个观测值(数据点)与每个聚类平均值(质心)之间的欧式距离,并将观测值分配给最相似的聚类。然后,通过检查分类为聚类的观测值的平均特征相对于相对于其他聚类的观测值的平均特征,来确定聚类的标签。


3

如果查看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)

0

聚类的标签可以基于聚类中多数样本的类别。但这仅在簇数等于类数时才成立。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.