Performs clustering on interval data using the Neo-KM algorithm, which allows for overlapping and non-exhaustive cluster membership.

ineokm(
  x,
  centers,
  alpha = 0.3,
  beta = 0.05,
  nstart = 10,
  trace = FALSE,
  iter.max = 20
)

Arguments

x

A 3D interval array representing the data to be clustered.

centers

Either the number of clusters to create or a set of pre-initialized cluster centers. If a number is provided, it specifies how many clusters to create.

alpha

A numeric value that controls the degree of overlap between clusters (default is 0.3).

beta

A numeric value that controls the non-exhaustiveness of clusters (default is 0.05).

nstart

The number of times to run the Neo-KM algorithm with different starting values in order to find the best solution (default is 10).

trace

Logical value indicating whether to show the progress of the algorithm (default is `FALSE`).

iter.max

Maximum number of iterations allowed for the Neo-KM algorithm (default is 20).

Value

A list of clustering results, including: - `cluster`: A vector indicating the cluster assignment of each data point. - `centers`: The final cluster centers. - `totss`: Total sum of squares. - `withinss`: Within-cluster sum of squares by cluster. - `tot.withinss`: Total within-cluster sum of squares. - `betweenss`: Between-cluster sum of squares. - `size`: The number of points in each cluster. - `iter`: Number of iterations the algorithm executed.

Examples

ineokm(iaggregate(iris, col = 5), 3)
#> Ineokm clustering with 2 clusters of sizes: 5, 4 
#> 
#> Cluster centers:
#> , , Sepal.Length
#> 
#>   min  max
#> 1 4.3 5.80
#> 2 4.9 7.45
#> 3 4.9 7.00
#> 
#> , , Sepal.Width
#> 
#>   min max
#> 1 2.3 4.4
#> 2 2.1 3.6
#> 3 2.0 3.4
#> 
#> , , Petal.Length
#> 
#>    min max
#> 1 1.00 1.9
#> 2 3.75 6.0
#> 3 3.00 5.1
#> 
#> , , Petal.Width
#> 
#>   min  max
#> 1 0.1 0.60
#> 2 1.2 2.15
#> 3 1.0 1.80
#> 
#> Available components:
#> [1] "inter" "class"
#> 
#> Clustering vector:
#>       [,1]  [,2]  [,3]
#> [1,]  TRUE FALSE FALSE
#> [2,] FALSE  TRUE  TRUE
#> [3,] FALSE  TRUE FALSE
#> 
#> Within-cluster sum of squares by cluster:
#> [1] 0.000 3.575 0.000
#>  (Between_SS / Total_SS =  95.1%)
#> Available components:
#> [1] "cluster"      "centers"      "totss"        "withinss"     "tot.withinss"
#> [6] "betweenss"    "size"         "iter"        
ineokm(iaggregate(iris, col = 5), iaggregate(iris, col = 5), 1, 2)
#> Ineokm clustering with 2 clusters of sizes: 3, 6 
#> 
#> Cluster centers:
#> , , Sepal.Length
#> 
#>   min  max
#> 1 4.3 5.80
#> 2 4.7 6.90
#> 3 4.9 7.45
#> 
#> , , Sepal.Width
#> 
#>        min      max
#> 1 2.300000 4.400000
#> 2 2.166667 3.866667
#> 3 2.100000 3.600000
#> 
#> , , Petal.Length
#> 
#>        min      max
#> 1 1.000000 1.900000
#> 2 2.833333 4.633333
#> 3 3.750000 6.000000
#> 
#> , , Petal.Width
#> 
#>         min      max
#> 1 0.1000000 0.600000
#> 2 0.8333333 1.633333
#> 3 1.2000000 2.150000
#> 
#> Available components:
#> [1] "inter" "class"
#> 
#> Clustering vector:
#>       [,1] [,2]  [,3]
#> [1,]  TRUE TRUE FALSE
#> [2,] FALSE TRUE  TRUE
#> [3,] FALSE TRUE  TRUE
#> 
#> Within-cluster sum of squares by cluster:
#> [1]  0.000 24.740  3.575
#>  (Between_SS / Total_SS =  70.3%)
#> Available components:
#> [1] "cluster"      "centers"      "totss"        "withinss"     "tot.withinss"
#> [6] "betweenss"    "size"         "iter"