5つのデータを用意する。ここでは各々2次元(x軸、y軸)でやってみる。 ちなみにR ではこのデータの形式をベクトルと呼ぶ
d1 <- c(2, 1)
d2 <- c(1, 2)
d3 <- c(2, 4)
d4 <- c(4, 4)
d5 <- c(4.5, 2)
data <- rbind(d1, d2, d3, d4, d5)
data
## [,1] [,2]
## d1 2.0 1
## d2 1.0 2
## d3 2.0 4
## d4 4.0 4
## d5 4.5 2
ベクトルを結合して、行列を作成する rbindのrはrow(行)を意味し、行として1つづく追加してゆく 列として1つづつ追加する場合は、column(列)なので、cbindを使う(ここでは関係ない) data <- cbind(d1, d2, d3, d4, d5)
実際どんな行列のデータになっているか見てみる
これをプロットしてみる
plot(data)
各要素感の距離を求めて(dist関数), hclust関数に入力するとデンドログラム描画の準備OK plotするとデンドログラムが表示される。
hang=-1を指定すると要素の名前が下に表示されるので見やすい。
dist関数は、各要素間の距離を計算してくれる。
rect.hclust(hc, 2, 1) は2つに分けて、1つ目をラインで囲む hclust関数は、デンドログラム作成のためのクラスタリング(グループ化)をしてくれる。
この1行のコードでいいのでスゴイ。
hc <- hclust(d)
d <- dist(data)
hc <- hclust(d)
plot(hc)
plot(hc, hang=-1)
rect.hclust(hc, 2, 1)
結果をプロット(可視化)してみた。
以下の2つは基本的に同じではあるが、表示方法が異なる。
plot(hc)
plot(hc, hang=-1)
ans <- cutree(hc, k=2)
ans
## d1 d2 d3 d4 d5
## 1 1 2 2 2
2つに分けて、各々がどちらに分類されたかをみた。
最初に用意してデータはじ2次元だったが、3次元にしてみる。この次元数はいくつでもOK。
実際に必要な要素数だけ用意すればよい。
d11 <- c(2, 1.1, 4.1)
d12 <- c(1, 2, 3)
d13 <- c(2, 4, 3)
d14 <- c(4, 4, 2)
d15 <- c(4.5, 2, 4)
data1 <- rbind(d11, d12, d13, d14, d15)
data1
## [,1] [,2] [,3]
## d11 2.0 1.1 4.1
## d12 1.0 2.0 3.0
## d13 2.0 4.0 3.0
## d14 4.0 4.0 2.0
## d15 4.5 2.0 4.0