G-means clustering.
Calls gmeans::gmeans() from package gmeans.
G-means extends k-means by automatically determining the number of clusters: starting from k_init centers, each
cluster is repeatedly split in two unless an Anderson-Darling test suggests its points already follow a Gaussian
distribution, until no more centers are added or k_max is reached. The predict method assigns new observations to
the nearest cluster center.
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”
Required Packages: mlr3, mlr3cluster, gmeans
Parameters
| Id | Type | Default | Levels | Range |
| k_init | integer | 2 | \([1, \infty)\) | |
| k_max | integer | 10 | \([1, \infty)\) | |
| level | numeric | 0.05 | \([0, 1]\) | |
| iter.max | integer | 10 | \([1, \infty)\) | |
| algorithm | character | Hartigan-Wong | Hartigan-Wong, Lloyd, Forgy, MacQueen | - |
| trace | logical | FALSE | TRUE, FALSE | - |
| method | character | euclidean | euclidean, manhattan, minkowski | - |
| p | numeric | 2 | \([0, \infty)\) |
References
Hamerly, Greg, Elkan, Charles (2003). “Learning the k in k-means.” In Advances in Neural Information Processing Systems, volume 16.
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.kmeans_rcpp,
mlr_learners_clust.kmodes,
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 -> LearnerClustGMeans
Examples
# Define the Learner and set parameter values
learner = lrn("clust.gmeans")
print(learner)
#>
#> ── <LearnerClustGMeans> (clust.gmeans): G-Means ────────────────────────────────
#> • Model: -
#> • Parameters: list()
#> • Packages: mlr3, mlr3cluster, and gmeans
#> • Predict Types: [partition]
#> • Feature Types: logical, integer, and numeric
#> • Encapsulation: none (fallback: -)
#> • Properties: complete, exclusive, 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)
#> K-means clustering with 2 clusters of sizes 29, 21
#>
#> Cluster means:
#> Assault Murder Rape UrbanPop
#> 1 109.7586 4.841379 16.24828 64.03448
#> 2 255.0000 11.857143 28.11429 67.61905
#>
#> Clustering vector:
#> [1] 2 2 2 2 2 2 1 2 2 2 1 1 2 1 1 1 1 2 1 2 1 2 1 2 1 1 1 2 1 1 2 2 2 1 1 1 1 1
#> [39] 1 2 1 2 2 1 1 1 1 1 1 1
#>
#> Within cluster sum of squares by cluster:
#> [1] 54762.30 41636.73
#> (between_SS / total_SS = 72.9 %)
#>
#> Available components:
#>
#> [1] "cluster" "centers" "totss" "withinss" "tot.withinss"
#> [6] "betweenss" "size" "iter" "ifault"
# Make predictions for the task
prediction = learner$predict(task)
# Score the predictions
prediction$score(task = task)
#> clust.dunn
#> 0.1033191
