https://github.com/cran/pracma
Tip revision: 708a2ad382a163d1eef5af0665e3ae2aad200ced authored by HwB on 21 March 2013, 00:00:00 UTC
version 1.4.5
version 1.4.5
Tip revision: 708a2ad
kmeanspp.R
##
## k m e a n s p p . R K-means++ Clustering
##
kmeanspp <- function(X, k) {
stopifnot(is.numeric(X), is.numeric(k))
if (is.vector(X)) X <- as.matrix(X)
n <- nrow(X); m <- ncol(X)
if (floor(k) != ceiling(k) || k < 1 || k > nrow(X))
stop("Argument 'k' must be a natural number between 1 and nrow(X)")
C <- numeric(k)
C[1] <- sample(1:n, 1)
for (i in 2:k) {
dm <- distmat(X, X[C, ])
pr <- apply(dm, 1, min); pr[C] <- 0
C[i] <- sample(1:n, 1, prob = pr)
}
kmeans(X, X[C, ])
}