【R言語】クラスターの数を機械的に決める factoextraパッケージ
クラスターの数を機械的に決める
クラスター分析でkmeans法を使用するときはクラスタ数を自分で決定する必要がある。
その際に参考となるGap統計量を求める。
#install.packages("factoextra") #適切なクラスター数の検討 library(factoextra) #wssの推移をみる fviz_nbclust(kmdf,kmeans,method="wss") #クラスター数は5がよさそう fviz_nbclust(kmdf, kmeans, method = "silhouette") #クラスター数は2がよさそう #gap統計量を計算 gap_stat <- clusGap(kmdf, FUN = kmeans, nstart = 25, K.max = 10, B = 10) print(gap_stat, method = "firstmax") plot(gap_stat) factoextra::fviz_gap_stat(gap_stat) #6くらいでGap統計量の増加がながら化になるなだらかになる km <- kmeans(kmdf,5) km$cluster #空のデータフレーム用意 name <- NA classnum <- NA filenamelist <- data.frame(name,classnum) #名前とクラスのリスト(データフレーム)を作成する i <- 1 for (i in 1:length(imagelistname)){ filenamelist[i,1] <- substring(imagelistname[i],60,79) } #ファイル名とクラスタが対応した表が完成 filenamelist$classnum <- km$cluster
・plotでグラフ化
・factoextra::fviz_gap_staでグラフ化
・結果
パッケージを使用するとクラスター数を決める際の参考になるデータを得られた。
ただし、理論は完全にしていない。