kmeans.torus {ClusTorus} | R Documentation |
K-Means Clustering on Torus
Description
kmeans.torus
implements extrinsic k-means clustering
on toroidal space.
Usage
kmeans.torus(data, centers = 10, ...)
## S3 method for class 'kmeans.torus'
predict(object, newdata, ...)
Arguments
data |
n x d matrix of toroidal data on |
centers |
either the number of clusters or a set of initial cluster centers. If a number, a random set of row in x is chosen as the initial centers. |
... |
additional parameter |
object |
|
newdata |
n x d matrix of toroidal data on |
Details
In Euclidean space, we know that the total sum of squares is equal to the summation of the within cluster sum of squares and the between cluster centers sum of squares. However, toroidal space does not satisfy the property; the equality does not hold. Thus, you need to be careful to use the sum of squares.
Extrinsic k-means algorithm uses the ambient space for [0, 2\pi)^d
.
Each datum is transformed to a vector in 2d-dimensional
Euclidean space, whose elements are sine and cosine values of the datum,
then a usual k-means algorithm is applied to transformed data.
Value
returns a kmeans
object, which contains
extrinsic.results
extrinsic k-means clustering results using ordinary kmeans algorithm.
centers
A matrix of cluster centers.
membership
A vector of integers indicating the cluster to which each point is allocated.
size
The number of points in each cluster.
withinss
Vector of within-cluster sum of squares, one component per cluster.
totss
The total sum of squares, based on angular distance.
betweenss
The between-cluster sum of squares.
References
Jung, S., Park, K., & Kim, B. (2021). Clustering on the torus by conformal prediction. The Annals of Applied Statistics, 15(4), 1583-1603.
Gao, Y., Wang, S., Deng, M., & Xu, J. (2018). RaptorX-Angle: real-value prediction of protein backbone dihedral angles through a hybrid method of clustering and deep learning. BMC bioinformatics, 19(4), 73-84.
See Also
Examples
data <- ILE[1:200, 1:2]
kmeans.torus(data, centers = 2,
iter.max = 100, nstart = 1)