这是我在kmeans之前的向量-
> 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之后-
> 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属于哪个集群?
发布于 2015-10-25 12:52:35
$cluster的值将以与原始数据相同的顺序返回。
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消除了所有的重复项,因为您有这样的离散数据。
发布于 2019-03-02 02:58:56
在MrFlick先生的回答上进行扩展(投票通过),如果你需要编程的集群编号,你也可以这样做(利用magrittr包,去掉所有这些嵌套的圆括号):
library(magrittr)
data.point <- 5 # put the data point here
cluster.no <- c(mydata==data.point) %>% which %>% km$cluster[.] %>% unique示例:
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
# 1https://stackoverflow.com/questions/33326202
复制相似问题