2012-01-26 17 views
10

clustplotを使用せずにRでクラスタプロットを作成するにはどうすればよいですか?Rでクラスタプロットを作成するには?

私はいくつかのクラスタリング(Rを使用)と視覚化(HTML5 Canvasを使用)を手に入れようとしています。

基本的には、私はcluster plotを作成したいが、データをプロットするのではなく、キャンバスに引っ張って何かをすることができる2D点または座標のセットを取得したい。(しかし、これを行う)。私は私がいることを想像:

  1. は、データセット全体のために(使用DIST)
  2. クラスタの類似度行列を作成関数kmeansまたは類似のもの(使用して関数kmeans)
  3. プロットMDSまたはPCAを使用して結果を用いて類似度行列 - しかし、ステップ2と3がどのように関連しているかはわかりません(cmdscale)。

私は(ほとんどの使用の最後の1である)の質問hereherehereをチェックアウトしました。

答えて

28

これはどういう意味ですか? 申し訳ありませんが、私はHTML5 Canvasについては何も知らないのですが、私はそれが役に立ちそうです...

最初に私はkmeansを使ってデータをクラスタリングします。 cmdletを使ってそれをプロットします。次に、kmeansによって識別されたグループに対応する色をMDSプロットに追加します。いくつかの素晴らしいグラフィカルな機能を追加しました。

cmdscaleで作成したオブジェクトから座標にアクセスできます。ここで

### some sample data 
require(vegan) 
data(dune) 

# kmeans 
kclus <- kmeans(dune,centers= 4, iter.max=1000, nstart=10000) 

# distance matrix 
dune_dist <- dist(dune) 

# Multidimensional scaling 
cmd <- cmdscale(dune_dist) 

# plot MDS, with colors by groups from kmeans 
groups <- levels(factor(kclus$cluster)) 
ordiplot(cmd, type = "n") 
cols <- c("steelblue", "darkred", "darkgreen", "pink") 
for(i in seq_along(groups)){ 
    points(cmd[factor(kclus$cluster) == groups[i], ], col = cols[i], pch = 16) 
} 

# add spider and hull 
ordispider(cmd, factor(kclus$cluster), label = TRUE) 
ordihull(cmd, factor(kclus$cluster), lty = "dotted") 

enter image description here

+1

ありがとう@EDi、それは本当に素晴らしいです。だから、明確にするために、類似性のマッチをクラスタ化して構築します。次に、MDSを使用して2D内のポイントを配置し、ポイントとの関係によってポイントをカラーリングします。ブリリアント。あなたがチャンスを持っているなら、これが何をしているのかを説明できますか?グループ< - レベル(factor(kclus $ cluster)) – slotishtype

+1

私の編集を参照してください。 groupsは、グループの名前を含むobjektであり、for-loopでのみ使用されます。 – EDi

+0

あなたの編集が表示されます。最後の質問の1つは、距離行列をクラスタ化できますか、それとも狂った動きですか?申し訳ありませんが、現時点で学習しています。 – slotishtype

0

あなたは "clusplot" のパッケージ内に、 "プロット座標"、クラスタの結果を分析するための1つのグラフを見つけることができます。

PCAに基づいていません。ファンクションスケールを使用して、すべての変数が0〜1の範囲にあることを意味するので、どのクラスタが各変数の最大/最小平均を保持しているかを比較できます。

install.packages("devtools") ## To be able to download packages from github 
library(devtools) 
install_github("pablo14/clusplus") 
library(clusplus) 

## Create k-means model with 3 clusters 
fit_mtcars=kmeans(mtcars,3) 

## Call the function 
plot_clus_coord(fit_mtcars, mtcars) 

This postについて説明します。

関連する問題