# install.packages("MeanShift")   # bila gagal: remotes::install_github("mattiaciollaro/MeanShift")
# install.packages("gifski")      # untuk membuat GIF
library(MeanShift)
## Loading required package: parallel
## Loading required package: wavethresh
## Warning: package 'wavethresh' was built under R version 4.4.3
## Loading required package: MASS
## Warning: package 'MASS' was built under R version 4.4.3
## WaveThresh: R wavelet software, release 4.7.2, installed
## Copyright Guy Nason and others 1993-2022
## Note: nlevels has been renamed to nlevelsWT
library(gifski)
## Warning: package 'gifski' was built under R version 4.4.3
OUT_DIR <- "hasil_gif"
dir.create(OUT_DIR, showWarnings = FALSE)
cat("GIF disimpan di:", normalizePath(OUT_DIR), "\n")
## GIF disimpan di: C:\Users\hp\Downloads\hasil_gif
# 1. Data dan preprocessing
# Data Gaussian Blobs
set.seed(42)

n_per_kelompok <- c(334, 333, 333)
pusat_asli <- rbind(c( 4.7,  2.0),
                    c(-2.6,  8.9),
                    c(-6.8, -6.8))

X <- do.call(rbind, lapply(1:3, function(k) {
  cbind(rnorm(n_per_kelompok[k], mean = pusat_asli[k, 1], sd = 1),
        rnorm(n_per_kelompok[k], mean = pusat_asli[k, 2], sd = 1))
}))
colnames(X) <- c("Fitur1", "Fitur2")
y_asli <- rep(1:3, times = n_per_kelompok)
# Palet pastel berwarna (k warna untuk k cluster) dan versi gelapnya untuk pusat cluster
palet_pastel <- function(k) {
  dasar <- c("#FFADAD", "#A0C4FF", "#CAFFBF", "#FFD6A5",
             "#BDB2FF", "#9BF6FF", "#FDFFB6", "#FFC6FF")
  if (k <= length(dasar)) return(dasar[1:k])
  c(dasar, hsv(h = seq(0, 1, length.out = k - length(dasar) + 1)[-1], s = 0.4, v = 1))
}
gelapkan <- function(warna, faktor = 0.55) {
  m <- col2rgb(warna) / 255 * faktor
  rgb(m[1, ], m[2, ], m[3, ])
}
warna_kelompok <- palet_pastel(3)

# 1.1 Ukuran dan struktur dataset
cat("\n=== 1.1 Ukuran dan struktur ===\n")
## 
## === 1.1 Ukuran dan struktur ===
cat("Dimensi (baris x kolom):", dim(X), "\n")
## Dimensi (baris x kolom): 1000 2
cat("Kelas objek:", class(X), "| tipe data:", typeof(X), "\n")
## Kelas objek: matrix array | tipe data: double
str(X)
##  num [1:1000, 1:2] 6.07 4.14 5.06 5.33 5.1 ...
##  - attr(*, "dimnames")=List of 2
##   ..$ : NULL
##   ..$ : chr [1:2] "Fitur1" "Fitur2"
print(head(X))
##        Fitur1    Fitur2
## [1,] 6.070958 2.9885968
## [2,] 4.135302 1.9265417
## [3,] 5.063128 0.6129734
## [4,] 5.332863 0.6933241
## [5,] 5.104268 1.2316047
## [6,] 4.593875 1.4728919
print(table(Kelompok_Asli = y_asli))
## Kelompok_Asli
##   1   2   3 
## 334 333 333
# 1.2 Eksplorasi sederhana (EDA)
cat("\n=== 1.2 EDA ===\n")
## 
## === 1.2 EDA ===
print(summary(X))
##      Fitur1           Fitur2      
##  Min.   :-9.414   Min.   :-9.150  
##  1st Qu.:-6.137   1st Qu.:-6.087  
##  Median :-2.608   Median : 1.983  
##  Mean   :-1.581   Mean   : 1.357  
##  3rd Qu.: 4.045   3rd Qu.: 8.255  
##  Max.   : 7.402   Max.   :11.534
cat("\nSimpangan baku:\n"); print(round(apply(X, 2, sd), 3))
## 
## Simpangan baku:
## Fitur1 Fitur2 
##  4.851  6.501
cat("\nRentang (maks - min):\n"); print(round(apply(X, 2, function(v) diff(range(v))), 3))
## 
## Rentang (maks - min):
## Fitur1 Fitur2 
## 16.816 20.684
cat("\nKorelasi antarfitur:\n"); print(round(cor(X), 3))
## 
## Korelasi antarfitur:
##        Fitur1 Fitur2
## Fitur1  1.000  0.409
## Fitur2  0.409  1.000
ringkas_kelompok <- aggregate(as.data.frame(X), by = list(Kelompok = y_asli),
                              FUN = function(v) c(mean = mean(v), sd = sd(v)))
cat("\nRata-rata dan sd per kelompok asli:\n"); print(ringkas_kelompok)
## 
## Rata-rata dan sd per kelompok asli:
##   Kelompok Fitur1.mean  Fitur1.sd Fitur2.mean  Fitur2.sd
## 1        1   4.6777384  0.9629144   1.9885700  1.0163206
## 2        2  -2.6367759  1.0365894   8.8876647  0.9848974
## 3        3  -6.8022651  0.9626058  -6.8083516  1.0063183
par(mfrow = c(1, 3), mar = c(4, 4, 3, 1))
hist(X[, 1], breaks = 30, col = "lightblue", border = "white",
     main = "Histogram Fitur 1", xlab = "Fitur 1")
hist(X[, 2], breaks = 30, col = "lightblue", border = "white",
     main = "Histogram Fitur 2", xlab = "Fitur 2")
boxplot(X, col = "lightblue", main = "Boxplot kedua fitur")

par(mfrow = c(1, 1), mar = c(5, 4, 4, 2) + 0.1)

plot(X[, 1], X[, 2], pch = 21, bg = warna_kelompok[y_asli], col = "gray40", cex = 1.1,
     xlab = "Fitur 1", ylab = "Fitur 2", main = "Scatter plot Gaussian Blobs")
grid(col = "gray90")
legend("topright", legend = paste("Kelompok", 1:3), pch = 21, pt.bg = warna_kelompok,
       col = "gray40", bty = "n")

# 1.3 Missing values, duplikat, dan nilai tak hingga
cat("\n=== 1.3 Pemeriksaan data ===\n")
## 
## === 1.3 Pemeriksaan data ===
cat("Missing value per kolom:\n"); print(colSums(is.na(X)))
## Missing value per kolom:
## Fitur1 Fitur2 
##      0      0
cat("Total missing value :", sum(is.na(X)), "\n")
## Total missing value : 0
cat("Nilai tak hingga    :", sum(!is.finite(X[!is.na(X)])), "\n")
## Nilai tak hingga    : 0
cat("Baris duplikat      :", sum(duplicated(X)), "\n")
## Baris duplikat      : 0
# 1.4 Distribusi: kemencengan, normalitas, pencilan
cat("\n=== 1.4 Distribusi ===\n")
## 
## === 1.4 Distribusi ===
kemencengan <- function(v) mean((v - mean(v))^3) / mean((v - mean(v))^2)^1.5
cat("Kemencengan (skewness):", round(apply(X, 2, kemencengan), 3), "\n")
## Kemencengan (skewness): 0.298 -0.143
cat("Shapiro-Wilk data gabungan, p-value:",
    signif(apply(X, 2, function(v) shapiro.test(v)$p.value), 3), "\n")
## Shapiro-Wilk data gabungan, p-value: 7.8e-26 1.8e-26
p_kelompok <- sapply(1:3, function(k) apply(X[y_asli == k, ], 2,
                                            function(v) shapiro.test(v)$p.value))
colnames(p_kelompok) <- paste("Kelompok", 1:3)
cat("Shapiro-Wilk per kelompok, p-value:\n"); print(round(p_kelompok, 3))
## Shapiro-Wilk per kelompok, p-value:
##        Kelompok 1 Kelompok 2 Kelompok 3
## Fitur1      0.921      0.533      0.612
## Fitur2      0.732      0.913      0.412
jumlah_pencilan <- apply(X, 2, function(v) {
  q <- quantile(v, c(0.25, 0.75)); iqr <- q[2] - q[1]
  sum(v < q[1] - 1.5 * iqr | v > q[2] + 1.5 * iqr)
})
cat("Pencilan (aturan 1,5 x IQR):", jumlah_pencilan, "\n")
## Pencilan (aturan 1,5 x IQR): 0 0
# 1.5 Skala fitur
cat("\n=== 1.5 Skala fitur ===\n")
## 
## === 1.5 Skala fitur ===
rasio_sd <- sd(X[, 1]) / sd(X[, 2])
cat("Rasio sd Fitur1 / Fitur2:", round(rasio_sd, 3), "\n")
## Rasio sd Fitur1 / Fitur2: 0.746
# 1.6 Preprocessing
cat("\n=== 1.6 Preprocessing ===\n")
## 
## === 1.6 Preprocessing ===
# (a) Pembersihan: buang baris tidak lengkap
lengkap <- complete.cases(X)
X       <- X[lengkap, , drop = FALSE]
y_asli  <- y_asli[lengkap]
cat("Baris dibuang karena missing value:", sum(!lengkap), "\n")
## Baris dibuang karena missing value: 0
# (b) Skala: Mean Shift memakai satu bandwidth h untuk semua dimensi (jarak Euclid)
if (rasio_sd > 0.5 && rasio_sd < 2) {
  cat("Skala sebanding -> standarisasi tidak diperlukan, data dipakai apa adanya\n")
} else {
  cat("Skala berbeda mencolok -> pertimbangkan X <- scale(X) (h ikut disesuaikan)\n")
}
## Skala sebanding -> standarisasi tidak diperlukan, data dipakai apa adanya
# (c) Format: matriks numerik, baris = titik, kolom = fitur
stopifnot(is.matrix(X), is.numeric(X))
n <- nrow(X)
d <- ncol(X)
cat("Data siap dipakai: n =", n, "| d =", d, "\n")
## Data siap dipakai: n = 1000 | d = 2
# 1.7 Rumus dan syarat kernel (Rumus 7.1 sampai 7.5)
cat("\n=== 1.7 Rumus dan syarat kernel ===\n")
## 
## === 1.7 Rumus dan syarat kernel ===
# Rumus 7.1: estimasi kepadatan kernel
#     f_K(x) = 1/(n h^d) * sum K((x - x_i)/h)
K_gauss <- function(U) {
  # Kernel Gaussian ternormalisasi: (2*pi)^(-d/2) * exp(-|u|^2 / 2)
  if (is.null(dim(U))) U <- matrix(U, nrow = 1)
  dim_u <- ncol(U)
  (2 * pi)^(-dim_u / 2) * exp(-0.5 * rowSums(U^2))
}

f_K <- function(x, data, h) {
  U <- sweep(data, 2, x) / h
  sum(K_gauss(U)) / (nrow(data) * h^ncol(data))
}

h0 <- 1.9
x0 <- colMeans(X)
rumus_71   <- f_K(x0, X, h0)
pembanding <- mean(dnorm(x0[1], X[, 1], h0) * dnorm(x0[2], X[, 2], h0))
cat("x0 =", round(x0, 4), "\n")
## x0 = -1.5808 1.3566
cat(sprintf("f_K(x0) rumus 7.1 = %.8f\n", rumus_71))
## f_K(x0) rumus 7.1 = 0.00017042
cat(sprintf("f(x0) pembanding  = %.8f\n", pembanding))
## f(x0) pembanding  = 0.00017042
cat("sama:", isTRUE(all.equal(rumus_71, pembanding)), "\n")
## sama: TRUE
# Syarat kernel: (1) integral K = 1, (2) K(x) = K(|x|) (radial)
# Bentuk kernel Gaussian di buku: 1/(2*pi^(d/2)) * exp(-|x|^2/2)
# Bentuk ternormalisasi untuk semua dimensi: 1/(2*pi)^(d/2) * exp(-|x|^2/2)
K_buku <- function(U) {
  if (is.null(dim(U))) U <- matrix(U, nrow = 1)
  dim_u <- ncol(U)
  1 / (2 * pi^(dim_u / 2)) * exp(-0.5 * rowSums(U^2))
}

# Syarat integral K = 1 (jumlah Riemann pada grid)
g1 <- matrix(seq(-10, 10, length.out = 4001), ncol = 1)
a  <- seq(-8, 8, length.out = 801)
g2 <- as.matrix(expand.grid(a, a))
dx <- g1[2, 1] - g1[1, 1]
da <- a[2] - a[1]

hasil72 <- data.frame(
  dimensi = c("d = 1", "d = 2", "d = 3 (analitik)"),
  integral_K_gauss = c(sum(K_gauss(g1)) * dx,
                       sum(K_gauss(g2)) * da^2,
                       1),
  integral_K_buku  = c(sum(K_buku(g1)) * dx,
                       sum(K_buku(g2)) * da^2,
                       2^(3 / 2 - 1))
)
cat("\nSyarat 7.2 (integral kernel):\n")
## 
## Syarat 7.2 (integral kernel):
print(format(hasil72, digits = 4), row.names = FALSE)
##           dimensi integral_K_gauss integral_K_buku
##             d = 1                1          0.7071
##             d = 2                1          1.0000
##  d = 3 (analitik)                1          1.4142
# Syarat K(x) = K(|x|): nilai kernel hanya bergantung pada jarak dari pusat
x <- c(1.3, -0.7)
t_putar <- 40 * pi / 180
R_putar <- matrix(c(cos(t_putar),  sin(t_putar),
                    -sin(t_putar), cos(t_putar)), nrow = 2)
cat("\nK(x)               =", K_gauss(x), "\n")
## 
## K(x)               = 0.05351052
cat("K(-x)              =", K_gauss(-x), "\n")
## K(-x)              = 0.05351052
cat("K(Rx) dgn |Rx|=|x| =", K_gauss(as.numeric(R_putar %*% x)), "\n")
## K(Rx) dgn |Rx|=|x| = 0.05351052
cat("radial:", isTRUE(all.equal(c(K_gauss(-x), K_gauss(as.numeric(R_putar %*% x))),
                                rep(K_gauss(x), 2))), "\n")
## radial: TRUE
# Gradien dan vektor pergeseran, kernel Gaussian K(x) = k(|x|^2)
c_k <- (2 * pi)^(-d / 2)
x0  <- c(1, 1)
h0  <- 1.9

s <- rowSums((sweep(X, 2, x0) / h0)^2)
g <- 0.5 * c_k * exp(-s / 2)

# Vektor pergeseran m(x)
m <- colSums(g * X) / sum(g) - x0
# Gradien dari rumus
grad_rumus <- 2 / (n * h0^(d + 2)) * sum(g) * m
# Gradien numerik dari f_K
eps <- 1e-5
grad_num <- sapply(1:d, function(j) {
  e <- numeric(d); e[j] <- eps
  (f_K(x0 + e, X, h0) - f_K(x0 - e, X, h0)) / (2 * eps)
})

kosinus <- sum(grad_rumus * grad_num) /
  (sqrt(sum(grad_rumus^2)) * sqrt(sum(grad_num^2)))
cat("\nm(x0)                  =", round(m, 6), "\n")
## 
## m(x0)                  = 2.936148 0.821226
cat("gradien dari rumus 7.5 =", grad_rumus, "\n")
## gradien dari rumus 7.5 = 0.001886652 0.0005276867
cat("gradien numerik        =", grad_num, "\n")
## gradien numerik        = 0.001886652 0.0005276867
cat(sprintf("kemiripan arah (cosine) = %.8f\n", kosinus))
## kemiripan arah (cosine) = 1.00000000
cat("sama:", isTRUE(all.equal(as.numeric(grad_rumus), as.numeric(grad_num), tolerance = 1e-4)), "\n")
## sama: TRUE
# Pembaruan: x_baru = x + m(x)
x_baru <- x0 + m
w      <- exp(-rowSums(sweep(X, 2, x0)^2) / (2 * h0^2))
x_kode <- colSums(w * X) / sum(w)
cat("\nx_baru = x + m(x)       =", round(x_baru, 6), "\n")
## 
## x_baru = x + m(x)       = 3.936148 1.821226
cat("rata-rata berbobot kode =", round(x_kode, 6), "\n")
## rata-rata berbobot kode = 3.936148 1.821226
cat("sama:", isTRUE(all.equal(x_baru, x_kode)), "\n")
## sama: TRUE
# 2. Fungsi bantu
# msClustering() meminta matriks d x n, jadi X (n x d) di-transpose dengan t(X)
jalankan_paket <- function(h) {
  waktu <- system.time(
    res <- msClustering(t(X), h = h, kernel = "gaussianKernel")
  )
  pusat <- t(res$components)
  colnames(pusat) <- colnames(X)
  list(h = h, res = res, labels = res$labels, pusat = pusat,
       k = ncol(res$components), waktu = unname(waktu["elapsed"]))
}

gambar_hasil <- function(v) {
  k      <- v$k
  pastel <- palet_pastel(k)
  tua    <- gelapkan(pastel)
  plot(X[, 1], X[, 2], pch = 21, bg = pastel[v$labels], col = "gray40",
       cex = 0.9, xlab = "Fitur 1", ylab = "Fitur 2",
       main = paste0("library(MeanShift), h = ", v$h, " | ", k, " cluster"))
  points(v$pusat[, 1], v$pusat[, 2], pch = 23, bg = tua, col = "black",
         cex = 2, lwd = 1.4)
  legend("topright", legend = c("Titik data", "Pusat cluster"),
         pch = c(21, 23), pt.bg = c("gray85", "gray50"), col = c("gray40", "black"),
         cex = 0.75, bg = adjustcolor("white", 0.85))
}

# Adjusted Rand Index (1 = pengelompokan identik)
ari <- function(a, b) {
  tab <- table(a, b)
  c2  <- function(x) x * (x - 1) / 2
  s_ij <- sum(c2(tab)); s_a <- sum(c2(rowSums(tab))); s_b <- sum(c2(colSums(tab)))
  tot <- c2(sum(tab)); ekspektasi <- s_a * s_b / tot
  if (isTRUE(all.equal(s_ij, 0.5 * (s_a + s_b)))) return(1)
  (s_ij - ekspektasi) / (0.5 * (s_a + s_b) - ekspektasi)
}

# Jarak terbesar dari pusat A ke pusat B terdekat
jarak_pusat_terdekat <- function(A, B) {
  max(sapply(1:nrow(A), function(i)
    min(sqrt(rowSums((B - matrix(A[i, ], nrow(B), ncol(A), byrow = TRUE))^2)))))
}

# 3. Mean Shift library dengan h = 1.9 terlebih dahulu
h_utama <- 1.9
cat("\n=== 3. library(MeanShift), h =", h_utama, "===\n")
## 
## === 3. library(MeanShift), h = 1.9 ===
v_utama <- jalankan_paket(h_utama)
## 
## Running mean-shift algorithm...
##   |                                                                              |                                                                      |   0%  |                                                                              |                                                                      |   1%  |                                                                              |=                                                                     |   1%  |                                                                              |=                                                                     |   2%  |                                                                              |==                                                                    |   2%  |                                                                              |==                                                                    |   3%  |                                                                              |==                                                                    |   4%  |                                                                              |===                                                                   |   4%  |                                                                              |===                                                                   |   5%  |                                                                              |====                                                                  |   5%  |                                                                              |====                                                                  |   6%  |                                                                              |=====                                                                 |   6%  |                                                                              |=====                                                                 |   7%  |                                                                              |=====                                                                 |   8%  |                                                                              |======                                                                |   8%  |                                                                              |======                                                                |   9%  |                                                                              |=======                                                               |   9%  |                                                                              |=======                                                               |  10%  |                                                                              |=======                                                               |  11%  |                                                                              |========                                                              |  11%  |                                                                              |========                                                              |  12%  |                                                                              |=========                                                             |  12%  |                                                                              |=========                                                             |  13%  |                                                                              |=========                                                             |  14%  |                                                                              |==========                                                            |  14%  |                                                                              |==========                                                            |  15%  |                                                                              |===========                                                           |  15%  |                                                                              |===========                                                           |  16%  |                                                                              |============                                                          |  16%  |                                                                              |============                                                          |  17%  |                                                                              |============                                                          |  18%  |                                                                              |=============                                                         |  18%  |                                                                              |=============                                                         |  19%  |                                                                              |==============                                                        |  19%  |                                                                              |==============                                                        |  20%  |                                                                              |==============                                                        |  21%  |                                                                              |===============                                                       |  21%  |                                                                              |===============                                                       |  22%  |                                                                              |================                                                      |  22%  |                                                                              |================                                                      |  23%  |                                                                              |================                                                      |  24%  |                                                                              |=================                                                     |  24%  |                                                                              |=================                                                     |  25%  |                                                                              |==================                                                    |  25%  |                                                                              |==================                                                    |  26%  |                                                                              |===================                                                   |  26%  |                                                                              |===================                                                   |  27%  |                                                                              |===================                                                   |  28%  |                                                                              |====================                                                  |  28%  |                                                                              |====================                                                  |  29%  |                                                                              |=====================                                                 |  29%  |                                                                              |=====================                                                 |  30%  |                                                                              |=====================                                                 |  31%  |                                                                              |======================                                                |  31%  |                                                                              |======================                                                |  32%  |                                                                              |=======================                                               |  32%  |                                                                              |=======================                                               |  33%  |                                                                              |=======================                                               |  34%  |                                                                              |========================                                              |  34%  |                                                                              |========================                                              |  35%  |                                                                              |=========================                                             |  35%  |                                                                              |=========================                                             |  36%  |                                                                              |==========================                                            |  36%  |                                                                              |==========================                                            |  37%  |                                                                              |==========================                                            |  38%  |                                                                              |===========================                                           |  38%  |                                                                              |===========================                                           |  39%  |                                                                              |============================                                          |  39%  |                                                                              |============================                                          |  40%  |                                                                              |============================                                          |  41%  |                                                                              |=============================                                         |  41%  |                                                                              |=============================                                         |  42%  |                                                                              |==============================                                        |  42%  |                                                                              |==============================                                        |  43%  |                                                                              |==============================                                        |  44%  |                                                                              |===============================                                       |  44%  |                                                                              |===============================                                       |  45%  |                                                                              |================================                                      |  45%  |                                                                              |================================                                      |  46%  |                                                                              |=================================                                     |  46%  |                                                                              |=================================                                     |  47%  |                                                                              |=================================                                     |  48%  |                                                                              |==================================                                    |  48%  |                                                                              |==================================                                    |  49%  |                                                                              |===================================                                   |  49%  |                                                                              |===================================                                   |  50%  |                                                                              |===================================                                   |  51%  |                                                                              |====================================                                  |  51%  |                                                                              |====================================                                  |  52%  |                                                                              |=====================================                                 |  52%  |                                                                              |=====================================                                 |  53%  |                                                                              |=====================================                                 |  54%  |                                                                              |======================================                                |  54%  |                                                                              |======================================                                |  55%  |                                                                              |=======================================                               |  55%  |                                                                              |=======================================                               |  56%  |                                                                              |========================================                              |  56%  |                                                                              |========================================                              |  57%  |                                                                              |========================================                              |  58%  |                                                                              |=========================================                             |  58%  |                                                                              |=========================================                             |  59%  |                                                                              |==========================================                            |  59%  |                                                                              |==========================================                            |  60%  |                                                                              |==========================================                            |  61%  |                                                                              |===========================================                           |  61%  |                                                                              |===========================================                           |  62%  |                                                                              |============================================                          |  62%  |                                                                              |============================================                          |  63%  |                                                                              |============================================                          |  64%  |                                                                              |=============================================                         |  64%  |                                                                              |=============================================                         |  65%  |                                                                              |==============================================                        |  65%  |                                                                              |==============================================                        |  66%  |                                                                              |===============================================                       |  66%  |                                                                              |===============================================                       |  67%  |                                                                              |===============================================                       |  68%  |                                                                              |================================================                      |  68%  |                                                                              |================================================                      |  69%  |                                                                              |=================================================                     |  69%  |                                                                              |=================================================                     |  70%  |                                                                              |=================================================                     |  71%  |                                                                              |==================================================                    |  71%  |                                                                              |==================================================                    |  72%  |                                                                              |===================================================                   |  72%  |                                                                              |===================================================                   |  73%  |                                                                              |===================================================                   |  74%  |                                                                              |====================================================                  |  74%  |                                                                              |====================================================                  |  75%  |                                                                              |=====================================================                 |  75%  |                                                                              |=====================================================                 |  76%  |                                                                              |======================================================                |  76%  |                                                                              |======================================================                |  77%  |                                                                              |======================================================                |  78%  |                                                                              |=======================================================               |  78%  |                                                                              |=======================================================               |  79%  |                                                                              |========================================================              |  79%  |                                                                              |========================================================              |  80%  |                                                                              |========================================================              |  81%  |                                                                              |=========================================================             |  81%  |                                                                              |=========================================================             |  82%  |                                                                              |==========================================================            |  82%  |                                                                              |==========================================================            |  83%  |                                                                              |==========================================================            |  84%  |                                                                              |===========================================================           |  84%  |                                                                              |===========================================================           |  85%  |                                                                              |============================================================          |  85%  |                                                                              |============================================================          |  86%  |                                                                              |=============================================================         |  86%  |                                                                              |=============================================================         |  87%  |                                                                              |=============================================================         |  88%  |                                                                              |==============================================================        |  88%  |                                                                              |==============================================================        |  89%  |                                                                              |===============================================================       |  89%  |                                                                              |===============================================================       |  90%  |                                                                              |===============================================================       |  91%  |                                                                              |================================================================      |  91%  |                                                                              |================================================================      |  92%  |                                                                              |=================================================================     |  92%  |                                                                              |=================================================================     |  93%  |                                                                              |=================================================================     |  94%  |                                                                              |==================================================================    |  94%  |                                                                              |==================================================================    |  95%  |                                                                              |===================================================================   |  95%  |                                                                              |===================================================================   |  96%  |                                                                              |====================================================================  |  96%  |                                                                              |====================================================================  |  97%  |                                                                              |====================================================================  |  98%  |                                                                              |===================================================================== |  98%  |                                                                              |===================================================================== |  99%  |                                                                              |======================================================================|  99%  |                                                                              |======================================================================| 100%
## 
## Mean-shift algorithm ran successfully.
## Finding clusters...
## 
## The algorithm found 3 clusters.
print(v_utama$res)
## $components
##           mode1     mode2     mode3
## Fitur1 4.634149 -2.693171 -6.778723
## Fitur2 1.961101  8.886893 -6.878164
## 
## $labels
##    [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
##   [38] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
##   [75] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
##  [112] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
##  [149] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
##  [186] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
##  [223] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
##  [260] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
##  [297] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
##  [334] 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
##  [371] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
##  [408] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
##  [445] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
##  [482] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
##  [519] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
##  [556] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
##  [593] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
##  [630] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
##  [667] 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
##  [704] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
##  [741] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
##  [778] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
##  [815] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
##  [852] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
##  [889] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
##  [926] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
##  [963] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
## [1000] 3
cat("\nJumlah cluster :", v_utama$k, "\n")
## 
## Jumlah cluster : 3
cat("Waktu hitung   :", round(v_utama$waktu, 2), "detik\n")
## Waktu hitung   : 213.04 detik
cat("Pusat cluster:\n");           print(round(v_utama$pusat, 3))
## Pusat cluster:
##       Fitur1 Fitur2
## mode1  4.634  1.961
## mode2 -2.693  8.887
## mode3 -6.779 -6.878
cat("\nUkuran tiap cluster:\n");   print(table(Cluster = v_utama$labels))
## 
## Ukuran tiap cluster:
## Cluster
##   1   2   3 
## 334 333 333
cat("\nLabel paket vs kelompok asli:\n")
## 
## Label paket vs kelompok asli:
print(table(Label_Paket = v_utama$labels, Kelompok_Asli = y_asli))
##            Kelompok_Asli
## Label_Paket   1   2   3
##           1 334   0   0
##           2   0 333   0
##           3   0   0 333
cat("ARI terhadap kelompok asli:", round(ari(v_utama$labels, y_asli), 4), "\n")
## ARI terhadap kelompok asli: 1
par(mfrow = c(1, 1), mar = c(5, 4, 4, 2) + 0.1)
gambar_hasil(v_utama)

# 4. Mean Shift library untuk semua h
H_LIST   <- c(0.3, 0.4, 1.9, 6.0)
MAX_ITER <- 150

hasil_paket <- lapply(H_LIST, jalankan_paket)
## 
## Running mean-shift algorithm...
##   |                                                                              |                                                                      |   0%  |                                                                              |                                                                      |   1%  |                                                                              |=                                                                     |   1%  |                                                                              |=                                                                     |   2%  |                                                                              |==                                                                    |   2%  |                                                                              |==                                                                    |   3%  |                                                                              |==                                                                    |   4%  |                                                                              |===                                                                   |   4%  |                                                                              |===                                                                   |   5%  |                                                                              |====                                                                  |   5%  |                                                                              |====                                                                  |   6%  |                                                                              |=====                                                                 |   6%  |                                                                              |=====                                                                 |   7%  |                                                                              |=====                                                                 |   8%  |                                                                              |======                                                                |   8%  |                                                                              |======                                                                |   9%  |                                                                              |=======                                                               |   9%  |                                                                              |=======                                                               |  10%  |                                                                              |=======                                                               |  11%  |                                                                              |========                                                              |  11%  |                                                                              |========                                                              |  12%  |                                                                              |=========                                                             |  12%  |                                                                              |=========                                                             |  13%  |                                                                              |=========                                                             |  14%  |                                                                              |==========                                                            |  14%  |                                                                              |==========                                                            |  15%  |                                                                              |===========                                                           |  15%  |                                                                              |===========                                                           |  16%  |                                                                              |============                                                          |  16%  |                                                                              |============                                                          |  17%  |                                                                              |============                                                          |  18%  |                                                                              |=============                                                         |  18%  |                                                                              |=============                                                         |  19%  |                                                                              |==============                                                        |  19%  |                                                                              |==============                                                        |  20%  |                                                                              |==============                                                        |  21%  |                                                                              |===============                                                       |  21%  |                                                                              |===============                                                       |  22%  |                                                                              |================                                                      |  22%  |                                                                              |================                                                      |  23%  |                                                                              |================                                                      |  24%  |                                                                              |=================                                                     |  24%  |                                                                              |=================                                                     |  25%  |                                                                              |==================                                                    |  25%  |                                                                              |==================                                                    |  26%  |                                                                              |===================                                                   |  26%  |                                                                              |===================                                                   |  27%  |                                                                              |===================                                                   |  28%  |                                                                              |====================                                                  |  28%  |                                                                              |====================                                                  |  29%  |                                                                              |=====================                                                 |  29%  |                                                                              |=====================                                                 |  30%  |                                                                              |=====================                                                 |  31%  |                                                                              |======================                                                |  31%  |                                                                              |======================                                                |  32%  |                                                                              |=======================                                               |  32%  |                                                                              |=======================                                               |  33%  |                                                                              |=======================                                               |  34%  |                                                                              |========================                                              |  34%  |                                                                              |========================                                              |  35%  |                                                                              |=========================                                             |  35%  |                                                                              |=========================                                             |  36%  |                                                                              |==========================                                            |  36%  |                                                                              |==========================                                            |  37%  |                                                                              |==========================                                            |  38%  |                                                                              |===========================                                           |  38%  |                                                                              |===========================                                           |  39%  |                                                                              |============================                                          |  39%  |                                                                              |============================                                          |  40%  |                                                                              |============================                                          |  41%  |                                                                              |=============================                                         |  41%  |                                                                              |=============================                                         |  42%  |                                                                              |==============================                                        |  42%  |                                                                              |==============================                                        |  43%  |                                                                              |==============================                                        |  44%  |                                                                              |===============================                                       |  44%  |                                                                              |===============================                                       |  45%  |                                                                              |================================                                      |  45%  |                                                                              |================================                                      |  46%  |                                                                              |=================================                                     |  46%  |                                                                              |=================================                                     |  47%  |                                                                              |=================================                                     |  48%  |                                                                              |==================================                                    |  48%  |                                                                              |==================================                                    |  49%  |                                                                              |===================================                                   |  49%  |                                                                              |===================================                                   |  50%  |                                                                              |===================================                                   |  51%  |                                                                              |====================================                                  |  51%  |                                                                              |====================================                                  |  52%  |                                                                              |=====================================                                 |  52%  |                                                                              |=====================================                                 |  53%  |                                                                              |=====================================                                 |  54%  |                                                                              |======================================                                |  54%  |                                                                              |======================================                                |  55%  |                                                                              |=======================================                               |  55%  |                                                                              |=======================================                               |  56%  |                                                                              |========================================                              |  56%  |                                                                              |========================================                              |  57%  |                                                                              |========================================                              |  58%  |                                                                              |=========================================                             |  58%  |                                                                              |=========================================                             |  59%  |                                                                              |==========================================                            |  59%  |                                                                              |==========================================                            |  60%  |                                                                              |==========================================                            |  61%  |                                                                              |===========================================                           |  61%  |                                                                              |===========================================                           |  62%  |                                                                              |============================================                          |  62%  |                                                                              |============================================                          |  63%  |                                                                              |============================================                          |  64%  |                                                                              |=============================================                         |  64%  |                                                                              |=============================================                         |  65%  |                                                                              |==============================================                        |  65%  |                                                                              |==============================================                        |  66%  |                                                                              |===============================================                       |  66%  |                                                                              |===============================================                       |  67%  |                                                                              |===============================================                       |  68%  |                                                                              |================================================                      |  68%  |                                                                              |================================================                      |  69%  |                                                                              |=================================================                     |  69%  |                                                                              |=================================================                     |  70%  |                                                                              |=================================================                     |  71%  |                                                                              |==================================================                    |  71%  |                                                                              |==================================================                    |  72%  |                                                                              |===================================================                   |  72%  |                                                                              |===================================================                   |  73%  |                                                                              |===================================================                   |  74%  |                                                                              |====================================================                  |  74%  |                                                                              |====================================================                  |  75%  |                                                                              |=====================================================                 |  75%  |                                                                              |=====================================================                 |  76%  |                                                                              |======================================================                |  76%  |                                                                              |======================================================                |  77%  |                                                                              |======================================================                |  78%  |                                                                              |=======================================================               |  78%  |                                                                              |=======================================================               |  79%  |                                                                              |========================================================              |  79%  |                                                                              |========================================================              |  80%  |                                                                              |========================================================              |  81%  |                                                                              |=========================================================             |  81%  |                                                                              |=========================================================             |  82%  |                                                                              |==========================================================            |  82%  |                                                                              |==========================================================            |  83%  |                                                                              |==========================================================            |  84%  |                                                                              |===========================================================           |  84%  |                                                                              |===========================================================           |  85%  |                                                                              |============================================================          |  85%  |                                                                              |============================================================          |  86%  |                                                                              |=============================================================         |  86%  |                                                                              |=============================================================         |  87%  |                                                                              |=============================================================         |  88%  |                                                                              |==============================================================        |  88%  |                                                                              |==============================================================        |  89%  |                                                                              |===============================================================       |  89%  |                                                                              |===============================================================       |  90%  |                                                                              |===============================================================       |  91%  |                                                                              |================================================================      |  91%  |                                                                              |================================================================      |  92%  |                                                                              |=================================================================     |  92%  |                                                                              |=================================================================     |  93%  |                                                                              |=================================================================     |  94%  |                                                                              |==================================================================    |  94%  |                                                                              |==================================================================    |  95%  |                                                                              |===================================================================   |  95%  |                                                                              |===================================================================   |  96%  |                                                                              |====================================================================  |  96%  |                                                                              |====================================================================  |  97%  |                                                                              |====================================================================  |  98%  |                                                                              |===================================================================== |  98%  |                                                                              |===================================================================== |  99%  |                                                                              |======================================================================|  99%  |                                                                              |======================================================================| 100%
## 
## Mean-shift algorithm ran successfully.
## Finding clusters...
## 
## The algorithm found 209 clusters.
## 
## Running mean-shift algorithm...
##   |                                                                              |                                                                      |   0%  |                                                                              |                                                                      |   1%  |                                                                              |=                                                                     |   1%  |                                                                              |=                                                                     |   2%  |                                                                              |==                                                                    |   2%  |                                                                              |==                                                                    |   3%  |                                                                              |==                                                                    |   4%  |                                                                              |===                                                                   |   4%  |                                                                              |===                                                                   |   5%  |                                                                              |====                                                                  |   5%  |                                                                              |====                                                                  |   6%  |                                                                              |=====                                                                 |   6%  |                                                                              |=====                                                                 |   7%  |                                                                              |=====                                                                 |   8%  |                                                                              |======                                                                |   8%  |                                                                              |======                                                                |   9%  |                                                                              |=======                                                               |   9%  |                                                                              |=======                                                               |  10%  |                                                                              |=======                                                               |  11%  |                                                                              |========                                                              |  11%  |                                                                              |========                                                              |  12%  |                                                                              |=========                                                             |  12%  |                                                                              |=========                                                             |  13%  |                                                                              |=========                                                             |  14%  |                                                                              |==========                                                            |  14%  |                                                                              |==========                                                            |  15%  |                                                                              |===========                                                           |  15%  |                                                                              |===========                                                           |  16%  |                                                                              |============                                                          |  16%  |                                                                              |============                                                          |  17%  |                                                                              |============                                                          |  18%  |                                                                              |=============                                                         |  18%  |                                                                              |=============                                                         |  19%  |                                                                              |==============                                                        |  19%  |                                                                              |==============                                                        |  20%  |                                                                              |==============                                                        |  21%  |                                                                              |===============                                                       |  21%  |                                                                              |===============                                                       |  22%  |                                                                              |================                                                      |  22%  |                                                                              |================                                                      |  23%  |                                                                              |================                                                      |  24%  |                                                                              |=================                                                     |  24%  |                                                                              |=================                                                     |  25%  |                                                                              |==================                                                    |  25%  |                                                                              |==================                                                    |  26%  |                                                                              |===================                                                   |  26%  |                                                                              |===================                                                   |  27%  |                                                                              |===================                                                   |  28%  |                                                                              |====================                                                  |  28%  |                                                                              |====================                                                  |  29%  |                                                                              |=====================                                                 |  29%  |                                                                              |=====================                                                 |  30%  |                                                                              |=====================                                                 |  31%  |                                                                              |======================                                                |  31%  |                                                                              |======================                                                |  32%  |                                                                              |=======================                                               |  32%  |                                                                              |=======================                                               |  33%  |                                                                              |=======================                                               |  34%  |                                                                              |========================                                              |  34%  |                                                                              |========================                                              |  35%  |                                                                              |=========================                                             |  35%  |                                                                              |=========================                                             |  36%  |                                                                              |==========================                                            |  36%  |                                                                              |==========================                                            |  37%  |                                                                              |==========================                                            |  38%  |                                                                              |===========================                                           |  38%  |                                                                              |===========================                                           |  39%  |                                                                              |============================                                          |  39%  |                                                                              |============================                                          |  40%  |                                                                              |============================                                          |  41%  |                                                                              |=============================                                         |  41%  |                                                                              |=============================                                         |  42%  |                                                                              |==============================                                        |  42%  |                                                                              |==============================                                        |  43%  |                                                                              |==============================                                        |  44%  |                                                                              |===============================                                       |  44%  |                                                                              |===============================                                       |  45%  |                                                                              |================================                                      |  45%  |                                                                              |================================                                      |  46%  |                                                                              |=================================                                     |  46%  |                                                                              |=================================                                     |  47%  |                                                                              |=================================                                     |  48%  |                                                                              |==================================                                    |  48%  |                                                                              |==================================                                    |  49%  |                                                                              |===================================                                   |  49%  |                                                                              |===================================                                   |  50%  |                                                                              |===================================                                   |  51%  |                                                                              |====================================                                  |  51%  |                                                                              |====================================                                  |  52%  |                                                                              |=====================================                                 |  52%  |                                                                              |=====================================                                 |  53%  |                                                                              |=====================================                                 |  54%  |                                                                              |======================================                                |  54%  |                                                                              |======================================                                |  55%  |                                                                              |=======================================                               |  55%  |                                                                              |=======================================                               |  56%  |                                                                              |========================================                              |  56%  |                                                                              |========================================                              |  57%  |                                                                              |========================================                              |  58%  |                                                                              |=========================================                             |  58%  |                                                                              |=========================================                             |  59%  |                                                                              |==========================================                            |  59%  |                                                                              |==========================================                            |  60%  |                                                                              |==========================================                            |  61%  |                                                                              |===========================================                           |  61%  |                                                                              |===========================================                           |  62%  |                                                                              |============================================                          |  62%  |                                                                              |============================================                          |  63%  |                                                                              |============================================                          |  64%  |                                                                              |=============================================                         |  64%  |                                                                              |=============================================                         |  65%  |                                                                              |==============================================                        |  65%  |                                                                              |==============================================                        |  66%  |                                                                              |===============================================                       |  66%  |                                                                              |===============================================                       |  67%  |                                                                              |===============================================                       |  68%  |                                                                              |================================================                      |  68%  |                                                                              |================================================                      |  69%  |                                                                              |=================================================                     |  69%  |                                                                              |=================================================                     |  70%  |                                                                              |=================================================                     |  71%  |                                                                              |==================================================                    |  71%  |                                                                              |==================================================                    |  72%  |                                                                              |===================================================                   |  72%  |                                                                              |===================================================                   |  73%  |                                                                              |===================================================                   |  74%  |                                                                              |====================================================                  |  74%  |                                                                              |====================================================                  |  75%  |                                                                              |=====================================================                 |  75%  |                                                                              |=====================================================                 |  76%  |                                                                              |======================================================                |  76%  |                                                                              |======================================================                |  77%  |                                                                              |======================================================                |  78%  |                                                                              |=======================================================               |  78%  |                                                                              |=======================================================               |  79%  |                                                                              |========================================================              |  79%  |                                                                              |========================================================              |  80%  |                                                                              |========================================================              |  81%  |                                                                              |=========================================================             |  81%  |                                                                              |=========================================================             |  82%  |                                                                              |==========================================================            |  82%  |                                                                              |==========================================================            |  83%  |                                                                              |==========================================================            |  84%  |                                                                              |===========================================================           |  84%  |                                                                              |===========================================================           |  85%  |                                                                              |============================================================          |  85%  |                                                                              |============================================================          |  86%  |                                                                              |=============================================================         |  86%  |                                                                              |=============================================================         |  87%  |                                                                              |=============================================================         |  88%  |                                                                              |==============================================================        |  88%  |                                                                              |==============================================================        |  89%  |                                                                              |===============================================================       |  89%  |                                                                              |===============================================================       |  90%  |                                                                              |===============================================================       |  91%  |                                                                              |================================================================      |  91%  |                                                                              |================================================================      |  92%  |                                                                              |=================================================================     |  92%  |                                                                              |=================================================================     |  93%  |                                                                              |=================================================================     |  94%  |                                                                              |==================================================================    |  94%  |                                                                              |==================================================================    |  95%  |                                                                              |===================================================================   |  95%  |                                                                              |===================================================================   |  96%  |                                                                              |====================================================================  |  96%  |                                                                              |====================================================================  |  97%  |                                                                              |====================================================================  |  98%  |                                                                              |===================================================================== |  98%  |                                                                              |===================================================================== |  99%  |                                                                              |======================================================================|  99%  |                                                                              |======================================================================| 100%
## 
## Mean-shift algorithm ran successfully.
## Finding clusters...
## 
## The algorithm found 133 clusters.
## 
## Running mean-shift algorithm...
##   |                                                                              |                                                                      |   0%  |                                                                              |                                                                      |   1%  |                                                                              |=                                                                     |   1%  |                                                                              |=                                                                     |   2%  |                                                                              |==                                                                    |   2%  |                                                                              |==                                                                    |   3%  |                                                                              |==                                                                    |   4%  |                                                                              |===                                                                   |   4%  |                                                                              |===                                                                   |   5%  |                                                                              |====                                                                  |   5%  |                                                                              |====                                                                  |   6%  |                                                                              |=====                                                                 |   6%  |                                                                              |=====                                                                 |   7%  |                                                                              |=====                                                                 |   8%  |                                                                              |======                                                                |   8%  |                                                                              |======                                                                |   9%  |                                                                              |=======                                                               |   9%  |                                                                              |=======                                                               |  10%  |                                                                              |=======                                                               |  11%  |                                                                              |========                                                              |  11%  |                                                                              |========                                                              |  12%  |                                                                              |=========                                                             |  12%  |                                                                              |=========                                                             |  13%  |                                                                              |=========                                                             |  14%  |                                                                              |==========                                                            |  14%  |                                                                              |==========                                                            |  15%  |                                                                              |===========                                                           |  15%  |                                                                              |===========                                                           |  16%  |                                                                              |============                                                          |  16%  |                                                                              |============                                                          |  17%  |                                                                              |============                                                          |  18%  |                                                                              |=============                                                         |  18%  |                                                                              |=============                                                         |  19%  |                                                                              |==============                                                        |  19%  |                                                                              |==============                                                        |  20%  |                                                                              |==============                                                        |  21%  |                                                                              |===============                                                       |  21%  |                                                                              |===============                                                       |  22%  |                                                                              |================                                                      |  22%  |                                                                              |================                                                      |  23%  |                                                                              |================                                                      |  24%  |                                                                              |=================                                                     |  24%  |                                                                              |=================                                                     |  25%  |                                                                              |==================                                                    |  25%  |                                                                              |==================                                                    |  26%  |                                                                              |===================                                                   |  26%  |                                                                              |===================                                                   |  27%  |                                                                              |===================                                                   |  28%  |                                                                              |====================                                                  |  28%  |                                                                              |====================                                                  |  29%  |                                                                              |=====================                                                 |  29%  |                                                                              |=====================                                                 |  30%  |                                                                              |=====================                                                 |  31%  |                                                                              |======================                                                |  31%  |                                                                              |======================                                                |  32%  |                                                                              |=======================                                               |  32%  |                                                                              |=======================                                               |  33%  |                                                                              |=======================                                               |  34%  |                                                                              |========================                                              |  34%  |                                                                              |========================                                              |  35%  |                                                                              |=========================                                             |  35%  |                                                                              |=========================                                             |  36%  |                                                                              |==========================                                            |  36%  |                                                                              |==========================                                            |  37%  |                                                                              |==========================                                            |  38%  |                                                                              |===========================                                           |  38%  |                                                                              |===========================                                           |  39%  |                                                                              |============================                                          |  39%  |                                                                              |============================                                          |  40%  |                                                                              |============================                                          |  41%  |                                                                              |=============================                                         |  41%  |                                                                              |=============================                                         |  42%  |                                                                              |==============================                                        |  42%  |                                                                              |==============================                                        |  43%  |                                                                              |==============================                                        |  44%  |                                                                              |===============================                                       |  44%  |                                                                              |===============================                                       |  45%  |                                                                              |================================                                      |  45%  |                                                                              |================================                                      |  46%  |                                                                              |=================================                                     |  46%  |                                                                              |=================================                                     |  47%  |                                                                              |=================================                                     |  48%  |                                                                              |==================================                                    |  48%  |                                                                              |==================================                                    |  49%  |                                                                              |===================================                                   |  49%  |                                                                              |===================================                                   |  50%  |                                                                              |===================================                                   |  51%  |                                                                              |====================================                                  |  51%  |                                                                              |====================================                                  |  52%  |                                                                              |=====================================                                 |  52%  |                                                                              |=====================================                                 |  53%  |                                                                              |=====================================                                 |  54%  |                                                                              |======================================                                |  54%  |                                                                              |======================================                                |  55%  |                                                                              |=======================================                               |  55%  |                                                                              |=======================================                               |  56%  |                                                                              |========================================                              |  56%  |                                                                              |========================================                              |  57%  |                                                                              |========================================                              |  58%  |                                                                              |=========================================                             |  58%  |                                                                              |=========================================                             |  59%  |                                                                              |==========================================                            |  59%  |                                                                              |==========================================                            |  60%  |                                                                              |==========================================                            |  61%  |                                                                              |===========================================                           |  61%  |                                                                              |===========================================                           |  62%  |                                                                              |============================================                          |  62%  |                                                                              |============================================                          |  63%  |                                                                              |============================================                          |  64%  |                                                                              |=============================================                         |  64%  |                                                                              |=============================================                         |  65%  |                                                                              |==============================================                        |  65%  |                                                                              |==============================================                        |  66%  |                                                                              |===============================================                       |  66%  |                                                                              |===============================================                       |  67%  |                                                                              |===============================================                       |  68%  |                                                                              |================================================                      |  68%  |                                                                              |================================================                      |  69%  |                                                                              |=================================================                     |  69%  |                                                                              |=================================================                     |  70%  |                                                                              |=================================================                     |  71%  |                                                                              |==================================================                    |  71%  |                                                                              |==================================================                    |  72%  |                                                                              |===================================================                   |  72%  |                                                                              |===================================================                   |  73%  |                                                                              |===================================================                   |  74%  |                                                                              |====================================================                  |  74%  |                                                                              |====================================================                  |  75%  |                                                                              |=====================================================                 |  75%  |                                                                              |=====================================================                 |  76%  |                                                                              |======================================================                |  76%  |                                                                              |======================================================                |  77%  |                                                                              |======================================================                |  78%  |                                                                              |=======================================================               |  78%  |                                                                              |=======================================================               |  79%  |                                                                              |========================================================              |  79%  |                                                                              |========================================================              |  80%  |                                                                              |========================================================              |  81%  |                                                                              |=========================================================             |  81%  |                                                                              |=========================================================             |  82%  |                                                                              |==========================================================            |  82%  |                                                                              |==========================================================            |  83%  |                                                                              |==========================================================            |  84%  |                                                                              |===========================================================           |  84%  |                                                                              |===========================================================           |  85%  |                                                                              |============================================================          |  85%  |                                                                              |============================================================          |  86%  |                                                                              |=============================================================         |  86%  |                                                                              |=============================================================         |  87%  |                                                                              |=============================================================         |  88%  |                                                                              |==============================================================        |  88%  |                                                                              |==============================================================        |  89%  |                                                                              |===============================================================       |  89%  |                                                                              |===============================================================       |  90%  |                                                                              |===============================================================       |  91%  |                                                                              |================================================================      |  91%  |                                                                              |================================================================      |  92%  |                                                                              |=================================================================     |  92%  |                                                                              |=================================================================     |  93%  |                                                                              |=================================================================     |  94%  |                                                                              |==================================================================    |  94%  |                                                                              |==================================================================    |  95%  |                                                                              |===================================================================   |  95%  |                                                                              |===================================================================   |  96%  |                                                                              |====================================================================  |  96%  |                                                                              |====================================================================  |  97%  |                                                                              |====================================================================  |  98%  |                                                                              |===================================================================== |  98%  |                                                                              |===================================================================== |  99%  |                                                                              |======================================================================|  99%  |                                                                              |======================================================================| 100%
## 
## Mean-shift algorithm ran successfully.
## Finding clusters...
## 
## The algorithm found 3 clusters.
## 
## Running mean-shift algorithm...
##   |                                                                              |                                                                      |   0%  |                                                                              |                                                                      |   1%  |                                                                              |=                                                                     |   1%  |                                                                              |=                                                                     |   2%  |                                                                              |==                                                                    |   2%  |                                                                              |==                                                                    |   3%  |                                                                              |==                                                                    |   4%  |                                                                              |===                                                                   |   4%  |                                                                              |===                                                                   |   5%  |                                                                              |====                                                                  |   5%  |                                                                              |====                                                                  |   6%  |                                                                              |=====                                                                 |   6%  |                                                                              |=====                                                                 |   7%  |                                                                              |=====                                                                 |   8%  |                                                                              |======                                                                |   8%  |                                                                              |======                                                                |   9%  |                                                                              |=======                                                               |   9%  |                                                                              |=======                                                               |  10%  |                                                                              |=======                                                               |  11%  |                                                                              |========                                                              |  11%  |                                                                              |========                                                              |  12%  |                                                                              |=========                                                             |  12%  |                                                                              |=========                                                             |  13%  |                                                                              |=========                                                             |  14%  |                                                                              |==========                                                            |  14%  |                                                                              |==========                                                            |  15%  |                                                                              |===========                                                           |  15%  |                                                                              |===========                                                           |  16%  |                                                                              |============                                                          |  16%  |                                                                              |============                                                          |  17%  |                                                                              |============                                                          |  18%  |                                                                              |=============                                                         |  18%  |                                                                              |=============                                                         |  19%  |                                                                              |==============                                                        |  19%  |                                                                              |==============                                                        |  20%  |                                                                              |==============                                                        |  21%  |                                                                              |===============                                                       |  21%  |                                                                              |===============                                                       |  22%  |                                                                              |================                                                      |  22%  |                                                                              |================                                                      |  23%  |                                                                              |================                                                      |  24%  |                                                                              |=================                                                     |  24%  |                                                                              |=================                                                     |  25%  |                                                                              |==================                                                    |  25%  |                                                                              |==================                                                    |  26%  |                                                                              |===================                                                   |  26%  |                                                                              |===================                                                   |  27%  |                                                                              |===================                                                   |  28%  |                                                                              |====================                                                  |  28%  |                                                                              |====================                                                  |  29%  |                                                                              |=====================                                                 |  29%  |                                                                              |=====================                                                 |  30%  |                                                                              |=====================                                                 |  31%  |                                                                              |======================                                                |  31%  |                                                                              |======================                                                |  32%  |                                                                              |=======================                                               |  32%  |                                                                              |=======================                                               |  33%  |                                                                              |=======================                                               |  34%  |                                                                              |========================                                              |  34%  |                                                                              |========================                                              |  35%  |                                                                              |=========================                                             |  35%  |                                                                              |=========================                                             |  36%  |                                                                              |==========================                                            |  36%  |                                                                              |==========================                                            |  37%  |                                                                              |==========================                                            |  38%  |                                                                              |===========================                                           |  38%  |                                                                              |===========================                                           |  39%  |                                                                              |============================                                          |  39%  |                                                                              |============================                                          |  40%  |                                                                              |============================                                          |  41%  |                                                                              |=============================                                         |  41%  |                                                                              |=============================                                         |  42%  |                                                                              |==============================                                        |  42%  |                                                                              |==============================                                        |  43%  |                                                                              |==============================                                        |  44%  |                                                                              |===============================                                       |  44%  |                                                                              |===============================                                       |  45%  |                                                                              |================================                                      |  45%  |                                                                              |================================                                      |  46%  |                                                                              |=================================                                     |  46%  |                                                                              |=================================                                     |  47%  |                                                                              |=================================                                     |  48%  |                                                                              |==================================                                    |  48%  |                                                                              |==================================                                    |  49%  |                                                                              |===================================                                   |  49%  |                                                                              |===================================                                   |  50%  |                                                                              |===================================                                   |  51%  |                                                                              |====================================                                  |  51%  |                                                                              |====================================                                  |  52%  |                                                                              |=====================================                                 |  52%  |                                                                              |=====================================                                 |  53%  |                                                                              |=====================================                                 |  54%  |                                                                              |======================================                                |  54%  |                                                                              |======================================                                |  55%  |                                                                              |=======================================                               |  55%  |                                                                              |=======================================                               |  56%  |                                                                              |========================================                              |  56%  |                                                                              |========================================                              |  57%  |                                                                              |========================================                              |  58%  |                                                                              |=========================================                             |  58%  |                                                                              |=========================================                             |  59%  |                                                                              |==========================================                            |  59%  |                                                                              |==========================================                            |  60%  |                                                                              |==========================================                            |  61%  |                                                                              |===========================================                           |  61%  |                                                                              |===========================================                           |  62%  |                                                                              |============================================                          |  62%  |                                                                              |============================================                          |  63%  |                                                                              |============================================                          |  64%  |                                                                              |=============================================                         |  64%  |                                                                              |=============================================                         |  65%  |                                                                              |==============================================                        |  65%  |                                                                              |==============================================                        |  66%  |                                                                              |===============================================                       |  66%  |                                                                              |===============================================                       |  67%  |                                                                              |===============================================                       |  68%  |                                                                              |================================================                      |  68%  |                                                                              |================================================                      |  69%  |                                                                              |=================================================                     |  69%  |                                                                              |=================================================                     |  70%  |                                                                              |=================================================                     |  71%  |                                                                              |==================================================                    |  71%  |                                                                              |==================================================                    |  72%  |                                                                              |===================================================                   |  72%  |                                                                              |===================================================                   |  73%  |                                                                              |===================================================                   |  74%  |                                                                              |====================================================                  |  74%  |                                                                              |====================================================                  |  75%  |                                                                              |=====================================================                 |  75%  |                                                                              |=====================================================                 |  76%  |                                                                              |======================================================                |  76%  |                                                                              |======================================================                |  77%  |                                                                              |======================================================                |  78%  |                                                                              |=======================================================               |  78%  |                                                                              |=======================================================               |  79%  |                                                                              |========================================================              |  79%  |                                                                              |========================================================              |  80%  |                                                                              |========================================================              |  81%  |                                                                              |=========================================================             |  81%  |                                                                              |=========================================================             |  82%  |                                                                              |==========================================================            |  82%  |                                                                              |==========================================================            |  83%  |                                                                              |==========================================================            |  84%  |                                                                              |===========================================================           |  84%  |                                                                              |===========================================================           |  85%  |                                                                              |============================================================          |  85%  |                                                                              |============================================================          |  86%  |                                                                              |=============================================================         |  86%  |                                                                              |=============================================================         |  87%  |                                                                              |=============================================================         |  88%  |                                                                              |==============================================================        |  88%  |                                                                              |==============================================================        |  89%  |                                                                              |===============================================================       |  89%  |                                                                              |===============================================================       |  90%  |                                                                              |===============================================================       |  91%  |                                                                              |================================================================      |  91%  |                                                                              |================================================================      |  92%  |                                                                              |=================================================================     |  92%  |                                                                              |=================================================================     |  93%  |                                                                              |=================================================================     |  94%  |                                                                              |==================================================================    |  94%  |                                                                              |==================================================================    |  95%  |                                                                              |===================================================================   |  95%  |                                                                              |===================================================================   |  96%  |                                                                              |====================================================================  |  96%  |                                                                              |====================================================================  |  97%  |                                                                              |====================================================================  |  98%  |                                                                              |===================================================================== |  98%  |                                                                              |===================================================================== |  99%  |                                                                              |======================================================================|  99%  |                                                                              |======================================================================| 100%
## 
## Mean-shift algorithm ran successfully.
## Finding clusters...
## 
## The algorithm found 3 clusters.
names(hasil_paket) <- H_LIST

cat("\n=== 4. library(MeanShift), semua h ===\n")
## 
## === 4. library(MeanShift), semua h ===
for (v in hasil_paket) {
  cat(sprintf("\n--- h = %s: %d cluster (%.2f detik) ---\n", v$h, v$k, v$waktu))
  print(v$res)
  if (v$k <= 6) {
    cat("pusat cluster:\n"); print(round(v$pusat, 3))
  }
  cat("ukuran tiap cluster:\n"); print(table(Cluster = v$labels))
}
## 
## --- h = 0.3: 209 cluster (286.41 detik) ---
## $components
##           mode1    mode2     mode3     mode4    mode5    mode6    mode7
## Fitur1 5.995074 4.207805 4.5060286 5.3657045 4.710421 5.915595 4.635356
## Fitur2 2.907650 1.814515 0.4313578 0.5716645 1.722906 2.000239 2.752674
##           mode8    mode9   mode10   mode11   mode12   mode13   mode14   mode15
## Fitur1 6.561883 6.949351 3.275001 4.605469 5.367678 2.043547 2.257430 6.083479
## Fitur2 1.693574 2.363797 3.147584 2.119902 3.493670 1.167448 2.734638 1.228063
##           mode16   mode17   mode18   mode19   mode20    mode21   mode22
## Fitur1 2.9459024 5.186532 3.981047 5.473218 5.850953 4.0586376 3.347459
## Fitur2 0.9411371 1.608369 1.790965 1.747714 3.885043 0.7173491 2.144670
##          mode23   mode24   mode25   mode26   mode27   mode28   mode29   mode30
## Fitur1 4.215172 2.284361 4.784149 5.146209 3.888750 4.306753 5.135074 5.293330
## Fitur2 3.421381 3.237853 3.389965 3.763811 4.421869 2.369093 2.828299 2.106038
##          mode31   mode32   mode33   mode34   mode35   mode36   mode37
## Fitur1 1.706913 5.416969 5.650216 3.568151 3.760221 5.150073 3.657373
## Fitur2 2.498352 1.388414 2.096163 1.340022 2.665897 0.182295 0.507497
##            mode38   mode39      mode40   mode41  mode42   mode43   mode44
## Fitur1  4.7143870 3.568302  3.71958675 4.553074 3.16029 7.401891 4.701958
## Fitur2 -0.1884245 4.019898 -0.02338692 2.333532 1.72651 1.749086 4.970678
##          mode45    mode46     mode47    mode48   mode49   mode50   mode51
## Fitur1 2.675323 5.2469739  6.1158023 5.9008990 4.851463 4.115640 4.901178
## Fitur2 4.098029 0.8884418 -0.0989552 0.5422158 4.241892 4.041395 5.224257
##            mode52   mode53   mode54    mode55   mode56   mode57   mode58
## Fitur1 5.73665465 2.703952 6.754410 3.5173853 6.736995 6.750757 2.849471
## Fitur2 0.05434907 1.723496 1.323805 0.8933149 3.381726 2.963689 3.533437
##          mode59   mode60   mode61   mode62   mode63    mode64    mode65
## Fitur1 2.003593 6.080594 3.043319 7.158778 2.587576  3.665641 6.5071112
## Fitur2 2.986840 4.220918 2.854524 3.001039 1.375828 -1.017933 0.7152373
##           mode66    mode67    mode68    mode69    mode70    mode71    mode72
## Fitur1 -3.821237 -2.416746 -1.936332 -2.018564 -2.374944 -3.629517 -1.953602
## Fitur2  9.677645  9.733043  9.250599  7.859494  8.404613  9.056212  5.971523
##           mode73    mode74    mode75    mode76    mode77    mode78    mode79
## Fitur1 -3.530390 -1.864009 -3.656027 -1.526666 -3.185181 -2.853332 -3.132006
## Fitur2  7.954325  8.638109  8.871082  7.280472  7.689945  9.277651  8.718663
##           mode80    mode81    mode82    mode83    mode84    mode85    mode86
## Fitur1 -2.539895 -2.924889 -3.282023 -3.728286 -3.478659 -4.771785 -2.437266
## Fitur2 10.642487 10.469261 10.656522  8.373683  8.235907  9.178890  9.323977
##           mode87    mode88    mode89     mode90    mode91    mode92    mode93
## Fitur1 -2.477051 -3.746634 -2.726311 -0.8782368 -1.728943 -3.058102 -1.228973
## Fitur2  8.876407  7.820763  6.391231  9.6036647  8.153586  8.061726  9.278484
##           mode94    mode95    mode96    mode97    mode98     mode99   mode100
## Fitur1 -1.218250 -1.921215 -3.242780 -2.814421 -3.297055 -0.9131051 -4.207336
## Fitur2  7.812322 10.445466  8.866783  7.382510 10.416606  9.1067380  8.861807
##          mode101   mode102   mode103   mode104   mode105   mode106   mode107
## Fitur1 -4.853132 -4.205066 -4.563974 -4.825401 -2.403000 -2.135981 -3.067006
## Fitur2  6.866624  8.056759  9.060499  7.987688  7.493676  9.966675 11.506260
##           mode108   mode109   mode110    mode111   mode112   mode113   mode114
## Fitur1 -0.9375347 -3.584180 -2.844388 -0.8247736 -4.891859 -1.906374 -1.316301
## Fitur2  8.8358021  9.419437 10.016256 10.2797713  8.709170  7.425234 10.034424
##           mode115   mode116  mode117   mode118   mode119   mode120   mode121
## Fitur1 -0.9269709 -3.471169 0.611138 -5.152303 -2.868604 -3.476672 -4.733335
## Fitur2  8.2896890 11.117015 9.520334  9.573506 11.529837  6.675324  9.623131
##          mode122   mode123    mode124   mode125    mode126   mode127   mode128
## Fitur1 -1.798640 -1.400831 -0.6852837 -3.806494 0.07375279 -1.152763 -1.140608
## Fitur2  6.970677  9.582343  8.6768135  6.903332 9.35769053  8.583540  6.445723
##           mode129   mode130   mode131   mode132   mode133   mode134    mode135
## Fitur1 -0.4463003 -5.558780 -1.459162 -2.828238 -4.110511 -3.834752 -0.8288998
## Fitur2  8.8326087  9.060214 10.438225 10.858009  7.609511 10.251538  8.1245116
##          mode136   mode137   mode138   mode139   mode140    mode141   mode142
## Fitur1 -3.707734 -4.527107 -5.971739 0.8953043 -3.966856 -0.2711767 -7.756309
## Fitur2 10.911122  7.716963  9.732288 8.6708098  7.258294  9.4895042 -3.215341
##          mode143   mode144   mode145   mode146   mode147   mode148   mode149
## Fitur1 -7.495571 -7.194343 -7.214110 -6.015276 -6.714206 -6.248325 -8.190521
## Fitur2 -8.725236 -6.912134 -5.363046 -8.943909 -6.719876 -7.288053 -7.791550
##          mode150   mode151   mode152   mode153   mode154   mode155   mode156
## Fitur1 -6.190335 -7.278548 -9.334864 -7.905011 -6.070479 -6.150717 -7.886172
## Fitur2 -5.530774 -8.159993 -5.385467 -6.194760 -8.147390 -6.618700 -5.687952
##          mode157   mode158   mode159   mode160   mode161   mode162   mode163
## Fitur1 -6.920670 -7.438674 -8.537268 -5.866330 -5.303303 -7.690021 -7.683977
## Fitur2 -6.031561 -6.552176 -5.977218 -5.884939 -6.696930 -6.518839 -5.349597
##          mode164   mode165   mode166   mode167   mode168   mode169   mode170
## Fitur1 -6.904344 -8.501720 -6.775373 -6.237470 -6.795144 -6.467247 -5.848537
## Fitur2 -7.713958 -8.559747 -5.718629 -4.982765 -6.990959 -7.621624 -7.203785
##          mode171   mode172   mode173   mode174   mode175   mode176   mode177
## Fitur1 -5.878616 -7.710136 -6.775917 -7.231053 -8.486923 -8.103045 -4.332590
## Fitur2 -6.420869 -7.859829 -7.425120 -4.599762 -7.670470 -7.181855 -6.235414
##          mode178   mode179   mode180   mode181   mode182   mode183   mode184
## Fitur1 -7.450757 -6.900155 -5.562566 -8.199018 -5.863396 -4.447534 -9.403568
## Fitur2 -7.536064 -5.371373 -7.940991 -9.036885 -5.090053 -7.225149 -6.015087
##          mode185   mode186   mode187   mode188   mode189   mode190   mode191
## Fitur1 -6.042186 -7.865211 -5.306675 -7.117603 -5.232170 -4.951804 -9.124182
## Fitur2 -4.641673 -7.282232 -7.321152 -9.100770 -4.725664 -5.700034 -6.365768
##          mode192   mode193   mode194   mode195   mode196   mode197   mode198
## Fitur1 -7.685967 -6.526779 -7.771699 -8.907607 -4.177243 -5.835612 -6.822340
## Fitur2 -4.926433 -5.950369 -8.638436 -6.944524 -4.998237 -4.810021 -8.695465
##          mode199   mode200   mode201   mode202   mode203   mode204   mode205
## Fitur1 -9.078994 -7.785329 -6.084431 -4.102419 -8.492495 -4.869330 -4.987893
## Fitur2 -5.740145 -8.899795 -6.301833 -7.748984 -6.908771 -8.584867 -6.810264
##          mode206   mode207   mode208   mode209
## Fitur1 -4.464521 -5.162378 -5.095699 -6.721470
## Fitur2 -4.456399 -5.252218 -8.344875 -9.148832
## 
## $labels
##    [1]   1   2   3   4   5   5   6   7   8   5   1   9  10   3  11  12   7  13
##   [19]  14  15   2  10   5   1   8   3   5  16  17  18  17  19  20  21  17  22
##   [37]  23  18  24   3  25   2  19  21  22  26  27  15  28  12  17  18   8  29
##   [55]  25  29  30   5  31   5   2  25  29   6  18   1  25  32  33  30  34   5
##   [73]  30  35  23  36  32  17  37  34  15   5  38  11  34  12   7   3  33  32
##   [91]   1   2  17   6  22  18  39  34   5   4   6   1  40   8  21  25  23  41
##  [109]  25   5   7   5  28   2  42  28  21  43  22   5  22  42  25  35  44   2
##  [127]  35  45  22   5  46   2  25   1  47  34   5  48  28  38  11  18   2   5
##  [145]  28   6   2   3   4  37   7  42   6   3   2  35   5  18   2   1   5  35
##  [163]   7  21  30   6  35  29   5  33   5  19  16  15   4   7  10  17  46   5
##  [181]  49  50  36  17  25  22  12  17  35  22  51   7   3  34  35  52  36  46
##  [199]   8  25  53  30   6  54  10  55  18  18  28  25  35  56   7   5  30  25
##  [217]   3   6   5  10  29  28  23  37  29   3  29  11  35   6   3  52  35   2
##  [235]   2   2  15   5   5  40  18   1  20   6  22  57  33   5  36  37  35   3
##  [253]  10   3   6  18  18  11  35   2  19  33  17  58  38   1  19  41  59   7
##  [271]  17  25   3  29   2  52  36  22  60   6   1  61   2  29  41  30  62  35
##  [289]  63  30  21  29  18   9  41   2  41  29   5  10  25  32   5  29   5   5
##  [307]  29  32  40   7   3  21  64  35  30  28  35   5  55   6  23   3   5   5
##  [325]  65  35  32  25  18   7  12  28  35  11  66  67  68  69  70  71  72  73
##  [343]  66  74  75  67  70  66  76  77  76  78  79  80  78  81  82  83  68  84
##  [361]  66  77  73  85  78  86  87  70  75  81  75  77  73  88  69  77  89  90
##  [379]  86  79  91  92  93  78  78  75  86  93  78  86  80  94  95  75  96  96
##  [397]  70  89  70  96  97  68  70  98  68  70  71  99  66 100 101  69  92  78
##  [415]  70  92 102 103  92  70 104 105 106  76  87  70  69  78  78  80  68  78
##  [433] 107  84  73  70 108 109  78  75  91 110  67  70 109  78 110  68  88  66
##  [451]  91  78  82 105  81 111  70  70  91  70  86  73 112  75  87  71  95  74
##  [469]  70  86  66  78  78 113 114  68  66 115  76  70 104 116  70  74  66 117
##  [487] 118 119  78  82  78 113 120 121  70  87  80  68  70 122 104  83  86  78
##  [505]  68  71  74  96  71  78  80  88  98  66  76  74  83  69  97  83  70  78
##  [523] 122  78 123  78  67  86  80  70 105  78  93  91  96  93  86  78  67  89
##  [541]  80 109  84  94 114  71  66 108 124 116 125 126  86  86  86 127 110 128
##  [559]  70  74  71  86 123  97  93 126  95  78  80  79 129 130  70  86 105 100
##  [577]  70  70 114 106 131  75  78 105  70  82 127  77 100 106 113  74 109 132
##  [595]  83  95  70  91  69  79  87 100 106  68  75 104 133 125  93  87 134  68
##  [613] 121  78  91  78  93 135  75 136  73  95  74 131  91  68  68  87 109  79
##  [631] 106  99  90 137  84 114 109 100  74  90 124  68 113  95  86 138 122  78
##  [649]  74  77  66 114  70 139  95  76  68  79  78  91 114  69  66 111 140  77
##  [667] 141 142 143 144 145 146 144 147 148 149 144 150 151 152 153 154 151 144
##  [685] 147 150 144 155 150 156 157 158 155 159 160 161 162 145 163 164 145 147
##  [703] 165 166 147 159 167 166 168 168 169 169 158 170 157 157 171 170 151 162
##  [721] 172 153 159 155 164 169 173 155 174 172 146 148 175 146 175 168 164 157
##  [739] 160 176 151 177 149 178 147 169 144 164 171 164 169 169 155 150 164 158
##  [757] 173 172 166 168 179 172 157 156 174 169 147 160 148 157 170 180 181 171
##  [775] 148 182 172 183 184 168 157 179 185 147 178 180 168 148 172 162 145 186
##  [793] 169 149 153 147 165 144 144 187 164 144 178 169 188 144 157 160 189 158
##  [811] 164 157 190 167 159 145 191 164 169 192 153 187 172 169 147 148 169 160
##  [829] 161 193 168 162 156 157 157 194 155 144 169 148 163 171 195 193 187 155
##  [847] 150 144 169 170 149 155 162 157 196 150 164 197 144 148 179 191 167 144
##  [865] 178 198 160 169 160 155 157 150 168 176 147 199 186 168 157 157 160 162
##  [883] 184 155 173 179 198 159 162 155 173 176 167 148 168 164 187 147 180 166
##  [901] 161 179 160 145 172 171 183 144 187 144 155 200 193 158 149 169 187 151
##  [919] 162 163 158 201 154 154 169 157 164 201 144 162 149 202 203 168 204 171
##  [937] 198 148 205 169 151 187 205 172 154 164 148 148 179 169 162 176 155 173
##  [955] 157 165 158 147 157 168 155 147 169 144 144 157 155 155 206 162 158 201
##  [973] 207 160 158 178 161 161 198 208 198 163 157 209 162 144 144 169 151 193
##  [991] 148 144 157 177 187 187 147 172 155 147
## 
## ukuran tiap cluster:
## Cluster
##   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19  20 
##  11  19  16   4  33  14  12   5   2   7   6   5   1   1   5   2  11  14   5   2 
##  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39  40 
##   7  10   5   1  15   1   1   9  13   9   1   6   5   6  18   5   4   3   1   3 
##  41  42  43  44  45  46  47  48  49  50  51  52  53  54  55  56  57  58  59  60 
##   5   3   1   1   1   3   1   1   1   1   1   3   1   1   2   1   1   1   1   1 
##  61  62  63  64  65  66  67  68  69  70  71  72  73  74  75  76  77  78  79  80 
##   1   1   1   1   1  13   5  15   7  29   7   1   6  10  10   6   7  30   6   8 
##  81  82  83  84  85  86  87  88  89  90  91  92  93  94  95  96  97  98  99 100 
##   3   4   5   4   1  15   7   3   3   3   9   4   7   2   7   5   3   2   2   5 
## 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 
##   1   1   1   4   5   5   1   2   6   3   2   1   4   6   1   2   1   1   1   1 
## 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 
##   2   3   2   2   2   2   2   1   1   1   2   1   1   1   1   1   1   1   1   1 
## 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 
##   1   1   1  22   6   3  15  13   6   7   7   1   4   4  17   3  21   9   5  10 
## 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 
##   5  12   4  13   3   4   4  12  21   4   6  10   5   2   2   4   2   5   6   3 
## 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 
##   1   1   2   2   1   2   9   1   1   1   2   1   4   1   1   1   1   5   1   1 
## 201 202 203 204 205 206 207 208 209 
##   3   1   1   1   2   1   1   1   1 
## 
## --- h = 0.4: 133 cluster (497.08 detik) ---
## $components
##           mode1    mode2     mode3     mode4    mode5    mode6    mode7
## Fitur1 5.905634 4.163254 4.5283680 5.2095188 4.700750 5.708768 4.625958
## Fitur2 2.890752 1.802808 0.4346715 0.8499062 1.669928 2.082461 2.747359
##           mode8    mode9   mode10   mode11   mode12   mode13   mode14    mode15
## Fitur1 6.557587 6.949296 3.277582 5.356263 2.044043 2.231896 6.059775 2.9469295
## Fitur2 1.684571 2.363977 3.139695 3.479995 1.167636 2.763349 1.215677 0.9415619
##          mode16   mode17    mode18   mode19   mode20   mode21   mode22   mode23
## Fitur1 5.197546 5.853376 4.0590248 3.413184 4.238188 2.264776 4.789730 3.891612
## Fitur2 1.611477 3.890655 0.7257598 2.188667 3.430200 3.217093 3.390263 4.412879
##          mode24   mode25   mode26   mode27   mode28    mode29    mode30
## Fitur1 4.459539 5.117496 1.707578 3.567242 3.746015 5.1634425 3.7243828
## Fitur2 2.338305 2.791558 2.499067 1.367033 2.652534 0.2120218 0.5764522
##            mode31   mode32        mode33   mode34   mode35   mode36     mode37
## Fitur1  4.7068890 3.572025  3.697015e+00 7.401830 4.738402 2.675460 5.77506943
## Fitur2 -0.2143296 4.020270 -1.049616e-05 1.749126 5.017063 4.097584 0.06223859
##           mode38   mode39   mode40   mode41   mode42   mode43   mode44   mode45
## Fitur1 5.8864748 4.852170 4.108785 4.864732 6.738001 6.764744 2.041760 6.061720
## Fitur2 0.5461079 4.240447 4.039988 5.177867 3.368431 2.975881 2.979597 4.179303
##          mode46   mode47    mode48    mode49    mode50    mode51    mode52
## Fitur1 7.143315 2.598224  3.665641 -3.784084 -2.845908 -1.939951 -2.003966
## Fitur2 2.999893 1.404295 -1.017933  9.660904  9.234309  9.235804  7.878434
##           mode53    mode54    mode55    mode56    mode57    mode58    mode59
## Fitur1 -2.382470 -3.618991 -1.953607 -3.537512 -1.893498 -1.559573 -3.178964
## Fitur2  8.414936  8.951827  5.971526  8.203152  8.640154  7.275506  7.727683
##           mode60    mode61    mode62    mode63    mode64    mode65    mode66
## Fitur1 -2.521192 -2.803184 -3.274171 -3.671902 -4.219166 -2.924288 -2.735772
## Fitur2 10.593518  9.983185 10.602616  8.350719  8.846793 10.428283  6.374512
##            mode67    mode68    mode69    mode70    mode71    mode72    mode73
## Fitur1 -0.8922341 -1.738109 -1.237824 -1.245352 -1.924677 -2.790183 -4.853132
## Fitur2  9.5895751  8.143199  9.269210  7.815755 10.449699  7.447379  6.866624
##           mode74    mode75    mode76     mode77    mode78    mode79   mode80
## Fitur1 -4.776874 -2.421456 -2.969747 -0.8318485 -4.862544 -1.912733 -1.34286
## Fitur2  8.027817  7.501691 11.517369 10.2772076  8.699512  7.461891 10.03835
##           mode81    mode82    mode83    mode84    mode85     mode86   mode87
## Fitur1 0.6077382 -5.118976 -3.526005 -4.737953 -1.766747 -0.7293976 -3.80263
## Fitur2 9.5196272  9.579321  6.721781  9.616408  7.039805  8.7139250  6.90830
##            mode88    mode89    mode90    mode91    mode92    mode93    mode94
## Fitur1 0.06158277 -1.140633 -5.558715 -5.971738 0.8953042 -3.959804 -7.756309
## Fitur2 9.36146134  6.445742  9.060286  9.732286 8.6708099  7.245371 -3.215341
##           mode95    mode96    mode97    mode98    mode99   mode100   mode101
## Fitur1 -7.240890 -7.189106 -7.165101 -6.014515 -6.752953 -6.439552 -8.215106
## Fitur2 -8.128388 -6.913440 -5.369222 -8.943293 -6.751657 -7.584224 -7.777631
##          mode102   mode103   mode104   mode105   mode106   mode107   mode108
## Fitur1 -6.156728 -9.329517 -6.124716 -7.876715 -6.919176 -8.518383 -5.836968
## Fitur2 -5.533051 -5.393308 -6.576546 -5.708989 -6.056061 -5.965541 -5.875261
##          mode109   mode110   mode111   mode112   mode113   mode114   mode115
## Fitur1 -5.358183 -8.526474 -6.247163 -7.678696 -7.239340 -7.916264 -4.332593
## Fitur2 -6.739604 -8.536988 -4.984643 -7.809691 -4.585419 -7.285549 -6.235414
##          mode116   mode117   mode118   mode119   mode120   mode121   mode122
## Fitur1 -7.488120 -5.579731 -8.192491 -4.447830 -9.395184 -5.320729 -6.831641
## Fitur2 -7.562363 -7.859262 -9.029277 -7.224976 -6.017755 -7.329338 -8.693520
##          mode123   mode124   mode125   mode126   mode127   mode128   mode129
## Fitur1 -5.232370 -9.129072 -8.893100 -4.177361 -9.105793 -4.103068 -4.905129
## Fitur2 -4.727267 -6.359738 -6.942723 -4.998016 -5.754065 -7.747949 -8.546912
##          mode130   mode131   mode132   mode133
## Fitur1 -4.464404 -5.164487 -5.062047 -6.754621
## Fitur2 -4.456621 -5.263256 -8.380852 -9.101493
## 
## $labels
##    [1]   1   2   3   4   5   5   6   7   8   5   1   9  10   3   5  11   7  12
##   [19]  13  14   2  10   5   1   8   3   5  15  16   2  16  16  17  18  16  19
##   [37]  20   2  21   3  22   5  16  18  19  11  23  14  24  11   5   2   8  25
##   [55]  22  25   6   5  26   5   2  22  25   6   2   1  22  16   6   6  27   5
##   [73]   6  28  20  29  16  16  30  27  14   5  31   5  27  11   7   3   6  16
##   [91]   1   2  16   6  19   2  32  27   5   4   6   1  33   8  18  22  20  24
##  [109]  22   5   7   5  24   2  19  24  18  34  19   5  19  19  22  28  35   5
##  [127]  28  36  28   5   4   2  22   1  37  27   5  38  24  31   5   2   2   5
##  [145]  24   6   2   3   4  30   7  19   6   3   2  28   5   2   2   1   5  28
##  [163]   7  18   6   6  28  25   5   6   5  16  15  14   4   7  10  16   4   5
##  [181]  39  40  29   5  22  19  11  16  28  19  41   7   3  27  28  37  29   4
##  [199]   8  22  19   5   6   8  10  18   2   2  24  22  28  42   7   5   6  22
##  [217]   3   6   5  28  25  24  20  30  25   3  25   5  28   6   3  37  28   2
##  [235]   5   2  14   5   5  33   2   1  17   6  19  43   6   5  29  18  28   3
##  [253]  10   3   6   2   2   5  28   2  16   6  16  10  31   1  16  24  44   7
##  [271]  16  22   3  25   2  37  29  19  45   6   1  10   2  25   5   6  46  28
##  [289]  47   5   5  25   2   9  24   2  24  25   5  10  22  16   5  25   5   5
##  [307]  25  16  33   7   3  18  48  28   6  24  28   5  18   6  20   3   5   5
##  [325]  14  28  16  22   2   7  11  24  28   5  49  50  51  52  53  54  55  56
##  [343]  49  57  54  50  53  49  58  59  58  50  50  60  50  61  62  63  51  56
##  [361]  49  59  56  64  50  50  50  53  54  65  54  59  56  56  52  59  66  67
##  [379]  50  50  68  59  69  50  50  54  50  69  50  50  60  70  71  54  50  50
##  [397]  53  66  53  50  72  51  53  62  51  53  54  69  49  64  73  52  59  50
##  [415]  53  59  56  64  59  53  74  75  50  58  50  53  52  50  50  50  51  50
##  [433]  76  56  56  53  69  54  50  54  68  61  50  53  49  50  61  51  56  49
##  [451]  68  50  62  75  65  77  53  53  68  53  50  56  78  54  53  54  71  57
##  [469]  53  50  54  50  50  79  80  51  49  69  58  53  74  62  53  57  49  81
##  [487]  82  76  50  62  50  79  83  84  53  50  60  51  53  85  74  63  50  50
##  [505]  51  54  57  50  54  50  60  56  62  49  58  57  56  52  72  63  53  50
##  [523]  85  50  69  50  50  50  60  53  75  50  69  68  50  69  50  50  50  66
##  [541]  60  54  56  70  80  54  49  69  86  62  87  88  50  50  50  69  61  89
##  [559]  53  53  54  50  69  72  69  88  71  50  60  50  86  90  53  50  75  64
##  [577]  53  53  80  50  71  54  50  75  53  62  69  59  64  50  79  57  54  60
##  [595]  63  71  53  68  52  50  50  64  50  51  54  74  56  87  69  50  49  51
##  [613]  84  50  68  50  69  69  54  62  56  71  57  80  68  57  51  53  54  50
##  [631]  50  69  67  74  56  80  54  64  57  67  86  51  79  71  50  91  85  50
##  [649]  57  59  49  80  53  92  71  58  51  50  50  68  80  52  49  77  93  59
##  [667]  88  94  95  96  97  98  96  99 100 101  96 102  95 103  96 100  95  96
##  [685]  99 102  96 104 102 105 106  96 104 107 108 109  96  97  97 100  97  99
##  [703] 110 106  99 107 111 106  96  99 100 100  96 100 106 106 104 100  95  96
##  [721] 112  96 107  99 100 100  96  99 113 112  98 100 101  98 101  96 100 106
##  [739] 108 114  95 115 101 116  99 100  96 100 104 100 100 100  99 102 100  96
##  [757] 100 112 106  96  97 112 106 105 113 100  99 108 100 106 100 117 118 104
##  [775] 100 102 112 119 120  96 106  97 111  99 112 117  96 100 112  96  97 114
##  [793] 100 101  96  99 110  96  96 121 100  96 116 100 122  96 106 108 123  96
##  [811] 100 106 108 111 107  97 124 100 100  97  96 121 112 100  99 100 100 108
##  [829] 109 106  96  96 105 106 106  95 104  96 100 100  97 104 125 106 121 104
##  [847] 102  96 100 100 101 104  96 106 126 102 100 111  96 100  97 124 111  96
##  [865] 116 122 108 100 108 104 106 102  96 114  99 127 114  96 106 106 108  96
##  [883] 120 104 100  97 122 107  96 104 100 114 111 104  96 100 121  99 117 106
##  [901] 109  97 108  97 112 104 119  96 121  96 104  95 106  96 101 100 121  95
##  [919]  96  97  96 104 100 100 100 106 100 104  96  96 101 128 114  96 129 104
##  [937] 122 100 109 100  95 121 109 112 100 100 100 100  97 100  96 114 104 100
##  [955] 106 110  96  99 106  96 104  99 100  96  96 106 104 104 130  96  96 104
##  [973] 131 108  96 116 109 109 122 132 122  97 106 133  96  96  96 100  95 106
##  [991] 100  96 106 115 121 121  99 112 104  99
## 
## ukuran tiap cluster:
## Cluster
##   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19  20 
##  11  30  16   7  48  26  12   6   2   8   6   1   1   6   2  20   2   9  13   5 
##  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39  40 
##   1  15   1  13  13   1   6  20   5   3   3   1   3   1   1   1   4   1   1   1 
##  41  42  43  44  45  46  47  48  49  50  51  52  53  54  55  56  57  58  59  60 
##   1   1   1   1   1   1   1   1  14  72  14   7  32  23   1  16  10   6  11   8 
##  61  62  63  64  65  66  67  68  69  70  71  72  73  74  75  76  77  78  79  80 
##   4   9   4   7   2   3   3   9  17   2   8   3   1   5   5   2   2   1   4   7 
##  81  82  83  84  85  86  87  88  89  90  91  92  93  94  95  96  97  98  99 100 
##   1   1   1   2   3   3   2   3   1   1   1   1   1   1  10  59  17   3  19  58 
## 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 
##   8   8   1  24   3  29   5  11   7   3   6  11   2   7   2   4   3   1   2   2 
## 121 122 123 124 125 126 127 128 129 130 131 132 133 
##   9   6   1   2   1   1   1   1   1   1   1   1   1 
## 
## --- h = 1.9: 3 cluster (215.89 detik) ---
## $components
##           mode1     mode2     mode3
## Fitur1 4.634149 -2.693171 -6.778723
## Fitur2 1.961101  8.886893 -6.878164
## 
## $labels
##    [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
##   [38] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
##   [75] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
##  [112] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
##  [149] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
##  [186] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
##  [223] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
##  [260] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
##  [297] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
##  [334] 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
##  [371] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
##  [408] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
##  [445] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
##  [482] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
##  [519] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
##  [556] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
##  [593] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
##  [630] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
##  [667] 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
##  [704] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
##  [741] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
##  [778] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
##  [815] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
##  [852] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
##  [889] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
##  [926] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
##  [963] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
## [1000] 3
## 
## pusat cluster:
##       Fitur1 Fitur2
## mode1  4.634  1.961
## mode2 -2.693  8.887
## mode3 -6.779 -6.878
## ukuran tiap cluster:
## Cluster
##   1   2   3 
## 334 333 333 
## 
## --- h = 6: 3 cluster (44.30 detik) ---
## $components
##           mode1     mode2     mode3
## Fitur1 4.678572 -2.639221 -6.800434
## Fitur2 1.983716  8.890106 -6.824222
## 
## $labels
##    [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
##   [38] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
##   [75] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
##  [112] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
##  [149] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
##  [186] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
##  [223] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
##  [260] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
##  [297] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
##  [334] 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
##  [371] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
##  [408] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
##  [445] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
##  [482] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
##  [519] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
##  [556] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
##  [593] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
##  [630] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
##  [667] 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
##  [704] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
##  [741] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
##  [778] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
##  [815] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
##  [852] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
##  [889] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
##  [926] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
##  [963] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
## [1000] 3
## 
## pusat cluster:
##       Fitur1 Fitur2
## mode1  4.679  1.984
## mode2 -2.639  8.890
## mode3 -6.800 -6.824
## ukuran tiap cluster:
## Cluster
##   1   2   3 
## 334 333 333
par(mfrow = c(2, 2), mar = c(4.2, 4.2, 3.2, 1))
for (v in hasil_paket) gambar_hasil(v)

par(mfrow = c(1, 1), mar = c(5, 4, 4, 2) + 0.1)

# 5. Mean Shift manual (kernel Gaussian) dengan riwayat iterasi
mean_shift_riwayat <- function(data, h, max_iter = 150, tol = 1e-4) {
  P <- data
  riwayat <- list(P)                          # riwayat[[1]] = iterasi ke-0
  for (it in 1:max_iter) {
    d2 <- outer(P[, 1], data[, 1], "-")^2 + outer(P[, 2], data[, 2], "-")^2
    w  <- exp(-d2 / (2 * h^2))
    P_baru <- (w %*% data) / rowSums(w)
    geser  <- max(abs(P_baru - P))
    P <- P_baru
    riwayat[[length(riwayat) + 1]] <- P
    if (geser < tol) break
  }
  riwayat
}

batas_x <- c(-11, 8.5)
batas_y <- c(-12, 14)

siapkan_animasi <- function(h, max_iter = 150) {
  riwayat_asli <- mean_shift_riwayat(X, h, max_iter = max_iter)
  akhir   <- riwayat_asli[[length(riwayat_asli)]]
  iterasi <- length(riwayat_asli) - 1
  
  # frame antara agar gerakan halus bila konvergen cepat
  sub <- if (length(riwayat_asli) < 20) 4 else 1
  riwayat <- list()
  for (i in 1:(length(riwayat_asli) - 1)) {
    a_ <- riwayat_asli[[i]]; b_ <- riwayat_asli[[i + 1]]
    for (j in 0:(sub - 1)) riwayat[[length(riwayat) + 1]] <- a_ + (b_ - a_) * j / sub
  }
  riwayat[[length(riwayat) + 1]] <- akhir
  nf <- length(riwayat)
  
  # label cluster: single linkage, dipotong pada jarak 0.2
  label <- cutree(hclust(dist(akhir), method = "single"), h = 0.2)
  k <- max(label)
  
  # warna
  pastel <- palet_pastel(k)
  tua    <- gelapkan(pastel)
  warna  <- pastel[label]
  pusat  <- t(sapply(1:k, function(cl) colMeans(akhir[label == cl, , drop = FALSE])))
  if (k == 1) pusat <- matrix(pusat, nrow = 1)
  colnames(pusat) <- c("Fitur1", "Fitur2")
  
  # permukaan kepadatan
  gx <- seq(batas_x[1], batas_x[2], length.out = 130)
  gy <- seq(batas_y[1], batas_y[2], length.out = 130)
  ex <- exp(-outer(gx, X[, 1], "-")^2 / (2 * h^2))
  ey <- exp(-outer(gy, X[, 2], "-")^2 / (2 * h^2))
  kde <- ex %*% t(ey)                         # baris = gx, kolom = gy
  
  # lintasan setiap titik ke-12
  trail_idx <- seq(1, n, by = 12)
  jx <- sapply(riwayat, function(P) P[trail_idx, 1])
  jy <- sapply(riwayat, function(P) P[trail_idx, 2])
  
  # frame yang ditampilkan
  langkah <- max(1, ceiling(nf / 45))
  frames  <- sort(unique(c(seq(0, nf - 1, by = langkah), nf - 1)))
  frames  <- c(frames, rep(nf - 1, 10))
  
  list(h = h, riwayat = riwayat, nf = nf, sub = sub, iterasi = iterasi,
       k = k, label = label, akhir = akhir, warna = warna, pusat = pusat,
       tua = tua, gx = gx, gy = gy, kde = kde, jx = jx, jy = jy, frames = frames)
}

# Menggambar satu frame
gambar_frame <- function(ob, f) {
  par(mar = c(4.2, 4.2, 3.6, 1))
  terakhir <- (f == ob$nf - 1)
  judul <- paste0("Mean Shift (kernel Gaussian), h = ", ob$h,
                  "\nIterasi ke-", min(f %/% ob$sub, ob$iterasi),
                  if (terakhir) paste0("  |  ", ob$k, " cluster") else "")
  plot(NA, xlim = batas_x, ylim = batas_y, xlab = "Fitur 1", ylab = "Fitur 2",
       main = judul, font.main = 2, cex.main = 1)
  
  # kontur kepadatan
  tingkat <- seq(min(ob$kde), max(ob$kde), length.out = 15)
  .filled.contour(ob$gx, ob$gy, ob$kde, levels = tingkat,
                  col = adjustcolor(colorRampPalette(c("#f7fbff", "#08306b"))(14),
                                    alpha.f = 0.35))
  contour(ob$gx, ob$gy, ob$kde, levels = tingkat, add = TRUE, drawlabels = FALSE,
          col = adjustcolor("white", 0.6), lwd = 0.4)
  
  # data asli (diam) dan lintasan
  points(X[, 1], X[, 2], pch = 16, cex = 0.5, col = "#bdbdbd")
  if (f >= 1) {
    matlines(t(ob$jx[, 1:(f + 1)]), t(ob$jy[, 1:(f + 1)]),
             lty = 1, lwd = 0.6, col = adjustcolor("gray40", 0.55))
  }
  
  # titik yang bergeser
  P <- ob$riwayat[[f + 1]]
  points(P[, 1], P[, 2], pch = 21, bg = ob$warna, col = "#555555", cex = 0.9, lwd = 0.5)
  
  isi_legend <- c("Data asli (diam)", "Titik yang bergeser")
  pch_l <- c(16, 21); bg_l <- c(NA, "gray85"); col_l <- c("#bdbdbd", "#555555")
  if (terakhir) {
    points(ob$pusat[, 1], ob$pusat[, 2], pch = 23, bg = ob$tua, col = "black",
           cex = 2.2, lwd = 1.4)
    isi_legend <- c(isi_legend, "Pusat cluster")
    pch_l <- c(pch_l, 23); bg_l <- c(bg_l, "gray50"); col_l <- c(col_l, "black")
  }
  legend("topright", legend = isi_legend, pch = pch_l, pt.bg = bg_l, col = col_l,
         cex = 0.75, bg = adjustcolor("white", 0.85))
}

# Hitung hasil manual untuk semua h (belum membuat GIF)
hasil_manual <- lapply(H_LIST, siapkan_animasi, max_iter = MAX_ITER)
names(hasil_manual) <- H_LIST

cat("\n=== 5. Mean Shift manual, semua h ===\n")
## 
## === 5. Mean Shift manual, semua h ===
ringkas_manual <- data.frame(
  h              = H_LIST,
  iterasi        = sapply(hasil_manual, function(v) v$iterasi),
  jumlah_cluster = sapply(hasil_manual, function(v) v$k),
  konvergen      = sapply(hasil_manual, function(v)
    if (v$iterasi < MAX_ITER) "ya" else "belum (batas iterasi)"),
  row.names = NULL
)
print(ringkas_manual)
##     h iterasi jumlah_cluster konvergen
## 1 0.3     140             17        ya
## 2 0.4      69              5        ya
## 3 1.9       8              3        ya
## 4 6.0      50              1        ya
for (v in hasil_manual) {
  cat(sprintf("\nh = %s: %d iterasi, %d cluster\n", v$h, v$iterasi, v$k))
  if (v$k <= 6) {
    cat("pusat cluster:\n"); print(round(v$pusat, 3))
  }
}
## 
## h = 0.3: 140 iterasi, 17 cluster
## 
## h = 0.4: 69 iterasi, 5 cluster
## pusat cluster:
##      Fitur1 Fitur2
## [1,]  4.531  1.800
## [2,]  4.773  4.948
## [3,] -2.726  8.971
## [4,] -7.754 -3.223
## [5,] -6.891 -6.862
## 
## h = 1.9: 8 iterasi, 3 cluster
## pusat cluster:
##      Fitur1 Fitur2
## [1,]  4.681  1.979
## [2,] -2.644  8.894
## [3,] -6.799 -6.830
## 
## h = 6: 50 iterasi, 1 cluster
## pusat cluster:
##      Fitur1 Fitur2
## [1,]  0.823  4.598
# 6. Perbandingan library vs manual
cat("\n=== 6. Perbandingan library vs manual ===\n")
## 
## === 6. Perbandingan library vs manual ===
perbandingan <- data.frame(
  h                  = H_LIST,
  cluster_paket      = sapply(hasil_paket,  function(v) v$k),
  cluster_manual     = sapply(hasil_manual, function(v) v$k),
  ARI_paket_vs_manual = sapply(as.character(H_LIST), function(h)
    round(ari(hasil_paket[[h]]$labels, hasil_manual[[h]]$label), 4)),
  selisih_pusat_maks = sapply(as.character(H_LIST), function(h)
    round(jarak_pusat_terdekat(hasil_paket[[h]]$pusat, hasil_manual[[h]]$pusat), 4)),
  row.names = NULL
)
print(perbandingan)
##     h cluster_paket cluster_manual ARI_paket_vs_manual selisih_pusat_maks
## 1 0.3           209             17              0.0517             2.9416
## 2 0.4           133              5              0.0937             3.6342
## 3 1.9             3              3              1.0000             0.0525
## 4 6.0             3              1              0.0000            13.7322
cat("\nKecocokan dengan kelompok asli (ARI):\n")
## 
## Kecocokan dengan kelompok asli (ARI):
print(data.frame(
  h          = H_LIST,
  ARI_paket  = sapply(hasil_paket,  function(v) round(ari(v$labels, y_asli), 4)),
  ARI_manual = sapply(hasil_manual, function(v) round(ari(v$label,  y_asli), 4)),
  row.names  = NULL
))
##     h ARI_paket ARI_manual
## 1 0.3    0.0398     0.8577
## 2 0.4    0.0929     0.9955
## 3 1.9    1.0000     1.0000
## 4 6.0    1.0000     0.0000
cat("\nPusat cluster h = 1.9 (paket vs manual vs pusat asli):\n")
## 
## Pusat cluster h = 1.9 (paket vs manual vs pusat asli):
cat("paket:\n");  print(round(hasil_paket[["1.9"]]$pusat, 3))
## paket:
##       Fitur1 Fitur2
## mode1  4.634  1.961
## mode2 -2.693  8.887
## mode3 -6.779 -6.878
cat("manual:\n"); print(round(hasil_manual[["1.9"]]$pusat, 3))
## manual:
##      Fitur1 Fitur2
## [1,]  4.681  1.979
## [2,] -2.644  8.894
## [3,] -6.799 -6.830
cat("pusat asli:\n"); print(pusat_asli)
## pusat asli:
##      [,1] [,2]
## [1,]  4.7  2.0
## [2,] -2.6  8.9
## [3,] -6.8 -6.8
# Gambar akhir manual untuk semua h
par(mfrow = c(2, 2))
for (v in hasil_manual) gambar_frame(v, v$nf - 1)

par(mfrow = c(1, 1))

# 7. Animasi GIF (gerakan titik menuju mode)
buat_gif <- function(ob, nama_file) {
  save_gif({
    for (f in ob$frames) gambar_frame(ob, f)
  }, gif_file = nama_file, width = 648, height = 558,
  delay = 1 / 7, res = 90, progress = FALSE)
}

for (h in H_LIST) {
  ob   <- hasil_manual[[as.character(h)]]
  path <- file.path(OUT_DIR, paste0("meanshift_h", format(h, nsmall = 1), ".gif"))
  buat_gif(ob, path)
  hasil_manual[[as.character(h)]]$path <- path
  cat(sprintf("GIF selesai h = %s: %d iterasi, %d cluster -> %s\n",
              h, ob$iterasi, ob$k, path))
}
## GIF selesai h = 0.3: 140 iterasi, 17 cluster -> hasil_gif/meanshift_h0.3.gif
## GIF selesai h = 0.4: 69 iterasi, 5 cluster -> hasil_gif/meanshift_h0.4.gif
## GIF selesai h = 1.9: 8 iterasi, 3 cluster -> hasil_gif/meanshift_h1.9.gif
## GIF selesai h = 6: 50 iterasi, 1 cluster -> hasil_gif/meanshift_h6.0.gif
# 8. Menampilkan GIF yang BERGERAK
tampilkan_gif <- function(daftar_path) {
  tmp <- file.path(tempdir(), "gif_meanshift")
  dir.create(tmp, showWarnings = FALSE)
  file.copy(daftar_path, tmp, overwrite = TRUE)
  img <- sprintf('<div style="width:49%%;display:inline-block"><img src="%s" style="width:100%%"></div>',
                 basename(daftar_path))
  html <- file.path(tmp, "index.html")
  writeLines(c("<html><body style='margin:4px;font-family:sans-serif'>", img,
               "</body></html>"), html)
  viewer <- getOption("viewer")
  if (!is.null(viewer)) viewer(html) else browseURL(html)
}
tampilkan_gif(sapply(hasil_manual, function(v) v$path))