# The MIT License # Copyright (c) 2007 The GGobi Foundation # http://www.ggobi.org/book/code-license.txt # Read in the data d.prim7<-read.csv("prim7.csv") # Load library library(rggobi) # Hiearchical cllustering d.prim7.dist<-dist(d.prim7) d.prim7.dend<-hclust(d.prim7.dist,method="average") par(pty="m") plot(d.prim7.dend,cex=1.5,cex.axis=1.5,cex.lab=1.5,main="") abline(h=12.6,col="red",lty=2,lwd=3) mtext("Dendrogram for Hierarchical Clustering with Average Linkage",side=3, line=1.5,cex=1.5) # Color clusters in ggobi gd<-ggobi(d.prim7)[1] clust9<-cutree(d.prim7.dend,k=9) glyph_type(gd)<-6 glyph_size(gd)<-3 glyph_color(gd)[clust9==1]<-9 # triangle glyph_color(gd)[clust9==1]<-1 glyph_color(gd)[clust9==2]<-9 # one arm glyph_color(gd)[clust9==2]<-1 glyph_color(gd)[clust9==3]<-9 # triangle glyph_color(gd)[clust9==3]<-1 glyph_color(gd)[clust9==4]<-9 # half-arm glyph_color(gd)[clust9==4]<-1 glyph_color(gd)[clust9==5]<-9 # triangle glyph_color(gd)[clust9==5]<-1 glyph_color(gd)[clust9==6]<-9 # half-arm glyph_color(gd)[clust9==6]<-1 glyph_color(gd)[clust9==7]<-9 # outlier glyph_color(gd)[clust9==7]<-1 glyph_color(gd)[clust9==8]<-9 # 2 pts at end of an arm glyph_color(gd)[clust9==8]<-1 glyph_color(gd)[clust9==9]<-9 # outlier glyph_color(gd)[clust9==9]<-1 # Read data d.music<-read.csv("music-sub.csv",row.names=1) d.music.std <- cbind(subset(d.music.std,select=c(Artist,Type)), apply(subset(d.music.std,select=LVar:LFreq), 2, f.std.data)) # Hierarchical clustering d.music.dist<-dist(d.music.std[,-c(1,2)]) d.music.hc<-hclust(d.music.dist,method="ward") cl5<-cutree(d.music.hc,5) xm<-apply(d.music.std[cl5==1,-c(1,2)],2,mean) for (i in 2:5) xm<-rbind(xm,apply(d.music.std[cl5==i,-c(1,2)],2,mean)) # K-means # Seed using means of hiearchical clustering d.music.km<-kmeans(subset(d.music.std,select=c(LVar:LFreq)), xm) d.music.km <- kmeans(subset(d.music.std,select=c(LVar:LFreq)), 5) # Compare methods table(d.music.km$cluster,cl5) d.music.clustcompare<-cbind(d.music.std,cl5,d.music.km$cluster) names(d.music.clustcompare)[8]<-"Wards" names(d.music.clustcompare)[9]<-"km" gd <- ggobi(d.music.clustcompare)[1]