# \donttest{
data(iris)
# Crisp Silhouette with k-means
out <- kmeans(iris[, -5], 3)
if (requireNamespace("proxy", quietly = TRUE)) {
library(proxy)
dist <- dist(iris[, -5], out$centers)
plot(Silhouette(dist))
}
#' # Fuzzy Silhouette with ppclust::fcm
if (requireNamespace("ppclust", quietly = TRUE)) {
library(ppclust)
out_fuzzy <- Silhouette(
prox_matrix = "d",
proximity_type = "dissimilarity",
prob_matrix = "u",
clust_fun = ppclust::fcm,
x = iris[, 1:4],
centers = 3,
sort = TRUE
)
plot(out_fuzzy, summary.legend = FALSE, grayscale = TRUE)
} else {
message("Install 'ppclust': install.packages('ppclust')")
}
# Silhouette plot for pam clustering
if (requireNamespace("cluster", quietly = TRUE)) {
library(cluster)
pam_result <- pam(iris[, 1:4], k = 3)
plotSilhouette(pam_result)
}
# Silhouette plot for clara clustering
if (requireNamespace("cluster", quietly = TRUE)) {
clara_result <- clara(iris[, 1:4], k = 3)
plotSilhouette(clara_result)
}
# Silhouette plot for fanny clustering
if (requireNamespace("cluster", quietly = TRUE)) {
fanny_result <- fanny(iris[, 1:4], k = 3)
plotSilhouette(fanny_result)
}
# Example using base silhouette() object
if (requireNamespace("cluster", quietly = TRUE)) {
sil <- silhouette(pam_result)
plotSilhouette(sil)
}
# Silhouette plot for eclust clustering
if (requireNamespace("factoextra", quietly = TRUE)) {
library(factoextra)
eclust_result <- eclust(iris[, 1:4], "kmeans", k = 3, graph = FALSE)
plotSilhouette(eclust_result)
}
# Silhouette plot for hcut clustering
if (requireNamespace("factoextra", quietly = TRUE)) {
hcut_result <- hcut(iris[, 1:4], k = 3)
plotSilhouette(hcut_result)
}
# Silhouette plot for hcut clustering
if (requireNamespace("drclust", quietly = TRUE)) {
library(drclust)
iris_mat <- as.matrix(iris[,-5])
drclust_out <- dpcakm(iris_mat, 20, 3)
d <- silhouette(iris_mat, drclust_out)
plotSilhouette(d$cl.silhouette)
}
# }
Run the code above in your browser using DataLab