2016-11-16 1 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 не должен быть минимальным значением inss, потому что это будет уменьшаться при каждом добавлении кластера, пока каждое наблюдение не будет одним кластером. –

ответ

1
apply(iris,2,var) 

дает вам сообщение об ошибке, поскольку четвертый столбец не является числовым. Пробег apply(iris[,1:4],2,var)

То же самое касается второго метода.

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

это правильно..и теперь решили. Большое спасибо. –

+0

Вы согласны с моим ответом? (Довольно пожалуйста);) – Ale