データサイエンティスト上がりのDX参謀・起業家

データサイエンティスト上がりのDX参謀・起業家のブログ。データ分析や事業について。自身はアーティスト、経営者、事業家。

ヒートマップ→クラスタリング→PRAT

ヒートマップは変数や観測値の関係を同時に可視化できる優れた方法。

クラスタリングをして距離の近い(関連の強い)変数、観測値を並べ替えてくれるので直感的に把握しやすい。

ヒートマップでデータを観たあと、クラスタリング・予測に繋いでいくこともできる。

ヒートマップとクラスタリングは標準化した後と前で結果が変わるので注意(俺もプログラム間違えてたw)。


コードはこちら↓

#---written by Issei---#

#------ダミーデータ
set.seed(1)
norm <- rnorm(200)
Data <- matrix(c(norm[1:50]+4, norm[51:100]+2, norm[101:150]-2, norm[151:200]-4), nrow=20, ncol=10, byrow=T)
Data[, 6:10] <- -Data[, 6:10]
DataScale <- apply(Data, 2, scale)

#------ヒートマップ
#---最長距離法
library(RColorBrewer)
hmcol <- colorRampPalette(brewer.pal(10, "PRGn"))(64)	#ヒートマップの色の準備

library(gplots)
heatmap.2(t(DataScale), density.info="none", trace="none", col=hmcol)

#---Ward法(はずれ値に強い)
heatmap.2(t(DataScale), density.info="none", trace="none", col=hmcol, hclustfun=function(d) hclust(d, method="ward"))

#------サンプルのクラスタリング
#plot(Data.hclust <- hclust(dist(Data), method="ward"))
#rect.hclust(Data.hclust, k=4)
plot(Data.hclust <- hclust(dist(DataScale), method="ward"))
rect.hclust(Data.hclust, k=4)

#---クラス変数を作る
Dataclass <- data.frame(Data, class=as.character(cutree(Data.hclust, k=4)))


#------ついでにPART
library(mvpart)
mvpart(class~., data=Dataclass, size=5)		#実データでもこれだけ綺麗に分かれると気持ちいいな〜