#Programik sluzy do wyboru liczby klastrow. Rysuje wykres #separowalnosci i sylwetki dla kmeans i pam dla k=1,...,11. library(MASS); library(cluster) X=as.matrix(crabs[,4:8]) silK=rep(NA,10); silP=silK for(k in 1:10) { silK[k]=mean(silhouette(kmeans(X,k+1)$clust,dist(X))[,3]) silP[k]=mean(silhouette(pam(X,k+1))[,3]) } n0=nrow(X); tK=sum(diag(var(X)*(n0-1)/n0)); tP=sum(dist(X)) for( k in 2:10) { tK=c(tK,sum(kmeans(X,k,iter.max=150)$with/n0)) pa=pam(X,k)$clust; dd=rep(NA,k) for(i in 1:k) dd[i]=sum(dist(X[pa==i,])) tP=c(tP,sum(dd)) } sepK=1-tK/tK[1]; sepP=1-tP/tP[1] par(mfrow=c(1,2),las=1) matplot(2:11,cbind(silK,silP),type="o",lty=1,pch=1,main="sylwetka") matplot(1:10,cbind(sepK,sepP),type="o",lty=1,pch=1,main="separowalnosc")