2016-11-16 59 views
0

我是比較新的R.我只是試圖找出集羣的最佳數目使用以下方法虹膜數據:查找集羣編寫中的R代碼中的錯誤

library(datasets) 
head(iris) 

# method1: 
wss <- (nrow(iris)-1)*sum(apply(iris,2,var)) 
    for (i in 2:3) wss[i] <- sum(kmeans(iris,       centers=i)$withinss) 
plot(1:3, wss, type="b", xlab="Number of Clusters",ylab="Within groups sum of squares") 

# method2: 
library(fpc) 
pamk.best <- pamk(iris) 
cat("number of clusters estimated by optimum average silhouette width:", pamk.best$nc, "\n") 
plot(pam(iris, pamk.best$nc)) 

這兩種方法都扔了錯誤。所以請做一些揭示它的人。提前謝謝了。

+1

當您收到錯誤消息時,您應該在您的問題中包含確切的錯誤消息。你看過'apply(iris,2,var)'的結果嗎?這可能會讓你知道發生了什麼。您不能直接在分類(因子)數據上使用kmeans。 – MrFlick

+0

與編程無關:我認爲你的kmeans最佳聚類數量的標準不應該是withinss的最小值,因爲這會減少每次添加聚類,直到每個觀察都是一個聚類。 –

回答

1
apply(iris,2,var) 

給你一個錯誤,因爲第4列不是數字。 嘗試 apply(iris[,1:4],2,var)

第二種方法也是如此。

Error in pam(sdata, k, diss = diss, ...) : 
    x is not a numeric dataframe or matrix. 
+1

這是正確的..我現在已經解決了它。非常感謝。 –

+0

你願意接受我的回答嗎? (漂亮請);) – Ale