0

kmeans分析を実行するために以下を使用しています。

km = kmeans(mat2, centers = 4)

library(fpc)また、次のようにビジュアルを取得するためにを使用してkmeans分析をプロットしました。

plotcluster(mat2, km$cluster)

結果は次のとおりです。ここに画像の説明を入力してください

の各行はmat2、プロット内のポイントに対応します。マトリックスの各行に次の名前を付けました。

rownames(mat2) = names      #names is a vector corresponding to the rows of mat2

次の属性によって、マトリックスの各行のメンバーシップを見つけることができます。

km$cluster

これにより、マトリックスの各行の名前と、それに続くプロットの対応する整数が示されます。しかし、もっと多くのデータにアクセスしたいと思います。

これらのクラスターポイントからより多くのデータにアクセスするにはどうすればよいですか?たとえば、プロットの整数と行列の行の対応を見つけたいと思います。明確にするために、この質問に答えることで、マトリックスのどの行がプロットの最高の2に対応するかを知ることができますか?どの整数が行列のどの行に対応するかがわかれば、行列の各行の名前がわかり、意味のある解釈を与えることができます。

また、プロット内の点とそれが属するクラスターの中心との間の距離測度を見つけたいと思います。プロットの(x、y)座標とマトリックスの行の間の対応を取得できますか?プロット内のクラスターポイントをクリックすると、上記のデータの一部をより多く表示できるように、インタラクティブなGUIを取得できますか?プロットに別のライブラリを使用することもできます。2つの質問に要約します。

  1. プロットの整数と行列の行の対応をどのように取得できますか?
  2. これをはるかに簡単にする既存のパッケージまたはツールはありますか?

すべての助けは大歓迎です!

4

1 に答える 1

1

これはあなたの質問の一部に答えていますが、そこにはたくさんあります。プロットを操作して点を識別したい場合は、 を参照してください?identify。これは、あなたが求めている特定の行を操作するための答えです。インタラクティブな GUI について質問したい場合は、おそらくそれに関する特定の質問を投稿してください。

mat <- matrix(rnorm(160), ncol=2)
km <- kmeans(mat, centers=4)
df <- as.data.frame(cbind(mat, km$cluster))
names(df) <- c("Var1", "Var2", "cluster")

#Get the row of df with highest Var1 and cluster == 2
which(df$Var1 == max(df$Var1[df$cluster==2]))
# 76

#Use this to extract the row
df[which(df$Var1 == max(df$Var1[df$cluster==2])),]

#You can subset you data based on one of the variables
#Get the rows with cluster == 2
df.2 <- df[df$cluster == 2,]
于 2013-03-07T23:13:31.647 に答える