NbClust
package provides 30 indices for determining the number of clusters and proposes to user the best clustering scheme from the different results obtained by varying all combinations of number of clusters, distance measures, and clustering methods.NbClust(data, diss="NULL", distance = "euclidean",
min.nc=2, max.nc=15, method = "ward",
index = "all", alphaBeale = 0.1)
diss="NULL"
, but if it is
replaced by a dissimilarity matrix, distance should be "NULL".## A 2-dimensional example
x<-rbind(matrix(rnorm(100,sd=0.1),ncol=2),
matrix(rnorm(100,mean=1,sd=0.2),ncol=2),
matrix(rnorm(100,mean=5,sd=0.1),ncol=2),
matrix(rnorm(100,mean=7,sd=0.2),ncol=2))
NbClust(x, diss="NULL", distance = "euclidean", min.nc=2, max.nc=8,
method = "complete", index = "ch", alphaBeale = 0.1)
## A 3-dimensional example
x<-rbind(matrix(rnorm(150,sd=0.3),ncol=3),
matrix(rnorm(150,mean=3,sd=0.2),ncol=3),
matrix(rnorm(150,mean=5,sd=0.3),ncol=3))
NbClust(x, diss="NULL", distance = "euclidean", min.nc=2, max.nc=10,
method = "ward", index = "dindex", alphaBeale = 0.1)
## A 5-dimensional example
x<-rbind(matrix(rnorm(150,sd=0.3),ncol=5),
matrix(rnorm(150,mean=3,sd=0.2),ncol=5),
matrix(rnorm(150,mean=1,sd=0.1),ncol=5),
matrix(rnorm(150,mean=6,sd=0.3),ncol=5),
matrix(rnorm(150,mean=9,sd=0.3),ncol=5))
NbClust(x, diss="NULL", distance = "euclidean", min.nc=2, max.nc=10,
method = "ward", index = "all", alphaBeale = 0.1)
## A real data example
data<-iris[,-c(5)]
NbClust(data, diss="NULL", distance = "euclidean", min.nc=2, max.nc=6,
method = "ward", index = "kl", alphaBeale = 0.1) ## KL index
NbClust(data, diss="NULL", distance = "euclidean", min.nc=2, max.nc=6,
method = "kmeans", index = "hubert", alphaBeale = 0.1)
NbClust(data, diss="NULL", distance = "manhattan", min.nc=2, max.nc=6,
method = "complete", index = "all", alphaBeale = 0.1)
## Only indices with low computational cost (26 indices).
## Examples with a dissimilarity matrix
x<-rbind(matrix(rnorm(150,sd=0.3),ncol=3),
matrix(rnorm(150,mean=3,sd=0.2),ncol=3),
matrix(rnorm(150,mean=5,sd=0.3),ncol=3))
diss_matrix<- dist(x, method = "euclidean", diag=FALSE)
NbClust(x, diss=diss_matrix, distance = "NULL", min.nc=2, max.nc=6,
method = "ward", index = "ch", alphaBeale = 0.1)
data<-iris[,-c(5)]
diss_matrix<- dist(data, method = "euclidean", diag=FALSE)
NbClust(data, diss=diss_matrix, distance = "NULL", min.nc=2, max.nc=6,
method = "ward", index = "all", alphaBeale = 0.1)
x<-rbind(matrix(rnorm(20,sd=0.1),ncol=2),
matrix(rnorm(20,mean=1,sd=0.2),ncol=2),
matrix(rnorm(20,mean=5,sd=0.1),ncol=2),
matrix(rnorm(20,mean=7,sd=0.2),ncol=2))
diss_matrix<- dist(x, method = "euclidean", diag=FALSE)
NbClust(x, diss=diss_matrix, distance = "NULL", min.nc=2, max.nc=6,
method = "ward", index = "alllong", alphaBeale = 0.1)
Run the code above in your browser using DataLab