Skip to content

Instantly share code, notes, and snippets.

@yuu-ito
Last active December 28, 2015 05:19
Show Gist options
  • Save yuu-ito/7448607 to your computer and use it in GitHub Desktop.
Save yuu-ito/7448607 to your computer and use it in GitHub Desktop.

kmeans関数でのクラスタリング

k-meansでのクラスタリングはRはデフォルトで関数を用意している。 混合分布モデルでのクラスタリングは階層型。これは非階層型(分割最適化手法)のクラスタリング。

# 引用元 http://d.hatena.ne.jp/hamadakoichi/20100415/p1 kmeans
data(iris)
x <- iris[, 1:4]  # 解析データ:iris 1-4列のデータ
km <- kmeans(x, 3)  # k-meansの実行。クラスタ数は3に指定。
result <- km$cluster  #クラスタリング結果の抽出
result  #クラスタリング結果の表示
##   [1] 2 1 1 1 2 2 2 2 1 1 2 2 1 1 2 2 2 2 2 2 2 2 2 2 1 1 2 2 2 1 1 2 2 2 1
##  [36] 2 2 2 1 2 2 1 1 2 2 1 2 1 2 2 3 3 3 3 3 3 3 1 3 3 1 3 3 3 3 3 3 3 3 3
##  [71] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 1 3 3 3 3 1 3 3 3 3 3 3
## [106] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
## [141] 3 3 3 3 3 3 3 3 3 3
answer <- iris[, 5]  #クラスタリング正解:品種(iris 5列目)
ctbl <- table(answer, result)  #正解と結果のクロス表を作成
ctbl  #クロス表の表示
##             result
## answer        1  2  3
##   setosa     17 33  0
##   versicolor  4  0 46
##   virginica   0  0 50
# クロス表の正誤だけみても味気なかったので散布図をプロット
result.all <- cbind(x, cbind(answer, result))
result.all$result <- factor(result.all$result)
result.all$answer <- factor(result.all$answer)

library(GGally)
## Loading required package: ggplot2
## Loading required package: reshape
## Loading required package: plyr
## Attaching package: 'reshape'
## 以下のオブジェクトはマスクされています (from 'package:plyr') :
## 
## rename, round_any
ggpairs(data = result.all[, -6], color = "answer")  # answer 正しい種類での色分け

plot of chunk km

ggpairs(data = result.all[, -5], color = "result")  # result k-meansでのクラスタリング結果での色分け

plot of chunk km

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment