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

