A LearnerClust for fuzzy clustering implemented in cluster::fanny().
cluster::fanny() doesn't have a default value for the number of clusters.
Therefore, the k parameter which corresponds to the number
of clusters here is set to 2 by default.
The predict method copies cluster assignments and memberships
generated for train data. The predict does not work for
new data.
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 | - |
| 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.
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.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.hclust,
mlr_learners_clust.hdbscan,
mlr_learners_clust.kkmeans,
mlr_learners_clust.kmeans,
mlr_learners_clust.mclust,
mlr_learners_clust.meanshift,
mlr_learners_clust.optics,
mlr_learners_clust.pam,
mlr_learners_clust.xmeans
Super classes
mlr3::Learner -> mlr3cluster::LearnerClust -> LearnerClustFanny
Examples
# Define the Learner and set parameter values
learner = lrn("clust.fanny")
print(learner)
#>
#> ── <LearnerClustFanny> (clust.fanny): Fuzzy Analysis Clustering ────────────────
#> • Model: -
#> • Parameters: k=2
#> • 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'
# 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"
#> [11] "data"
# 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.
# Score the predictions
prediction$score(task = task)
#> clust.dunn
#> 0.1220028