あなたが求めるものに対しては正確な答えはありませんが、k-meansクラスタリングの代わりにセリエーションを考慮する可能性があります。それはクラスタリングではなく序列に似ていますが、最終的な結果として、セリエートされたデータのヒートマップが得られます。
seriationのためのRパッケージがありますが、seriation
と呼ばれ、それはあなたが、私がしようとする例を調理したら、私はQの詳細をお答えしますdirectly from CRAN
を得ることができますビネットを持っています。
上記のコメントから、適切な回答が続いています。最初にいくつかのダミーデータ - 3つの変数のそれぞれに10サンプルの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)
手段?クラスタリングなどに使用される変数の1つ? –
各クラスタ内の値の意味。たとえば、各クラスタがdata.frameの30行で、data.frameにk-meansクラスタリングが実行される10の列がある場合、各クラスタの300の値の平均が必要です。重心を使用することもできます。 –
セントロイドは各クラスタの番号ではなく、10-d空間内の点であるため、各クラスタの重心は10の座標を持ちます。 –