方法:clusGap(data, kmeans, k.max = 10, B = 10, verbose = interactive())
補足:library(cluster)が必要
dataはデータ、kmeansはk-means、K.maxはクラスタ数の最大値、Bはブートストラップ回数*
*ブートストラップ回数とは
https://ja.wikipedia.org/wiki/%E3%83%96%E3%83%BC%E3%83%88%E3%82%B9%E3%83%88%E3%83%A9%E3%83%83%E3%83%97%E6%B3%95
> result_gap <- clusGap(df.sample_data, kmeans, K.max = 80, B = 1000, verbose = interactive()) Clustering k = 1,2,..., K.max (= 80): .. done Bootstrapping, b = 1,2,..., B (= 1000) [one "." per sample]: .................................................. 50 .................................................. 100 .................................................. 150 .................................................. 200 .................................................. 250 .................................................. 300 .................................................. 350 .................................................. 400 .................................................. 450 .................................................. 500 .................................................. 550 .................................................. 600 .................................................. 650 .................................................. 700 .................................................. 750 .................................................. 800 .................................................. 850 .................................................. 900 .................................................. 950 .................................................. 1000 > plot(result_gap)
下記はサンプルデータの結果
上の結果だと、20付近まで数値が右肩上がりに上昇しているが、それ以降は比較的停滞傾向にある。そのため、クラスタ数は20で良いと考えられる。
◆参考サイト
R K-means法のクラスタ数を機械的に決定する方法
http://www.trifields.jp/how-to-decide-number-of-clusters-in-r-1677