Skip to contents

Finite mixture model clustering via the EM algorithm. Calls flexmix::flexmix() from package flexmix.

The component model is selected through the model parameter, exposing the multivariate normal, univariate normal, multivariate binary, and multivariate Poisson drivers shipped with flexmix. The predict method calls flexmix::clusters() for cluster assignments and flexmix::posterior() for component probabilities on new data.

Note that EM can prune components whose prior falls below minprior during fitting, so the final number of components may be smaller than k.

Dictionary

This mlr3::Learner can be instantiated via the dictionary mlr3::mlr_learners or with the associated sugar function mlr3::lrn():

mlr_learners$get("clust.flexmix")
lrn("clust.flexmix")

Meta Information

  • Task type: “clust”

  • Predict Types: “partition”, “prob”

  • Feature Types: “logical”, “integer”, “numeric”

  • Required Packages: mlr3, mlr3cluster, flexmix

Parameters

IdTypeDefaultLevelsRange
kinteger-\([1, \infty)\)
modelcharacterFLXMCmvnormFLXMCmvnorm, FLXMCnorm1, FLXMCmvbinary, FLXMCmvpois-
diagonallogicalTRUETRUE, FALSE-
truncatedlogicalFALSETRUE, FALSE-
clusteruntyped--
iter.maxinteger200\([1, \infty)\)
minpriornumeric0.05\([0, 1]\)
tolerancenumeric1e-06\([0, \infty)\)
verboseinteger0\([0, \infty)\)
classifycharacterautoauto, weighted, CEM, SEM, hard, random-
nrepinteger1\([1, \infty)\)

References

Leisch, Friedrich (2004). “FlexMix: A General Framework for Finite Mixture Models and Latent Class Regression in R.” Journal of Statistical Software, 11(8), 1–18. doi:10.18637/jss.v011.i08 .

Grün, Bettina, Leisch, Friedrich (2008). “FlexMix Version 2: Finite Mixtures with Concomitant Variables and Varying and Constant Parameters.” Journal of Statistical Software, 28(4), 1–35. doi:10.18637/jss.v028.i04 .

See also

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.fanny, mlr_learners_clust.featureless, mlr_learners_clust.ff, 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 -> LearnerClustFlexmix

Methods

Inherited methods


LearnerClustFlexmix$new()

Creates a new instance of this R6 class.

Usage


LearnerClustFlexmix$clone()

The objects of this class are cloneable with this method.

Usage

LearnerClustFlexmix$clone(deep = FALSE)

Arguments

deep

Whether to make a deep clone.

Examples

# Define the Learner and set parameter values
learner = lrn("clust.flexmix")
print(learner)
#> 
#> ── <LearnerClustFlexmix> (clust.flexmix): Finite Mixture Model ─────────────────
#> • Model: -
#> • Parameters: k=2, model=FLXMCmvnorm
#> • Packages: mlr3, mlr3cluster, and flexmix
#> • Predict Types: [partition] and prob
#> • Feature Types: logical, integer, and numeric
#> • Encapsulation: none (fallback: -)
#> • Properties: complete, exclusive, 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)
#> 
#> Call:
#> flexmix::flexmix(formula = formula, data = data, k = 2L, model = driver, 
#>     control = control)
#> 
#> Cluster sizes:
#>  1  2 
#> 28 22 
#> 
#> convergence after 13 iterations

# Make predictions for the task
prediction = learner$predict(task)

# Score the predictions
prediction$score(task = task)
#> clust.dunn 
#>  0.1220028