Learn R Programming

fpc (version 1.2-2)

kmeansCBI: Interface functions for clustering methods

Description

These functions provide an interface to several clustering methods implemented in R, for use together with the cluster stability assessment in clusterboot (as parameter clustermethod; "CBI" stands for "clusterboot interface"). In some situations it could make sense to use them to compute a clustering even if you don't want to run clusterboot, because some of the functions contain some additional features (e.g., normal mixture model based clustering of dissimilarity matrices projected into the Euclidean space by MDS or partitioning around medoids with estimated number of clusters, noise/outlier identification in hierarchical clustering).

Usage

kmeansCBI(data,k,scaling=TRUE,runs=1,...)

hclustCBI(data,k,cut="level",method,scaling=TRUE,noisecut=0,...)

hclusttreeCBI(data,minlevel=2,method,scaling=TRUE,...)

disthclustCBI(dmatrix,k,cut="level",method,noisecut=0,...)

noisemclustCBI(data,G,emModelNames,nnk,hcmodel=NULL,Vinv=NULL)

distnoisemclustCBI(dmatrix,G,emModelNames,nnk, hcmodel=NULL,Vinv=NULL,mdsmethod="classical", mdsdim=4)

claraCBI(data,k,usepam=TRUE,diss=FALSE,...)

pamkCBI(data,krange=2:10,scaling=TRUE,diss=FALSE,...)

trimkmeansCBI(data,k,scaling=TRUE,trim=0.1,...)

disttrimkmeansCBI(dmatrix,k,scaling=TRUE,trim=0.1, mdsmethod="classical", mdsdim=4,...)

dbscanCBI(data,eps,MinPts,diss=FALSE,...)

mahalCBI(data,clustercut=0.5,...)

Arguments

data
a numeric matrix. The data matrix - usually a cases*variables-data matrix. claraCBI, pamkCBI and dbscanCBI work with an n*n-dissimilarity matrix as well, see parameter diss.
dmatrix
a squared numerical dissimilarity matrix or a dist-object.
k
numeric, usually integer. In most cases, this is the number of clusters for methods where this is fixed. For hclustCBI and disthclustCBI see parameter cut below.
scaling
either a logical value or a numeric vector of length equal to the number of variables. If scaling is a numeric vector with length equal to the number of variables, then each variable is divided by the corresponding value from
runs
integer. Number of random initializations from which the k-means algorithm is started.
cut
either "level" or "number". This determines how cutree is used to obtain a partition from a hierarchy tree. cut="level" means that the tree is cut at a particular dissimilarity level, cut="number" means t
method
method for hierarchical clustering, see the documentation of hclust.
noisecut
numeric. All clusters of size <=noisecut< code=""> in the disthclustCBI/hclustCBI-partition are joined and declared as noise/outliers.
minlevel
integer. minlevel=1 means that all clusters in the tree are given out by hclusttreeCBI, including one-point clusters (but excluding the cluster with all points). minlevel=2 excludes the one-point clusters
G
vector of integers. Number of clusters or numbers of clusters used by EMclust/EMclustN. If G has more than one entr
emModelNames
vector of string. Models for covariance matrices, see documentation of EMclust/EMclustN.
nnk
integer. Tuning constant for NNclean, which is used to estimate the initial noise for noisemclustCBI and distnoisemclustCBI. See parameter k in the
hcmodel
string or NULL. Determines the initialization of the EM-algorithm for EMclust/EMclustN. Documented in
Vinv
numeric. See documentation of EMclustN.
mdsmethod
"classical", "kruskal" or "sammon". Determines the multidimensional scaling method to compute Euclidean data from a dissimilarity matrix. See cmdscale, isoM
mdsdim
integer. Dimensionality of MDS solution.
usepam
logical. If TRUE, the function pam is used for clustering, otherwise clara. pam is
diss
logical. If TRUE, data will be considered as a dissimilarity matrix. in claraCBI, this requires usepam=TRUE.
krange
vector of integers. Numbers of clusters to be compared.
trim
numeric between 0 and 1. Proportion of data points trimmed, i.e., assigned to noise. See trimkmeans.
eps
numeric. The radius of the neighborhoods to be considered by dbscan.
MinPts
integer. How many points have to be in a neighborhood so that a point is considered to be a cluster seed? See documentation of dbscan.
clustercut
numeric between 0 and 1. If fixmahal is used for fuzzy clustering, a crisp partition is generated and points with cluster membership values above clustercut are considered as membe
...
further parameters to be transferred to the original clustering functions (not required).

Value

  • All interface functions return a list with the following components:
  • resultclustering result, usually a list with the full output of the clustering method (the precise format doesn't matter); whatever you want to use later.
  • ncnumber of clusters. If some points don't belong to any cluster but are declared as "noise", nc includes the noise component, and there should be another component nccl, being the number of clusters not including the noise component.
  • clusterlistthis is a list consisting of a logical vectors of length of the number of data points (n) for each cluster, indicating whether a point is a member of this cluster (TRUE) or not. If a noise component is included, it should always be the last vector in this list.
  • partitionan integer vector of length n, partitioning the data. If the method produces a partition, it should be the clustering. This component is only used for plots, so you could do something like rep(1,n) for non-partitioning methods.
  • clustermethoda string indicating the clustering method.
  • The output of some of the functions has further components:
  • ncclsee nc above.
  • nnkby noisemclustCBI and distnoisemclustCBI, see above.
  • initnoiselogical vector, indicating initially estimated noise by NNclean, called by noisemclustCBI and distnoisemclustCBI.
  • noiselogical. TRUE if points were classified as noise/outliers by disthclustCBI.

Details

All these functions call clustering methods implemented in R to cluster data and to provide output in the format required by clusterboot. Here is a brief overview:
  • kmeansCBI
{an interface to the function kmeansruns calling kmeans for k-means clustering. (kmeansruns allows the specification of several random initializations of the k-means algorithm.)} hclustCBI{an interface to the function hclust for agglomerative hierarchical clustering with noise component (see parameter noisecut above). This function produces a partition and assumes a cases*variables matrix as input.} hclusttreeCBI{an interface to the function hclust for agglomerative hierarchical clustering. This function gives out all clusters belonging to the hierarchy (upward from a certain level, see parameter minlevel above).} disthclustCBI{an interface to the function hclust for agglomerative hierarchical clustering with noise component (see parameter noisecut above). This function produces a partition and assumes a dissimilarity matrix as input.} noisemclustCBI{an interface to the functions EMclust and EMclustN, for normal mixture model based clustering. Warning: EMclust and EMclustN often have problems with multiple points. In clusterboot, it is recommended to use this only together with multipleboot=FALSE. NOTE: the mclust package has recently been updated to 3.0.0. noisemclustCBI at the moment requires one of the previous versions of mclust. The newest one is now available as mclust02 on CRAN. If you have an older version of mclust installed, which is still named "mclust", you have to change require(mclust02) in the function to require(mclust).} distnoisemclustCBI{an interface to the functions EMclust and EMclustN, for normal mixture model based clustering. This assumes a dissimilarity matrix as input and generates a data matrix by multidimensional scaling first. Warning: EMclust and EMclustN often have problems with multiple points. In clusterboot, it is recommended to use this only together with multipleboot=FALSE. NOTE: the mclust package has recently been updated to 3.0.0. distnoisemclustCBI at the moment requires one of the previous versions of mclust. The newest one is now available as mclust02 on CRAN. If you have an older version of mclust installed, which is still named "mclust", you have to change require(mclust02) in the function to require(mclust).} claraCBI{an interface to the functions pam and clara for partitioning around medoids.} pamkCBI{an interface to the function pamk calling pam for partitioning around medoids. The number of clusters is estimated by the average silhouette width.} trimkmeansCBI{an interface to the function trimkmeans for trimmed k-means clustering. This assumes a cases*variables matrix as input.} disttrimkmeansCBI{an interface to the function trimkmeans for trimmed k-means clustering. This assumes a dissimilarity matrix as input and generates a data matrix by multidimensional scaling first.} dbscanCBI{an interface to the function dbscan for density based clustering.} mahalCBI{an interface to the function fixmahal for fixed point clustering.}

See Also

clusterboot, dist, kmeans, kmeansruns, hclust, EMclust, EMclustN, pam, pamk, clara, trimkmeans, dbscan, fixmahal

Examples

Run this code
set.seed(20000)
  face <- rFace(50,dMoNo=2,dNoEy=0,p=2)
  dbs <- dbscanCBI(face,eps=1.5,MinPts=4)
  dhc <- disthclustCBI(dist(face),method="average",k=1.5,noisecut=2)
  table(dbs$partition,dhc$partition)

Run the code above in your browser using DataLab