K-Sets Algorithm
1 2 3 4 5 6 7 8 9 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | ## generate three-cluster data with univariate Gaussians
mylist = list()
for (i in 1:10){
mylist[[i]] = wrapgauss1d(mean=-2-runif(1), sd=runif(1))
}
for (i in 11:20){
mylist[[i]] = wrapgauss1d(mean=0, sd=runif(1))
}
for (i in 21:30){
mylist[[i]] = wrapgauss1d(mean=2+runif(1), sd=runif(1))
}
## apply clustering with different k values
cl2 <- gauss.ksets(mylist, k=2)$cluster
cl3 <- gauss.ksets(mylist, k=3)$cluster
cl4 <- gauss.ksets(mylist, k=4)$cluster
## compute 2-dimensional embedding for visualization
mds2d <- gauss.mds(mylist, ndim=2)$embed
mdsx <- as.vector(mds2d[,1])
mdsy <- as.vector(mds2d[,2])
## visualize
opar = par(mfrow=c(1,3), pty="s")
plot(mdsx, mdsy, pch=19, col=cl2, main="k=2 means")
plot(mdsx, mdsy, pch=19, col=cl3, main="k=3 means")
plot(mdsx, mdsy, pch=19, col=cl4, main="k=4 means")
par(opar)
## Not run:
## see the effect of different initialization
c3random = gauss.ksets(mylist, k=3, init.type="random")$cluster
c3kpp = gauss.ksets(mylist, k=3, init.type="kmeans++")$cluster
c3medoids = gauss.ksets(mylist, k=3, init.type="kmedoids")$cluster
## visualize
opar = par(mfrow=c(1,3), pty="s")
plot(mdsx, mdsy, pch=19, col=c3random, main="init: random")
plot(mdsx, mdsy, pch=19, col=c3kpp, main="init: k-means++")
plot(mdsx, mdsy, pch=19, col=c3medoids, main="init: k-medoids")
par(opar)
## End(Not run)
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.