cmeans {e1071} R Documentation

## Fuzzy C-Means Clustering

### Description

The fuzzy version of the known kmeans clustering algorithm as well as its online update (Unsupervised Fuzzy Competitive learning).

### Usage

```cmeans (x, centers, iter.max=100, verbose=FALSE, dist="euclidean",
method="cmeans", m=2, rate.par = NULL)
```

### Arguments

 `x` The data matrix where columns correspond to variables and rows to observations `centers` Number of clusters or initial values for cluster centers `iter.max` Maximum number of iterations `verbose` If `TRUE`, make some output during learning `dist` Must be one of the following: If `"euclidean"`, the mean square error, if `"manhattan"`, the mean absolute error is computed. Abbreviations are also accepted. `method` If `"cmeans"`, then we have the cmeans fuzzy clustering method, if `"ufcl"` we have the On-line Update. Abbreviations in the method names are also accepted. `m` The degree of fuzzification. It is defined for values greater than 1 `rate.par` The parameter of the learning rate

### Details

The data given by `x` is clustered by the fuzzy kmeans algorithm.

If `centers` is a matrix, its rows are taken as the initial cluster centers. If `centers` is an integer, `centers` rows of `x` are randomly chosen as initial values.

The algorithm stops when the maximum number of iterations (given by `iter.max`) is reached.

If `verbose` is `TRUE`, it displays for each iteration the number the value of the objective function.

If `dist` is `"euclidean"`, the distance between the cluster center and the data points is the Euclidean distance (ordinary fuzzy kmeans algorithm). If `"manhattan"`, the distance between the cluster center and the data points is the sum of the absolute values of the distances of the coordinates.

If `method` is `"cmeans"`, then we have the kmeans fuzzy clustering method. If `"ufcl"` we have the On-line Update (Unsupervised Fuzzy Competitive learning) method, which works by performing an update directly after each input signal.

The parameters `m` defines the degree of fuzzification. It is defined for real values greater than 1 and the bigger it is the more fuzzy the membership values of the clustered data points are.

The parameter `rate.par` of the learning rate for the `"ufcl"` algorithm which is by default set to `rate.par=0.3` and is taking real values in (0 , 1).

### Value

`cmeans` returns an object of class `"fclust"`.

 `centers` The final cluster centers. `size` The number of data points in each cluster. `cluster` Vector containing the indices of the clusters where the data points are assigned to. The maximum membership value of a point is considered for partitioning it to a cluster. `iter` The number of iterations performed, `membership` a matrix with the membership values of the data points to the clusters. `withinerror` Returns the sum of square distances within the clusters. `call` Returns a call in which all of the arguments are specified by their names.

### References

Nikhil R. Pal, James C. Bezdek, and Richard J. Hathaway. Sequential Competitive Learning and the Fuzzy c-Means Clustering Algorithms. Neural Networks, Vol. 9, No. 5, pp. 787-796, 1996.

### Examples

```# a 2-dimensional example
x<-rbind(matrix(rnorm(100,sd=0.3),ncol=2),
matrix(rnorm(100,mean=1,sd=0.3),ncol=2))
cl<-cmeans(x,2,20,verbose=TRUE,method="cmeans",m=2)
print(cl)

# a 3-dimensional example
x<-rbind(matrix(rnorm(150,sd=0.3),ncol=3),
matrix(rnorm(150,mean=1,sd=0.3),ncol=3),
matrix(rnorm(150,mean=2,sd=0.3),ncol=3))
cl<-cmeans(x,6,20,verbose=TRUE,method="cmeans")
print(cl)

# assign classes to some new data
y<-rbind(matrix(rnorm(33,sd=0.3),ncol=3),
matrix(rnorm(33,mean=1,sd=0.3),ncol=3),
matrix(rnorm(3,mean=2,sd=0.3),ncol=3))
#         ycl<-predict(cl, y, type="both")
```

[Package e1071 version 1.5-2 Index]