R とクラスター
- 12. データを入力する
以下のコードを入力する。
# 7行5列を作成する
seiseki <- matrix(c(80,90,67,46,50,57,70,80,85,90,
80,90,35,40,50,40,60,50,45,55,
78,85,45,55,60,55,40,65,80,75,
90,85,88,92,95),7,5)
# 列にラベルを付ける
colnames(seiseki) <- c("算数","理科","国語","英語","社会")
# 行にラベルを付ける
rownames(seiseki) <- c("田中" , "佐藤" ,"鈴木","本田","川端","吉野","斉藤")
- 13. すると、こんな感じに!
> seiseki
算数 理科 国語 英語 社会
田中 80 80 50 85 80
佐藤 90 85 40 45 75
鈴木 67 90 60 55 90
本田 46 80 50 60 85
川端 50 90 45 55 88
吉野 57 35 55 40 92
斉藤 70 40 78 65 95
- 14. 距離行列を求める
> seiseki.d <- dist(seiseki)
> round(seiseki.d)
田中 佐藤 鈴木 本田 川端 吉野
佐藤 43
鈴木 37 36
本田 42 49 26
川端 45 44 23 13
吉野 69 64 58 51 58
斉藤 56 68 54 56 64 37
・roundは小数点を丸める
・上三角行列が空白なの
は対称行列だから。
この場合だと、最も距離が近いのは
(川端、本田)の13である。
(川端、本田)のペアが一番
近いのでそこの二人がまず
クラスターを結成する。
- 15. 田中 佐藤 鈴木 本田 川端 吉野
佐藤 43
鈴木 37 36
本田 42 49 26
川端 45 44 23 13
吉野 69 64 58 51 58
斉藤 56 68 54 56 64 37
川端、本田のペアが距離が一番
近いので、まず二人がグループを
つくる。
次に鈴木、川端のペアの距離が
近いので、鈴木も同じグループに
加えられる。
川端、本田 川端、本田、鈴
木
同じグループに入れるか、別のグループに入れるかは、何らかのルール
を用いるのが望ましい。
・距離が離れすぎるとグループに入れないとか??
- 18. 実践
> sei.hc <- hclust(seiseki.d)
> sei.hc
Call:
hclust(d = seiseki.d)
Cluster method : complete
Distance : euclidean
Number of objects: 7
> plot(sei.hc)
・hclustでクラスター分析を行う
・completeは最遠隣法
・plot()で出力