2014-12-10 2 views
-1

Я пытаюсь сделать многомерный кластер k-средних в r. У меня есть 3 переменные и 10 столбцов данных, плюс контекст (например, для Iris), поэтому 11 переменных. А мой х PeruReady, очевидномногомерный кластер k-значений

После обучающего онлайн Я получил это далеко:

PeruReady.km <- kmeans(PeruReady[, -1], 3, iter.max=1000) 
tbl <- table(PeruReady[, 1], PeruReady.km$cluster) 
PeruReady.dist <- dist(PeruReady[, -1]) 
PeruReady.mds <- cmdscale(PeruReady.dist) 
c.chars <- c("*", "o", "+")[as.integer(PeruReady$Context)] 
a.cols <- rainbow(3)[PeruReady$cluster] 
plot(PeruReady.mds, col=a.cols, pch=c.chars, xlab="X", ylab="Y") 

Но мой сюжет придумывает совершенно пустые, что я делаю неправильно?

+2

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

+0

Что такое 'PeruReady'? Если он не слишком велик, опубликуйте результат 'dput (PeruReady)' в своем вопросе. Кроме того, кнопка '{}' предназначена для блоков кода. – jlhoward

ответ

0

С небольшим набором данных (demand.sm) ваш код работал нормально. Вы нормализуете все свои числовые столбцы?

dput(demand.sm) 

structure(list(Demand = c("rify la", "p quasi", "rify LD", "ventive", 
"ekeeper", " de min", " risk g", " approv", "uest te", "", "al trai", 
"cation", "ely inv", "rge tim", "get of ", "vey pro", "ent ONA", 
"ble sel", "cipline", "tus rep", "ced-ran"), normalized = structure(c(-1.15780226157481, 
-0.319393727330983, -1.15780226157481, -1.15780226157481, -0.319393727330983, 
-0.319393727330983, -0.319393727330983, -0.319393727330983, 0.519014806912847, 
0.519014806912847, 0.519014806912847, -0.738597994452898, -0.738597994452898, 
2.19583187540051, 2.19583187540051, -1.15780226157481, -0.319393727330983, 
-0.319393727330983, 0.519014806912847, 1.35742334115668, 0.519014806912847 
), .Dim = c(21L, 1L), "`scaled:center`" = 3.76190476190476, "`scaled:scale`" = 2.38547190100328)), .Names = c("Demand", 
"normalized"), row.names = c(NA, -21L), class = "data.frame") 
clusters <- kmeans(demand.sm[ , "normalized"], 5) 

demand.dist <- dist(demand.sm[ , "normalized"]) 
demand.mds <- cmdscale(demand.dist) # multidimensional scaling of data matrix, aka principal coordinates analysis 
c.chars <- c("*", "o", "+")[as.integer(clusters$Context)] 
a.cols <- rainbow(3)[clusters$cluster] 
plot(demand.mds, col=a.cols, pch=c.chars, xlab="X", ylab="Y") 

enter image description here

Смежные вопросы