如何使用kernlab包的kkmeans获取样本聚类归属并存储为向量?
获取kkmeans的样本聚类归属
嘿,这个问题我之前也碰到过!其实kernlab包的kkmeans函数返回的结果里已经包含了所有样本的聚类标签,只是需要用正确的方式提取出来就行,下面给你两种靠谱的方法:
方法1:使用predict()函数(推荐)
这是最符合R语言惯用逻辑的方式,直接对kkmeans的结果调用predict()就能得到每个样本的聚类归属向量:
library(kernlab) # 运行核K-Means test <- kkmeans(as.matrix(iris[,-5]), 3) # 提取聚类标签 cluster_assignments <- predict(test)
方法2:直接访问对象的内部属性
kkmeans返回的是一个kkmeans类的S4对象,你也可以直接访问它的@.Data属性来获取标签:
cluster_assignments <- test@.Data
不管用哪种方法,cluster_assignments都是一个和原数据集样本顺序完全对应的向量,每个元素代表对应样本的聚类编号。你可以用length(cluster_assignments)验证一下,它的长度应该等于原数据集的行数(比如这里nrow(iris))。
如果需要把聚类标签和原数据集绑定在一起,还可以这么做:
# 合并标签到iris数据集 iris_with_clusters <- cbind(iris, cluster = cluster_assignments)
内容的提问来源于stack exchange,提问作者Mateus Maia
相关产品推荐
相关产品推荐

