2017-08-21

K-meansでクラスタ分析をRでやってみる 【データサイエンス養成読本】

2017-08-21

今日はK-meansまでRでやってみる。
データサイエンティスト養成読本の続きからですね。






K-means (P40~)


そもそもK-meansとは何かよくわからなかったので、しらべてみた。

・非階層型クラスタリングのアルゴリズム
・最適化問題を解くアルゴリズム

らしい。



さっそくコードを書いてみると。とりあえず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)
そうすると結果がこんな感じになる。


さて、これを今度はレーダーチャートに変換する。


#レーダーチャート
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)
結果的にはこんな感じになる。







注目の投稿

 PythonのTweepyを利用して、Twitter APIを利用している。 その中で、ハマったポイントをメモしておく。 まず、Searchに関して。 Twitter検索は、クライアントアプリ側では、全期間の検索が可能になっている。 一方で、APIを利用する際は、過去1週間しか...