cmeans                 package:e1071                 R Documentation

_F_u_z_z_y _C-_M_e_a_n_s _C_l_u_s_t_e_r_i_n_g

_D_e_s_c_r_i_p_t_i_o_n:

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

_U_s_a_g_e:

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

_A_r_g_u_m_e_n_t_s:

       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

_D_e_t_a_i_l_s:

     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).

_V_a_l_u_e:

     `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.

_A_u_t_h_o_r(_s):

     Evgenia Dimitriadou

_R_e_f_e_r_e_n_c_e_s:

     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.

_E_x_a_m_p_l_e_s:

     # 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")


