2016-12-29 14 views
0

Я хочу запустить алгоритм buckshot в R, что сочетает hac (иерархическая кластеризация) с кластером k-mean. Итак, я хочу выбрать много центров k-средств. Например, один из кластеров имеет три семени. Это мой код,Как выбрать много начальных центров кластеризации k-средних в R

ирис данные к-средства

iristr <- read.csv("iristr.CSV", header = TRUE) 
str(iristr) 
iristr.m <- as.matrix(iristr[,1:4]) 
km <- kmeans(iristr.m, centers = 3) 
km 
table(km$cluster,iristr$Species) 

ирис данных дробь

irists <- read.csv("irists.csv", header = TRUE) 
str(irists) 
irists.m <- as.matrix(irists[,1:4]) 
dm <- dist(irists.m, method = "euclidean") 
hc <- hclust(dm, method = "complete") 
plot(hc) 
clusterCut <- cutree(hc,3) 
clusterCut 
i1 <- iristr.m[c(1,4,12),] # one of cluster have many seed(center) 
i1 
i2 <- iristr.m[c(2,5,8),] # one of cluster have many seed(center) 
i2 
i3 <- iristr.m[c(3,6,7,9,10,11),] # one of cluster have many seed(center) 
i3 
buckshot <- kmeans(iristr.m, centers=i1,i2,i3) # realized only "i1" centers 
buckshot 
table(buckshot$cluster,iristr$Species) 
+1

Не имея какой-либо * данные * и любой * фактический выход *, все полностью спекулятивный. Пожалуйста, прочитайте о [воспроизводимых примерах] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example), а затем отредактируйте свой вопрос с помощью чего-то полезного. – r2evans

ответ

0

Вот пример применения алгоритма кластеризации Kmeans по данным Iris.

Используя данные Iris, столбец функций 1-4 присваивается переменной x, а класс - переменной y.

x = iris[,-5] 
y = iris$Species 

В алгоритме Kmeans исходные назначения кластера являются случайными. Поскольку мы знаем, что в этих данных имеется 3 вида, общее число кластеров может быть указано как 3. Также, поскольку стартовые задания в Kmeans являются случайными, nstart может быть назначен 10, что означает, что 10 различных (случайных) начальных заданий центра будут и тот, который имеет самую низкую внутриквартальную сумму квадратов (WCSS) (сумма функций расстояния каждой точки в кластере до центра K), будет выбран как окончательный. Вы можете назначить более высокое значение параметру «nstart», чтобы сообщить алгоритму Kmeans, чтобы попробовать более возможные случайные начальные задания центра.

kc <- kmeans(x, centers = 3, nstart = 10) 

Чтобы узнать ошибку, результат кластеризации затем сравнивается с видов/классов данных радужной оболочки.

table(y,kc$cluster) 

Наконец результат визуализируется откладывая длину чашелистиков как оси х и чашелистиков Ширина, как у оси (вы можете выбрать разные, хотя).

plot(x[c("Sepal.Length", "Sepal.Width")], col = kc$cluster) 
points(kc$centers[,c("Sepal.Length", "Sepal.Width")], col = 1:3, pch=23, cex=3) 

enter image description here

+0

Благодарим вас за помощь! –