web-dev-qa-db-ja.com

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

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

クラスタリング(Rを使用)と視覚化(HTML5 Canvasを使用)を理解しようとしています。

基本的に、 クラスタープロット を作成したいのですが、データをプロットする代わりに、キャンバスにプルして何かを行うことができる2Dポイントまたは座標のセットを取得したいと思います(しかし、私はこれを行う方法がわからない)。私は私が想像するでしょう:

  1. データセット全体の類似性マトリックスを作成します(distを使用)
  2. Kmeansまたは類似のものを使用して類似性マトリックスをクラスター化します(kmeansを使用)
  3. MDSまたはPCAを使用して結果をプロットしますが、手順2と3がどのように関連しているかわかりません(cmdscale)。

私は質問をチェックアウトしました ここここ そして ここ (最後のものが最も役に立ちます)。

12
slotishtype

このような意味ですか?申し訳ありませんが、HTML5 Canvasについては何も知りません。Rだけです...しかし、それがお役に立てば幸いです...

最初に、距離行列を計算してcmdscaleを使用してプロットするよりも、kmeansを使用してデータをクラスター化します(距離行列をクラスター化していないことに注意してください)。次に、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

31
EDi

ここでは、「clusplot」パッケージ内に、クラスターの結果を分析するための1つのグラフ「coordinate plot」を見つけることができます。

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)

この投稿 使い方を説明しています。

0
pablo_sci