Fuzzy Analysis (FANNY) clustering.
Calls cluster::fanny() from package cluster.
The k parameter is set to 2 by default since cluster::fanny() doesn't have a default value for the number of
clusters. The predict method copies cluster assignments and memberships generated for train data. The predict does
not work for new data.
Initial parameter values
keep.diss:Actual default:
n < 100, wherenis the number of observations.Adjusted default:
FALSE.Reason for change: Avoid storing the dissimilarity matrix in the model to save memory.
keep.data:Actual default:
TRUE.Adjusted default:
FALSE.Reason for change: Avoid storing the training data in the model to save memory.
Dictionary
This mlr3::Learner can be instantiated via the dictionary mlr3::mlr_learners or with the associated sugar function mlr3::lrn():
Meta Information
Task type: “clust”
Predict Types: “partition”, “prob”
Feature Types: “logical”, “integer”, “numeric”
Required Packages: mlr3, mlr3cluster, cluster
Parameters
| Id | Type | Default | Levels | Range |
| k | integer | - | \([1, \infty)\) | |
| memb.exp | numeric | 2 | \([1, \infty)\) | |
| metric | character | euclidean | euclidean, manhattan, SqEuclidean | - |
| stand | logical | FALSE | TRUE, FALSE | - |
| iniMem.p | untyped | NULL | - | |
| keep.diss | logical | - | TRUE, FALSE | - |
| keep.data | logical | TRUE | TRUE, FALSE | - |
| maxit | integer | 500 | \([0, \infty)\) | |
| tol | numeric | 1e-15 | \([0, \infty)\) | |
| trace.lev | integer | 0 | \([0, \infty)\) |
References
Kaufman, Leonard, Rousseeuw, J P (2009). Finding groups in data: an introduction to cluster analysis. John Wiley & Sons.
See also
Chapter in the mlr3book: https://mlr3book.mlr-org.com/chapters/chapter2/data_and_basic_modeling.html#sec-learners
Package mlr3extralearners for more learners.
as.data.table(mlr_learners)for a table of available Learners in the running session (depending on the loaded packages).mlr3pipelines to combine learners with pre- and postprocessing steps.
Package mlr3viz for some generic visualizations.
Extension packages for additional task types:
mlr3proba for probabilistic supervised regression and survival analysis.
mlr3cluster for unsupervised clustering.
mlr3tuning for tuning of hyperparameters, mlr3tuningspaces for established default tuning spaces.
Other Learner:
mlr_learners_clust.MBatchKMeans,
mlr_learners_clust.SimpleKMeans,
mlr_learners_clust.agnes,
mlr_learners_clust.ap,
mlr_learners_clust.bico,
mlr_learners_clust.birch,
mlr_learners_clust.clara,
mlr_learners_clust.cmeans,
mlr_learners_clust.cobweb,
mlr_learners_clust.dbscan,
mlr_learners_clust.dbscan_fpc,
mlr_learners_clust.diana,
mlr_learners_clust.em,
mlr_learners_clust.featureless,
mlr_learners_clust.ff,
mlr_learners_clust.flexmix,
mlr_learners_clust.genie,
mlr_learners_clust.hclust,
mlr_learners_clust.hdbscan,
mlr_learners_clust.kcca,
mlr_learners_clust.kkmeans,
mlr_learners_clust.kmeans,
mlr_learners_clust.kproto,
mlr_learners_clust.mclust,
mlr_learners_clust.meanshift,
mlr_learners_clust.movMF,
mlr_learners_clust.optics,
mlr_learners_clust.pam,
mlr_learners_clust.protoclust,
mlr_learners_clust.skmeans,
mlr_learners_clust.som,
mlr_learners_clust.specc,
mlr_learners_clust.stdbscan,
mlr_learners_clust.tclust,
mlr_learners_clust.xmeans
Super classes
mlr3::Learner -> LearnerClust -> LearnerClustFanny
Examples
# Define the Learner and set parameter values
learner = lrn("clust.fanny")
print(learner)
#>
#> ── <LearnerClustFanny> (clust.fanny): Fuzzy Analysis ───────────────────────────
#> • Model: -
#> • Parameters: k=2, keep.diss=FALSE, keep.data=FALSE
#> • Packages: mlr3, mlr3cluster, and cluster
#> • Predict Types: [partition] and prob
#> • Feature Types: logical, integer, and numeric
#> • Encapsulation: none (fallback: -)
#> • Properties: complete, fuzzy, and partitional
#> • Other settings: use_weights = 'error', predict_raw = 'FALSE'
# Define a Task
task = tsk("usarrests")
# Train the learner on the task
learner$train(task)
# Print the model
print(learner$model)
#> Fuzzy Clustering object of class 'fanny' :
#> m.ship.expon. 2
#> objective 1022.444
#> tolerance 1e-15
#> iterations 14
#> converged 1
#> maxit 500
#> n 50
#> Membership coefficients (in %, rounded):
#> [,1] [,2]
#> [1,] 86 14
#> [2,] 86 14
#> [3,] 85 15
#> [4,] 59 41
#> [5,] 86 14
#> [6,] 70 30
#> [7,] 11 89
#> [8,] 87 13
#> [9,] 77 23
#> [10,] 75 25
#> [11,] 21 79
#> [12,] 12 88
#> [13,] 89 11
#> [14,] 9 91
#> [15,] 16 84
#> [16,] 10 90
#> [17,] 10 90
#> [18,] 90 10
#> [19,] 12 88
#> [20,] 84 16
#> [21,] 29 71
#> [22,] 91 9
#> [23,] 13 87
#> [24,] 86 14
#> [25,] 51 49
#> [26,] 10 90
#> [27,] 9 91
#> [28,] 88 12
#> [29,] 16 84
#> [30,] 37 63
#> [31,] 88 12
#> [32,] 89 11
#> [33,] 76 24
#> [34,] 20 80
#> [35,] 13 87
#> [36,] 28 72
#> [37,] 35 65
#> [38,] 9 91
#> [39,] 47 53
#> [40,] 86 14
#> [41,] 12 88
#> [42,] 59 41
#> [43,] 68 32
#> [44,] 14 86
#> [45,] 21 79
#> [46,] 32 68
#> [47,] 25 75
#> [48,] 14 86
#> [49,] 17 83
#> [50,] 36 64
#> Fuzzyness coefficients:
#> dunn_coeff normalized
#> 0.7078300 0.4156599
#> Closest hard clustering:
#> [1] 1 1 1 1 1 1 2 1 1 1 2 2 1 2 2 2 2 1 2 1 2 1 2 1 1 2 2 1 2 2 1 1 1 2 2 2 2 2
#> [39] 2 1 2 1 1 2 2 2 2 2 2 2
#>
#> Available components:
#> [1] "membership" "coeff" "memb.exp" "clustering" "k.crisp"
#> [6] "objective" "convergence" "diss" "call" "silinfo"
# Make predictions for the task
prediction = learner$predict(task)
#> Warning:
#> ✖ Learner 'clust.fanny' doesn't predict on new data and predictions may not
#> make sense on new data.
#> → Class: Mlr3WarningInput
# Score the predictions
prediction$score(task = task)
#> clust.dunn
#> 0.1220028