2016-09-16 78 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