R: Dunn Index - Internal Measure

clv.Dunn {clv} | R Documentation

## Dunn Index - Internal Measure

### Description

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

### Usage

    clv.Dunn( 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:
1. if `index.list` is produced by `cls.scatt.data`: complete | average | centroid,
2. if `index.list` is produced by `cls.scatt.diss.mx`: complete | average.
`intercls` | string `vector` containing one or more names of inter cluster diameters. Available are:
1. if `index.list` is produced by `cls.scatt.data`: single | complete | average | centroid | aveToCent | hausdorff.
2. if `index.list` is produced by `cls.scatt.diss.mx`: single | complete | average | hausdorff.

### Details

Dunn index:

D = [ min{ k,l - numbers of clusters } dist(Ck, Cl) ]/[ max{ m - cluster number } diam(Cm) ]

k,l,m | - 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.

### Value

As output user gets matrix of Dunn 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.

### Author(s)

Lukasz Nieweglowski

### 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.Davies.Bouldin.

### Examples

    # 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 Dunn indicies (also Davies-Bouldin 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)

[Package clv version 0.3-2.2 Index]