K-modes clustering for categorical data.
Calls klaR::kmodes() from package klaR.
All feature values are treated as categories.
Numeric features are accepted, but klaR::kmodes() warns when they contain more than 30 distinct values.
The modes parameter is set to 2 by default since klaR::kmodes() does not have a default value for the number of
clusters.
Since klaR::kmodes() does not provide a predict method, new observations are assigned to their closest learned
mode.
Prediction always uses unweighted simple matching distance, including for models trained with weighted = TRUE.
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”
Feature Types: “logical”, “integer”, “numeric”, “factor”, “ordered”
Required Packages: mlr3, mlr3cluster, klaR
Parameters
| Id | Type | Default | Levels | Range |
| modes | untyped | - | - | |
| iter.max | integer | 10 | \([1, \infty)\) | |
| weighted | logical | FALSE | TRUE, FALSE | - |
| fast | logical | TRUE | TRUE, FALSE | - |
| ties | character | first | first, last, random | - |
References
Huang, Zhexue (1997). “A Fast Clustering Algorithm to Cluster Very Large Categorical Data Sets in Data Mining.” In Data Mining: Techniques and Applications, 21–34.
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.fanny,
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 -> LearnerClustKModes
Examples
# Define the learner
learner = lrn("clust.kmodes", modes = 2L)
# Define a categorical task
data = data.frame(
color = factor(c("red", "red", "blue", "blue")),
shape = factor(c("round", "round", "square", "square"))
)
task = as_task_clust(data)
# Train and predict
learner$train(task)
prediction = learner$predict(task)