データサイエンス講義 3章「アルゴリズム」 その5
今回は、k平均法のコーディングについて。
- 作者: Rachel Schutt,Cathy O'Neil,瀬戸山雅人,石井弓美子,河内崇,河内真理子,古畠敦,木下哲也,竹田正和,佐藤正士,望月啓充
- 出版社/メーカー: オライリージャパン
- 発売日: 2014/10/25
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
■演習
【対象】
2次元正規分布に従う3つのデータセットを用意し、k平均法により、正しく分類されるか確認。
※k=3とする。
【コーディング】
# # # # # # # # # # # # # # # # # # # #
#k平均法によるクラスタリング
library("MASS")
#ラベル1(RED)のデータ作成
mu1 <- c(1.5,0)
Sigma1 <- matrix(c(0.5,0,0,0.5),2,2)
datanum1 <- 200
dat1 <- mvrnorm(datanum1,mu1,Sigma1)
#ラベル2(BLUE)のデータ作成
mu2 <- c(0,1.5)
Sigma2 <- matrix(c(0.5,0,0,0.5),2,2)
datanum2 <- datanum1
dat2 <- mvrnorm(datanum2,mu2,Sigma2)
#ラベル3(GREEN)のデータ作成
mu3 <- c(1.5,1.5)
Sigma3 <- matrix(c(0.5,0,0,0.5),2,2)
datanum3 <- datanum1
dat3 <- mvrnorm(datanum3,mu3,Sigma3)
#データ結合
datatest <- rbind(dat1,dat2,dat3)
#正解ラベルを付加
label <- factor(c(rep("RED",200),rep("BLUE",200),rep("GREEN",200)))
datatest <- cbind(datatest,label)
#3つのラベルがあると知った上で、k平均法を実行
(datakluster <- kmeans(x=datatest,centers=3))
#正解ラベルとクラスタリング結果の比較
table(datakluster$cluster,label)
plot(x=datatest, col=datakluster$cluster,pch=datakluster$cluster)
# # # # # # # # # # # # # # # # # # # #
k平均法でクラスタリングした結果は以下。
横が正しいラベル、縦がクラスタリング結果。
label
BLUE GREEN RED
1 1 9 186
2 15 176 13
3 184 15 1
この結果から、(184+176+188)/600 * 100 = 91.3%の精度があることを確認。
また、各データをプロットすると、以下のようになる。
■参考になるページ(コーディング)
k平均法のRでの方法が記載。