2017-08-21
今日はK-meansまでRでやってみる。
データサイエンティスト養成読本の続きからですね。今日はK-meansまでRでやってみる。
技術評論社 (2016-08-25)
売り上げランキング: 32,403
売り上げランキング: 32,403
K-means (P40~)
そもそもK-meansとは何かよくわからなかったので、しらべてみた。
・非階層型クラスタリングのアルゴリズム
・最適化問題を解くアルゴリズム
らしい。
— DAI (@never_be_a_pm) August 21, 2017
K-meansがやっていることはこんな感じらしいhttps://t.co/B6zixcT2tR pic.twitter.com/WRPT9PdwrA— DAI (@never_be_a_pm) August 21, 2017
さっそくコードを書いてみると。とりあえずk-meansでクラスタに分けて、プロットするまでやってみる。
#k-meansそうすると結果がこんな感じになる。
data <- state.x77 #州データを代入
pca <- prcomp(data[,1:6], scale = T)
nrow(data) #列の数を算出
head(data) #うえから6つのデータを取得
km <- kmeans(scale(data[,1:6]),3) #3つにクラスタがわかれることを想定
#主成分分析の結果にクラスターの情報を付与する
df <- data.frame(pca$x)
df$name <- rownames(df)
df$cluster <- as.factor(km$cluster)
#描画
ggplot(df, aes(x=PC1,y=PC2,label=name,col=cluster)) + geom_text() + theme_bw(16)
クラスタをプロット(ソースコードも添付) pic.twitter.com/xlEDKSd55S— DAI (@never_be_a_pm) August 21, 2017
さて、これを今度はレーダーチャートに変換する。
#レーダーチャート結果的にはこんな感じになる。
install.packages("fmsb")
library(fmsb)
df <- as.data.frame(scale(km$centers))
dfmax <- apply(df,2,max) + 1
dfmin <- apply(df,2,min) - 1
df <- rbind(dfmax,dfmin,df)
#レーダーチャートを描画
radarchart(df,seg=5,plty=1,pcol=rainbow(3))
legend("topright",legend=1:3,col=rainbow(3),lty=1)
主成分分析→K-means→レーダーチャート— DAI (@never_be_a_pm) August 21, 2017
こんな感じになるんだね。 pic.twitter.com/wXIZGi2t4Y
技術評論社 (2016-08-25)
売り上げランキング: 32,403
売り上げランキング: 32,403