Learn R Programming

clv (version 0.3-2.1)

clv.Davies.Bouldin: Davies-Bouldin Index - Internal Measure

Description

Function computes Dunn index - internal measure for given data and its partitioning.

Usage

clv.Davies.Bouldin( index.list, intracls, intercls)

Arguments

index.list
object returned by function cls.scatt.data or cls.scatt.diss.mx.
intracls
string vector containing one or more names of intra cluster distances. Available are: l{ 1. if index.list is produced by cls.scatt.data: complet
intercls
string vector containing one or more names of inter cluster diameters. Available are: l{ 1. if index.list is produced by cls.scatt.data: single

Value

  • As output user gets the matrix of Davies-Bouldin indices. Matrix dimension depends on how many diam and dist measures are chosen by the user, normally dim(D)=c(length(intercls),length(intracls)). Each pair: (inter-cluster dist, intra-cluster diam) have its own position in result matrix.

Details

Davies-Bouldin index is given by equation:

DB = (1/|C|) sum{forall i in 1:|C|} max[ i != j ] { (diam(Ci) + diam(Cj))/dist(Ci,Cj) }

ll{ i,j - numbers of clusters which come from the same partitioning, dist(Ck,Cl) - inter cluster distance between clusters Ck and Cl, diam(Cm) - intra cluster diameter computed for cluster Cm, |C| - number of clusters. }

References

M. Halkidi, Y. Batistakis, M. Vazirgiannis Clustering Validity Checking Methods : Part II, http://citeseer.ist.psu.edu/537304.html

See Also

Functions which produce index.list input argument: cls.scatt.data, cls.scatt.diss.mx. Related functions: clv.Dunn.

Examples

Run this code
# load and prepare data
library(clv)
data(iris)
iris.data <- iris[,1:4]

# cluster data
agnes.mod <- agnes(iris.data) # create cluster tree 
v.pred <- as.integer(cutree(agnes.mod,5)) # "cut" the tree 

intraclust = c("complete","average","centroid")
interclust = c("single", "complete", "average","centroid", "aveToCent", "hausdorff")

# compute Davies-Bouldin indicies (also Dunn indicies)
# 1. optimal solution:

# compute intercluster distances and intracluster diameters
cls.scatt <- cls.scatt.data(iris.data, v.pred, dist="manhattan")

# once computed valuse use in both functions
dunn1 <- clv.Dunn(cls.scatt, intraclust, interclust)
davies1 <- clv.Davies.Bouldin(cls.scatt, intraclust, interclust)

# 2. functional solution:

# define new Dunn and Davies.Bouldin functions
Dunn <- function(data,clust) 
  clv.Dunn( cls.scatt.data(data,clust),
     intracls = c("complete","average","centroid"), 
     intercls = c("single", "complete", "average","centroid", "aveToCent", "hausdorff")
  )
Davies.Bouldin <- function(data,clust) 
  clv.Davies.Bouldin( cls.scatt.data(data,clust),
    intracls = c("complete","average","centroid"),
    intercls = c("single", "complete", "average","centroid", "aveToCent", "hausdorff")
  )

# compute indicies
dunn2 <- Dunn(iris.data, v.pred)
davies2 <- Davies.Bouldin(iris.data, v.pred)

Run the code above in your browser using DataLab