2016-09-16 57 views
1

例如,我有一个数据集X = {1,1.5,5,3,4,3},Y = {1,1.5,5,4,4,3.5} 。我做的是 -测试R中Kmeans聚类中的未知数据

data <− read . csv (”exp . csv”) 
print (data) 
results <− kmeans(data , 2) 
results 
results $ size 
results $ cluster 
plot (temp [ c(”X” , ”Y”) ] , col=results $ cluster) 

现在我想检查假设(1,1)是在哪个集群?我怎样才能做到这一点?

+0

'结果$ cluster'具有指示集群membersh标签ip,在你的情况下为'1,1,2,2,2,2',即前两个观察值属于簇1,其余为簇2 – OdeToMyFiddle

+0

欢迎来到SO。这是一个有趣的问题,但它可能更适合交叉验证。编程方式,答案是否定的(我认为)。但支持验证kmeans算法的统计数据可能会有更多的答案。 –

回答

0

情况1:当你知道该点是在你聚集数据集,例如,(1,1)

point1 <- c(1,1) 
results$cluster[which(data$X==point1[1] & data$Y==point1[2])] 
#[1] 1 

壳体2(一般):当点可以/可以不存在在该数据集,你聚集

point2 <- c(3,4) 
dimnames(results$centers) <- NULL 
which.min(apply(results$centers, 1, function(x) sum((x - point2)^2))) 
#[1] 2 

它也适用于数据集中的一个观点:

which.min(apply(results$centers, 1, function(x) sum((x - point1)^2))) 
#[1] 1