これはあなたの後のことですか? this answerから拡張:
# make some data
x <- rbind(matrix(rnorm(100, sd = 0.3), ncol = 2),
matrix(rnorm(100, mean = 1, sd = 0.3), ncol = 2))
colnames(x) <- c("x", "y")
#
# do cluster analysis
(cl <- kmeans(x, 2))
#
# put cluster labels with data
out1 <- data.frame(cbind(x, clusterNum = cl$cluster))
#
# organise center coords to be ready for merging
centers <- data.frame(cbind(data.frame(cl$center[,1]),
data.frame(cl$center[,2]),
clusterNum=rownames(cl$center)))
#
# merge cluster center coords with data
out2 <- merge(out1, centers, all.x = TRUE)
#
# check output
out2
clusterNum x y cl.center...1. cl.center...2.
1 1 0.233161364 -0.04258146 0.01064895 0.01376516
2 1 -0.356284774 -0.59135602 0.01064895 0.01376516
3 1 -0.302272796 -0.24033113 0.01064895 0.01376516
4 1 -0.369299302 -0.24997660 0.01064895 0.01376516
5 1 -0.060454427 0.19711328 0.01064895 0.01376516
...
90 2 0.609833599 0.67729922 1.05184887 1.03445718
91 2 0.943306637 1.09420588 1.05184887 1.03445718
92 2 0.545053826 1.22620571 1.05184887 1.03445718
93 2 0.706921965 1.10326091 1.05184887 1.03445718
94 2 0.837644227 1.07121784 1.05184887 1.03445718
95 2 0.550863085 1.06977250 1.05184887 1.03445718
#
# Success! We have one dataframe that includes: raw data, cluster labels
# and cluster center coords
私は、より効率的な方法は、(例えば、それを再編成するcl$center
を必要としない)があり、生のデータをクラスタ中心COORDSを置くためにmerge
を使用しますが、間違いなく。
出典
2012-03-17 05:52:32
Ben
うん、それは参考になる - 私はまた、クラスターセンターのラベルでクラスターのセンターラベルを置き換える方法が不思議だった。たとえば、私はクラスタの中心である配列を持っています... ob < - kmeans(array、k) ラベル< - ob $クラスタ クラスタセンターの配列と配列です。 センター< - ob $センター 私がやりたかったのは、クラスターセンターの値を使ってラベルにクラスターラベルを再現することでした。したがって、 'labels'の各要素はクラスタの中心値です。私は3Dポイントでkmeansをやっているので少し難しかったので、各ポイントは3つの値のマトリックスで表されます。 –
別の質問をしてみませんか?今回は、ここでのコメントで明らかにした新しい詳細と再現可能な例が含まれています。こちらの手順は次のとおりです。http://www.stackoverflow.com/questions/5963269/how-メイクアップa great-r-reproducible-example – Ben