fclust: An R Package for Fuzzy Clustering

Fuzzy clustering methods discover fuzzy partitions where observations can be softly assigned to more than one cluster. The package fclust is a toolbox for fuzzy clustering in the R programming language. It not only implements the widely used fuzzy k-means (FkM) algorithm, but also many FkM variants. Fuzzy cluster similarity measures, cluster validity indices and cluster visualization tools are also offered. In the current version, all the functions are rewritten in the C++ language allowing their application in large-size problems. Moreover, new fuzzy relational clustering algorithms for partitioning qualitative/mixed data are provided together with an improved version of the so-called Gustafson-Kessel algorithm to avoid singularity in the cluster covariance matrices. Finally, it is now possible to automatically select the number of clusters by means of the available fuzzy cluster validity indices.

Maria Brigida Ferraro , Paolo Giordani , Alessio Serafini

Supplementary materials

Supplementary materials are available in addition to this article. It can be downloaded at RJ-2019-017.zip

CRAN packages used

fclust, cluster, clue, e1071, skmeans, vegclust, ppclust, Rcpp, RcppArmadillo, smacof, MASS

CRAN Task Views implied by cited packages

Cluster, Multivariate, Environmetrics, NumericalMathematics, Psychometrics, Distributions, Robust, Econometrics, HighPerformanceComputing, MachineLearning, NaturalLanguageProcessing, Optimization, SocialSciences, TeachingStatistics


Text and figures are licensed under Creative Commons Attribution CC BY 4.0. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: "Figure from ...".


For attribution, please cite this work as

Ferraro, et al., "fclust: An R Package for Fuzzy Clustering", The R Journal, 2019

BibTeX citation

  author = {Ferraro, Maria Brigida and Giordani, Paolo and Serafini, Alessio},
  title = {fclust: An R Package for Fuzzy Clustering},
  journal = {The R Journal},
  year = {2019},
  note = {https://doi.org/10.32614/RJ-2019-017},
  doi = {10.32614/RJ-2019-017},
  volume = {11},
  issue = {1},
  issn = {2073-4859},
  pages = {198-210}