Skip to contents

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():

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

Meta Information

  • Task type: “clust”

  • Predict Types: “partition”

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

  • Required Packages: mlr3, mlr3cluster, gmeans

Parameters

IdTypeDefaultLevelsRange
k_initinteger2\([1, \infty)\)
k_maxinteger10\([1, \infty)\)
levelnumeric0.05\([0, 1]\)
iter.maxinteger10\([1, \infty)\)
algorithmcharacterHartigan-WongHartigan-Wong, Lloyd, Forgy, MacQueen-
tracelogicalFALSETRUE, FALSE-
methodcharactereuclideaneuclidean, manhattan, minkowski-
pnumeric2\([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

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

Methods

Inherited methods


LearnerClustGMeans$new()

Creates a new instance of this R6 class.

Usage


LearnerClustGMeans$clone()

The objects of this class are cloneable with this method.

Usage

LearnerClustGMeans$clone(deep = FALSE)

Arguments

deep

Whether to make a deep clone.

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