首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >确定R中的集群成员资格

确定R中的集群成员资格
EN

Stack Overflow用户
提问于 2015-10-25 12:30:29
回答 2查看 715关注 0票数 0

这是我在kmeans之前的向量-

代码语言:javascript
复制
> sort(table(mydata))
mydata
23  7  9  4 10  3  5  8  2  1 
 1  3  3  4  5  6  6  6  7  9

km <- kmeans(mydata, centers = 10) 

在kmeans之后-

代码语言:javascript
复制
> sort(table(km$cluster))
km$cluster
 1  6  7  3  5  2  4 10  8  9 
 1  3  3  4  5  6  6  6  7  9 

显然,我所有的1都存储在集群9中,所有的2都存储在集群8中,依此类推。

我能用R找到一个特定号码所属的集群吗?比方说,找出我的1属于哪个集群?

EN

回答 2

Stack Overflow用户

发布于 2015-10-25 12:52:35

$cluster的值将以与原始数据相同的顺序返回。

代码语言:javascript
复制
mydata <- rep(c(23,7,9,4,10,3,5,8,2,1), c(1,3,3,4,5,6,6,6,7,9))
sort(table(mydata))
# mydata
# 23  7  9  4 10  3  5  8  2  1 
#  1  3  3  4  5  6  6  6  7  9 

km <- kmeans(mydata, centers = 10) 
unique(cbind(value=mydata, clust=km$cluster))
#       value clust
#  [1,]    23     9
#  [2,]     7     5
#  [3,]     9     7
#  [4,]     4     4
#  [5,]    10     1
#  [6,]     3    10
#  [7,]     5     2
#  [8,]     8     8
#  [9,]     2     6
# [10,]     1     3

在这里,我使用cbind重新连接了这两者,并使用unique消除了所有的重复项,因为您有这样的离散数据。

票数 5
EN

Stack Overflow用户

发布于 2019-03-02 02:58:56

在MrFlick先生的回答上进行扩展(投票通过),如果你需要编程的集群编号,你也可以这样做(利用magrittr包,去掉所有这些嵌套的圆括号):

代码语言:javascript
复制
library(magrittr)
data.point <- 5  # put the data point here
cluster.no <- c(mydata==data.point)  %>% which %>% km$cluster[.] %>% unique

示例:

代码语言:javascript
复制
library(magrittr)
set.seed(42)  # for reproducibility
mydata <- rep(c(23,7,9,4,10,3,5,8,2,1), c(1,3,3,4,5,6,6,6,7,9))
km <- kmeans(mydata, centers = 10) 

data.point <- 23
c(mydata==data.point)  %>% which %>% km$cluster[.] %>% unique
# 8
data.point <- 10
c(mydata==data.point)  %>% which %>% km$cluster[.] %>% unique
# 1
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33326202

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档