1 | silhouetteMLB(data, fac, method = "cosine", plot = TRUE)
|
data |
|
fac |
|
method |
|
plot |
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 | ##---- Should be DIRECTLY executable !! ----
##-- ==> Define data, use random,
##-- or do help(data=index) for the standard data sets.
## The function is currently defined as
function (data, fac, method = "cosine", plot = TRUE)
{
if (nrow(data) != length(fac))
stop("Bad input!")
dist.matrix <- as.matrix(proxy::dist(x = data, method = method))
sil.check <- cluster::silhouette(x = as.numeric(as.factor(fac)),
dist = dist.matrix)
if (plot == TRUE) {
tmp <- lapply(unique(sil.check[, 1]), (function(clid) {
part.out <- sil.check[sil.check[, 1] == clid, ]
part.out[order(part.out[, 3], decreasing = TRUE),
]
}))
tmp <- do.call(rbind, tmp)
xrange <- c(min(tmp[, 3]), max(tmp[, 3]))
xrange[1] <- ifelse(xrange[1] > 0, 0, (-1.15) * abs(xrange[1]))
xrange[2] <- 1.15
graphics::barplot(tmp[nrow(tmp):1, 3], col = as.factor(tmp[nrow(tmp):1,
1]), xlim = xrange, horiz = TRUE, xlab = "Silhouette Value",
ylab = "", main = "Silhouette Plot", border = as.factor(tmp[nrow(tmp):1,
1]))
graphics::abline(v = 0)
graphics::title(ylab = "Iter. Results (by Group)", line = 1,
cex.lab = 1, font = 2)
}
return(as.vector(sil.check[, 3]))
}
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.