不是你問的問題的確切答案,但也許你可能會考慮系列化而不是k-均值聚類。它有點像協調而不是聚類,但最終的結果是連續數據的熱圖,聽起來與k-means後跟特定排序熱圖所顯示的相似。
有r包系列化,叫seriation
,它有一個小插曲,你可以得到directly from CRAN
我會回答Q的細節一旦我編造了一個例子來試試。
好的 - 從上面的評論中正確的答案。首先一些虛擬數據 - 每個10個樣本的3個羣集,每個變量有3個。
set.seed(1)
dat <- data.frame(A = c(rnorm(10, 2), rnorm(10, -2), rnorm(10, -2)),
B = c(rnorm(10, 0), rnorm(10, 5), rnorm(10, -2)),
C = c(rnorm(10, 0), rnorm(10, 0), rnorm(10, -10)))
## randomise the rows
dat <- dat[sample(nrow(dat)),]
clus <- kmeans(scale(dat, scale = FALSE), centers = 3, iter.max = 50,
nstart = 10)
## means of n points in each cluster
mns <- sapply(split(dat, clus$cluster), function(x) mean(unlist(x)))
## order the data by cluster with clusters ordered by `mns`, low to high
dat2 <- do.call("rbind", split(dat, clus$cluster)[order(mns)])
## heatmaps
## original first, then reordered:
layout(matrix(1:2, ncol = 2))
image(1:3, 1:30, t(data.matrix(dat)), ylab = "Observations",
xlab = "Variables", xaxt = "n", main = "Original")
axis(1, at = 1:3)
image(1:3, 1:30, t(data.matrix(dat2)), ylab = "Observations",
xlab = "Variables", xaxt = "n", main = "Reordered")
axis(1, at = 1:3)
layout(1)
產量:什麼
![Original and reordered heatmaps](https://i.stack.imgur.com/prkzD.png)
手段?用於聚類或其他變量的變量之一? – 2011-01-26 22:15:09
每個羣集中的值的含義。例如,如果每個集羣在data.frame中有30行,並且data.frame有10列,在這些列上執行k-means聚類,我想要在每個集羣中使用300個值的均值。也可以使用質心。 – 2011-01-28 06:05:54