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_initinteger1\([1, \infty)\)
k_maxintegerInf\([1, \infty)\)
levelnumeric1e-04\([0, 1]\)
iter.maxinteger100\([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$native_model)
#> K-means clustering with 1 clusters of sizes 50
#> 
#> Cluster means:
#>   Assault Murder   Rape UrbanPop
#> 1  170.76  7.788 21.232    65.54
#> 
#> Clustering vector:
#>  [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
#> [39] 1 1 1 1 1 1 1 1 1 1 1 1
#> 
#> Within cluster sum of squares by cluster:
#> [1] 355807.8
#>  (between_SS / total_SS =  -0.0 %)
#> 
#> Available components:
#> 
#>  [1] "cluster"      "centers"      "totss"        "withinss"     "tot.withinss"
#>  [6] "betweenss"    "size"         "iter"         "ifault"       "k_init"      
#> [11] "k_max"        "level"       

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

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