Last active
February 15, 2019 05:58
-
-
Save zaking331/c2e34d1523de862308d2af28f6f39a7a to your computer and use it in GitHub Desktop.
研究室のクラスター分析ゼミ資料です。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#成績データの入力 | |
seiseki<-matrix(c(89,90,67,46,50,57,70,80,85,90,80,90,35,40,50,40,60,50,45,55,78,85,45,55,60,55,65,80,75,85,90,85,88,92,95),7,5,byrow=TRUE) | |
colnames(seiseki)<-c("算数","理科","国語","英語","社会") | |
rownames(seiseki)<-c("田中","佐藤","鈴木","本田","川端","吉野","斎藤") | |
#ユークリッド距離を求める。distは、成績のユークリッド距離を求めている。 | |
seiseki.d<-dist(seiseki) | |
#小数点以下を丸める | |
round(seiseki.d) | |
#階層的クラスターの分析(最遠隣法) | |
seiseki.d<-dist(seiseki) | |
#階層的クラスター分岐の関数(hclust) hclust(d,method="complete",...),defaultはcomplete(最遠隣法) | |
(sei.hc<-hclust(seiseki.d)) | |
#結果のオブジェクトに格納されたデータのリストの呼び出し | |
summary(sei.hc) | |
#上からの行番号がクラスター形成の順番,マイナスが個体の番号 | |
sei.hc$merge | |
#クラスターを形成する樹形図の高さ | |
sei.hc$height | |
#樹形図の左から右方向の個体番号が記録される。 | |
sei.hc$order | |
#樹形図の作成 | |
plot(sei.hc) | |
#重心法 | |
plot(hclust(seiseki.d,"centroid"),hang=-1) | |
#ウォード法 | |
plot(hclust(dist(seiseki,"canberra"),"ward"),hang=-1) | |
#各個体がどのクラスターに属すRかに関する情報が返される。 | |
cutree(sei.hc,k=2) | |
#コーフェン行列を求める。 | |
cophenetic(sei.hc) | |
#妥当性を求めるためにユーグリッド距離と最遠隣法によるコーフェン相関係数を求める。相関係数が高ければ、距離行列と用いた方法のコーフェン行列との歪みが小さい。 | |
cor(seiseki.d, cophenetic(sei.hc)) | |
#irisデータから2種類のデータを取り出してキャンベラ距離の群平均法とウォード法の結果を出している。ウォード法は妥当と思われる結果を返す確率が高い。 | |
d<-dist(iris[c(51:60,141:150),1:4],"can") | |
ha<-hclust(d,"average") | |
hw<-hclust(d,"ward") | |
cor(cophenetic(ha),d) | |
cor(cophenetic(hw),d) | |
plot(ha,main="キャンベラ距離",群平均法,cop-cor=0.8057",cex=1.2,hang=-1) | |
plot(h2,main="キャンベラ距離",ウォード法,cop-cor=0.608",cex=1.2,hang=-1) | |
#コーフエン相関係数は、ウォード法が群平均法より低い。 | |
#k-means法 | |
#kmeasn(x, centers, iter.max=10,nstart = 1,algorithm =c("Hartigan-Wong","Lloyd","Forgy","MacQueen")),defaultはHartigan-Wongが指定 | |
#クラスターの数を2つに指定,Hartigan-Wong法がその他の方法をよりよいと言われている。 | |
(seiseki.km<-kmeans(seiseki,2)) | |
summary(seiseki.km) | |
#kmeans法による分類結果と各クラスのサイズ | |
seiseki.km$cluster | |
#階層的クラスター分析と | |
#Rがupdateされてないとできない?-今回はpassで! | |
#モデルの選択と解析,混合分布によるクラスター分析,潜在クラスター分析とも呼ばれる。 | |
#モデルに基づいたクラスター分析は、観測データが異なる確率分布による混合分布であると仮定し、個体が属するクラスのラベルをも隠れ変数として推定。 | |
install.packages("mclust");library(mclust) | |
#hclassを用いるために、EMclustを用いてクラスターの数を推測。BICの折れ線グラフを作成(R上では1を選択)。 | |
plot(Mclust(iris[,1:4])) | |
#VVVモデルを選択 | |
iris.hc<-hc(modelName = "VVV", data= iris[,1:4]) | |
#クラスターの数を3つとした | |
iris.hcl<-hclass(iris.hc,3) | |
tatable(iris[,5],iris.hcl) | |
#散布図の作成 | |
clPairs(iris[,1:4],cl=iris.hcl) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment