Imput Library

library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.4.2
## Warning: package 'ggplot2' was built under R version 4.4.3
## Warning: package 'tibble' was built under R version 4.4.2
## Warning: package 'tidyr' was built under R version 4.4.2
## Warning: package 'readr' was built under R version 4.4.2
## Warning: package 'purrr' was built under R version 4.4.2
## Warning: package 'dplyr' was built under R version 4.4.3
## Warning: package 'forcats' was built under R version 4.4.2
## Warning: package 'lubridate' was built under R version 4.4.2
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.5
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ ggplot2   4.0.0     ✔ tibble    3.2.1
## ✔ lubridate 1.9.4     ✔ tidyr     1.3.1
## ✔ purrr     1.0.2     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(readxl)
## Warning: package 'readxl' was built under R version 4.4.3
library(lubridate)
library(caret)
## Warning: package 'caret' was built under R version 4.4.3
## Loading required package: lattice
## 
## Attaching package: 'caret'
## 
## The following object is masked from 'package:purrr':
## 
##     lift
library(factoextra)
## Warning: package 'factoextra' was built under R version 4.4.3
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
library(cluster)  
## Warning: package 'cluster' was built under R version 4.4.3
library(clusterCrit)
## Warning: package 'clusterCrit' was built under R version 4.4.3

#Import Data

#import data dari csv
data <- read.csv("C:/Users/LENOVO/Downloads/IRIS.csv")
data
##     sepal_length sepal_width petal_length petal_width         species
## 1            5.1         3.5          1.4         0.2     Iris-setosa
## 2            4.9         3.0          1.4         0.2     Iris-setosa
## 3            4.7         3.2          1.3         0.2     Iris-setosa
## 4            4.6         3.1          1.5         0.2     Iris-setosa
## 5            5.0         3.6          1.4         0.2     Iris-setosa
## 6            5.4         3.9          1.7         0.4     Iris-setosa
## 7            4.6         3.4          1.4         0.3     Iris-setosa
## 8            5.0         3.4          1.5         0.2     Iris-setosa
## 9            4.4         2.9          1.4         0.2     Iris-setosa
## 10           4.9         3.1          1.5         0.1     Iris-setosa
## 11           5.4         3.7          1.5         0.2     Iris-setosa
## 12           4.8         3.4          1.6         0.2     Iris-setosa
## 13           4.8         3.0          1.4         0.1     Iris-setosa
## 14           4.3         3.0          1.1         0.1     Iris-setosa
## 15           5.8         4.0          1.2         0.2     Iris-setosa
## 16           5.7         4.4          1.5         0.4     Iris-setosa
## 17           5.4         3.9          1.3         0.4     Iris-setosa
## 18           5.1         3.5          1.4         0.3     Iris-setosa
## 19           5.7         3.8          1.7         0.3     Iris-setosa
## 20           5.1         3.8          1.5         0.3     Iris-setosa
## 21           5.4         3.4          1.7         0.2     Iris-setosa
## 22           5.1         3.7          1.5         0.4     Iris-setosa
## 23           4.6         3.6          1.0         0.2     Iris-setosa
## 24           5.1         3.3          1.7         0.5     Iris-setosa
## 25           4.8         3.4          1.9         0.2     Iris-setosa
## 26           5.0         3.0          1.6         0.2     Iris-setosa
## 27           5.0         3.4          1.6         0.4     Iris-setosa
## 28           5.2         3.5          1.5         0.2     Iris-setosa
## 29           5.2         3.4          1.4         0.2     Iris-setosa
## 30           4.7         3.2          1.6         0.2     Iris-setosa
## 31           4.8         3.1          1.6         0.2     Iris-setosa
## 32           5.4         3.4          1.5         0.4     Iris-setosa
## 33           5.2         4.1          1.5         0.1     Iris-setosa
## 34           5.5         4.2          1.4         0.2     Iris-setosa
## 35           4.9         3.1          1.5         0.1     Iris-setosa
## 36           5.0         3.2          1.2         0.2     Iris-setosa
## 37           5.5         3.5          1.3         0.2     Iris-setosa
## 38           4.9         3.1          1.5         0.1     Iris-setosa
## 39           4.4         3.0          1.3         0.2     Iris-setosa
## 40           5.1         3.4          1.5         0.2     Iris-setosa
## 41           5.0         3.5          1.3         0.3     Iris-setosa
## 42           4.5         2.3          1.3         0.3     Iris-setosa
## 43           4.4         3.2          1.3         0.2     Iris-setosa
## 44           5.0         3.5          1.6         0.6     Iris-setosa
## 45           5.1         3.8          1.9         0.4     Iris-setosa
## 46           4.8         3.0          1.4         0.3     Iris-setosa
## 47           5.1         3.8          1.6         0.2     Iris-setosa
## 48           4.6         3.2          1.4         0.2     Iris-setosa
## 49           5.3         3.7          1.5         0.2     Iris-setosa
## 50           5.0         3.3          1.4         0.2     Iris-setosa
## 51           7.0         3.2          4.7         1.4 Iris-versicolor
## 52           6.4         3.2          4.5         1.5 Iris-versicolor
## 53           6.9         3.1          4.9         1.5 Iris-versicolor
## 54           5.5         2.3          4.0         1.3 Iris-versicolor
## 55           6.5         2.8          4.6         1.5 Iris-versicolor
## 56           5.7         2.8          4.5         1.3 Iris-versicolor
## 57           6.3         3.3          4.7         1.6 Iris-versicolor
## 58           4.9         2.4          3.3         1.0 Iris-versicolor
## 59           6.6         2.9          4.6         1.3 Iris-versicolor
## 60           5.2         2.7          3.9         1.4 Iris-versicolor
## 61           5.0         2.0          3.5         1.0 Iris-versicolor
## 62           5.9         3.0          4.2         1.5 Iris-versicolor
## 63           6.0         2.2          4.0         1.0 Iris-versicolor
## 64           6.1         2.9          4.7         1.4 Iris-versicolor
## 65           5.6         2.9          3.6         1.3 Iris-versicolor
## 66           6.7         3.1          4.4         1.4 Iris-versicolor
## 67           5.6         3.0          4.5         1.5 Iris-versicolor
## 68           5.8         2.7          4.1         1.0 Iris-versicolor
## 69           6.2         2.2          4.5         1.5 Iris-versicolor
## 70           5.6         2.5          3.9         1.1 Iris-versicolor
## 71           5.9         3.2          4.8         1.8 Iris-versicolor
## 72           6.1         2.8          4.0         1.3 Iris-versicolor
## 73           6.3         2.5          4.9         1.5 Iris-versicolor
## 74           6.1         2.8          4.7         1.2 Iris-versicolor
## 75           6.4         2.9          4.3         1.3 Iris-versicolor
## 76           6.6         3.0          4.4         1.4 Iris-versicolor
## 77           6.8         2.8          4.8         1.4 Iris-versicolor
## 78           6.7         3.0          5.0         1.7 Iris-versicolor
## 79           6.0         2.9          4.5         1.5 Iris-versicolor
## 80           5.7         2.6          3.5         1.0 Iris-versicolor
## 81           5.5         2.4          3.8         1.1 Iris-versicolor
## 82           5.5         2.4          3.7         1.0 Iris-versicolor
## 83           5.8         2.7          3.9         1.2 Iris-versicolor
## 84           6.0         2.7          5.1         1.6 Iris-versicolor
## 85           5.4         3.0          4.5         1.5 Iris-versicolor
## 86           6.0         3.4          4.5         1.6 Iris-versicolor
## 87           6.7         3.1          4.7         1.5 Iris-versicolor
## 88           6.3         2.3          4.4         1.3 Iris-versicolor
## 89           5.6         3.0          4.1         1.3 Iris-versicolor
## 90           5.5         2.5          4.0         1.3 Iris-versicolor
## 91           5.5         2.6          4.4         1.2 Iris-versicolor
## 92           6.1         3.0          4.6         1.4 Iris-versicolor
## 93           5.8         2.6          4.0         1.2 Iris-versicolor
## 94           5.0         2.3          3.3         1.0 Iris-versicolor
## 95           5.6         2.7          4.2         1.3 Iris-versicolor
## 96           5.7         3.0          4.2         1.2 Iris-versicolor
## 97           5.7         2.9          4.2         1.3 Iris-versicolor
## 98           6.2         2.9          4.3         1.3 Iris-versicolor
## 99           5.1         2.5          3.0         1.1 Iris-versicolor
## 100          5.7         2.8          4.1         1.3 Iris-versicolor
## 101          6.3         3.3          6.0         2.5  Iris-virginica
## 102          5.8         2.7          5.1         1.9  Iris-virginica
## 103          7.1         3.0          5.9         2.1  Iris-virginica
## 104          6.3         2.9          5.6         1.8  Iris-virginica
## 105          6.5         3.0          5.8         2.2  Iris-virginica
## 106          7.6         3.0          6.6         2.1  Iris-virginica
## 107          4.9         2.5          4.5         1.7  Iris-virginica
## 108          7.3         2.9          6.3         1.8  Iris-virginica
## 109          6.7         2.5          5.8         1.8  Iris-virginica
## 110          7.2         3.6          6.1         2.5  Iris-virginica
## 111          6.5         3.2          5.1         2.0  Iris-virginica
## 112          6.4         2.7          5.3         1.9  Iris-virginica
## 113          6.8         3.0          5.5         2.1  Iris-virginica
## 114          5.7         2.5          5.0         2.0  Iris-virginica
## 115          5.8         2.8          5.1         2.4  Iris-virginica
## 116          6.4         3.2          5.3         2.3  Iris-virginica
## 117          6.5         3.0          5.5         1.8  Iris-virginica
## 118          7.7         3.8          6.7         2.2  Iris-virginica
## 119          7.7         2.6          6.9         2.3  Iris-virginica
## 120          6.0         2.2          5.0         1.5  Iris-virginica
## 121          6.9         3.2          5.7         2.3  Iris-virginica
## 122          5.6         2.8          4.9         2.0  Iris-virginica
## 123          7.7         2.8          6.7         2.0  Iris-virginica
## 124          6.3         2.7          4.9         1.8  Iris-virginica
## 125          6.7         3.3          5.7         2.1  Iris-virginica
## 126          7.2         3.2          6.0         1.8  Iris-virginica
## 127          6.2         2.8          4.8         1.8  Iris-virginica
## 128          6.1         3.0          4.9         1.8  Iris-virginica
## 129          6.4         2.8          5.6         2.1  Iris-virginica
## 130          7.2         3.0          5.8         1.6  Iris-virginica
## 131          7.4         2.8          6.1         1.9  Iris-virginica
## 132          7.9         3.8          6.4         2.0  Iris-virginica
## 133          6.4         2.8          5.6         2.2  Iris-virginica
## 134          6.3         2.8          5.1         1.5  Iris-virginica
## 135          6.1         2.6          5.6         1.4  Iris-virginica
## 136          7.7         3.0          6.1         2.3  Iris-virginica
## 137          6.3         3.4          5.6         2.4  Iris-virginica
## 138          6.4         3.1          5.5         1.8  Iris-virginica
## 139          6.0         3.0          4.8         1.8  Iris-virginica
## 140          6.9         3.1          5.4         2.1  Iris-virginica
## 141          6.7         3.1          5.6         2.4  Iris-virginica
## 142          6.9         3.1          5.1         2.3  Iris-virginica
## 143          5.8         2.7          5.1         1.9  Iris-virginica
## 144          6.8         3.2          5.9         2.3  Iris-virginica
## 145          6.7         3.3          5.7         2.5  Iris-virginica
## 146          6.7         3.0          5.2         2.3  Iris-virginica
## 147          6.3         2.5          5.0         1.9  Iris-virginica
## 148          6.5         3.0          5.2         2.0  Iris-virginica
## 149          6.2         3.4          5.4         2.3  Iris-virginica
## 150          5.9         3.0          5.1         1.8  Iris-virginica
summary(data)
##   sepal_length    sepal_width     petal_length    petal_width   
##  Min.   :4.300   Min.   :2.000   Min.   :1.000   Min.   :0.100  
##  1st Qu.:5.100   1st Qu.:2.800   1st Qu.:1.600   1st Qu.:0.300  
##  Median :5.800   Median :3.000   Median :4.350   Median :1.300  
##  Mean   :5.843   Mean   :3.054   Mean   :3.759   Mean   :1.199  
##  3rd Qu.:6.400   3rd Qu.:3.300   3rd Qu.:5.100   3rd Qu.:1.800  
##  Max.   :7.900   Max.   :4.400   Max.   :6.900   Max.   :2.500  
##    species         
##  Length:150        
##  Class :character  
##  Mode  :character  
##                    
##                    
## 
str(data)
## 'data.frame':    150 obs. of  5 variables:
##  $ sepal_length: num  5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
##  $ sepal_width : num  3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
##  $ petal_length: num  1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
##  $ petal_width : num  0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
##  $ species     : chr  "Iris-setosa" "Iris-setosa" "Iris-setosa" "Iris-setosa" ...
# cek dan bersihkan data (misal : hapus baris dgn NA)
data1 <- na.omit(data)
data1
##     sepal_length sepal_width petal_length petal_width         species
## 1            5.1         3.5          1.4         0.2     Iris-setosa
## 2            4.9         3.0          1.4         0.2     Iris-setosa
## 3            4.7         3.2          1.3         0.2     Iris-setosa
## 4            4.6         3.1          1.5         0.2     Iris-setosa
## 5            5.0         3.6          1.4         0.2     Iris-setosa
## 6            5.4         3.9          1.7         0.4     Iris-setosa
## 7            4.6         3.4          1.4         0.3     Iris-setosa
## 8            5.0         3.4          1.5         0.2     Iris-setosa
## 9            4.4         2.9          1.4         0.2     Iris-setosa
## 10           4.9         3.1          1.5         0.1     Iris-setosa
## 11           5.4         3.7          1.5         0.2     Iris-setosa
## 12           4.8         3.4          1.6         0.2     Iris-setosa
## 13           4.8         3.0          1.4         0.1     Iris-setosa
## 14           4.3         3.0          1.1         0.1     Iris-setosa
## 15           5.8         4.0          1.2         0.2     Iris-setosa
## 16           5.7         4.4          1.5         0.4     Iris-setosa
## 17           5.4         3.9          1.3         0.4     Iris-setosa
## 18           5.1         3.5          1.4         0.3     Iris-setosa
## 19           5.7         3.8          1.7         0.3     Iris-setosa
## 20           5.1         3.8          1.5         0.3     Iris-setosa
## 21           5.4         3.4          1.7         0.2     Iris-setosa
## 22           5.1         3.7          1.5         0.4     Iris-setosa
## 23           4.6         3.6          1.0         0.2     Iris-setosa
## 24           5.1         3.3          1.7         0.5     Iris-setosa
## 25           4.8         3.4          1.9         0.2     Iris-setosa
## 26           5.0         3.0          1.6         0.2     Iris-setosa
## 27           5.0         3.4          1.6         0.4     Iris-setosa
## 28           5.2         3.5          1.5         0.2     Iris-setosa
## 29           5.2         3.4          1.4         0.2     Iris-setosa
## 30           4.7         3.2          1.6         0.2     Iris-setosa
## 31           4.8         3.1          1.6         0.2     Iris-setosa
## 32           5.4         3.4          1.5         0.4     Iris-setosa
## 33           5.2         4.1          1.5         0.1     Iris-setosa
## 34           5.5         4.2          1.4         0.2     Iris-setosa
## 35           4.9         3.1          1.5         0.1     Iris-setosa
## 36           5.0         3.2          1.2         0.2     Iris-setosa
## 37           5.5         3.5          1.3         0.2     Iris-setosa
## 38           4.9         3.1          1.5         0.1     Iris-setosa
## 39           4.4         3.0          1.3         0.2     Iris-setosa
## 40           5.1         3.4          1.5         0.2     Iris-setosa
## 41           5.0         3.5          1.3         0.3     Iris-setosa
## 42           4.5         2.3          1.3         0.3     Iris-setosa
## 43           4.4         3.2          1.3         0.2     Iris-setosa
## 44           5.0         3.5          1.6         0.6     Iris-setosa
## 45           5.1         3.8          1.9         0.4     Iris-setosa
## 46           4.8         3.0          1.4         0.3     Iris-setosa
## 47           5.1         3.8          1.6         0.2     Iris-setosa
## 48           4.6         3.2          1.4         0.2     Iris-setosa
## 49           5.3         3.7          1.5         0.2     Iris-setosa
## 50           5.0         3.3          1.4         0.2     Iris-setosa
## 51           7.0         3.2          4.7         1.4 Iris-versicolor
## 52           6.4         3.2          4.5         1.5 Iris-versicolor
## 53           6.9         3.1          4.9         1.5 Iris-versicolor
## 54           5.5         2.3          4.0         1.3 Iris-versicolor
## 55           6.5         2.8          4.6         1.5 Iris-versicolor
## 56           5.7         2.8          4.5         1.3 Iris-versicolor
## 57           6.3         3.3          4.7         1.6 Iris-versicolor
## 58           4.9         2.4          3.3         1.0 Iris-versicolor
## 59           6.6         2.9          4.6         1.3 Iris-versicolor
## 60           5.2         2.7          3.9         1.4 Iris-versicolor
## 61           5.0         2.0          3.5         1.0 Iris-versicolor
## 62           5.9         3.0          4.2         1.5 Iris-versicolor
## 63           6.0         2.2          4.0         1.0 Iris-versicolor
## 64           6.1         2.9          4.7         1.4 Iris-versicolor
## 65           5.6         2.9          3.6         1.3 Iris-versicolor
## 66           6.7         3.1          4.4         1.4 Iris-versicolor
## 67           5.6         3.0          4.5         1.5 Iris-versicolor
## 68           5.8         2.7          4.1         1.0 Iris-versicolor
## 69           6.2         2.2          4.5         1.5 Iris-versicolor
## 70           5.6         2.5          3.9         1.1 Iris-versicolor
## 71           5.9         3.2          4.8         1.8 Iris-versicolor
## 72           6.1         2.8          4.0         1.3 Iris-versicolor
## 73           6.3         2.5          4.9         1.5 Iris-versicolor
## 74           6.1         2.8          4.7         1.2 Iris-versicolor
## 75           6.4         2.9          4.3         1.3 Iris-versicolor
## 76           6.6         3.0          4.4         1.4 Iris-versicolor
## 77           6.8         2.8          4.8         1.4 Iris-versicolor
## 78           6.7         3.0          5.0         1.7 Iris-versicolor
## 79           6.0         2.9          4.5         1.5 Iris-versicolor
## 80           5.7         2.6          3.5         1.0 Iris-versicolor
## 81           5.5         2.4          3.8         1.1 Iris-versicolor
## 82           5.5         2.4          3.7         1.0 Iris-versicolor
## 83           5.8         2.7          3.9         1.2 Iris-versicolor
## 84           6.0         2.7          5.1         1.6 Iris-versicolor
## 85           5.4         3.0          4.5         1.5 Iris-versicolor
## 86           6.0         3.4          4.5         1.6 Iris-versicolor
## 87           6.7         3.1          4.7         1.5 Iris-versicolor
## 88           6.3         2.3          4.4         1.3 Iris-versicolor
## 89           5.6         3.0          4.1         1.3 Iris-versicolor
## 90           5.5         2.5          4.0         1.3 Iris-versicolor
## 91           5.5         2.6          4.4         1.2 Iris-versicolor
## 92           6.1         3.0          4.6         1.4 Iris-versicolor
## 93           5.8         2.6          4.0         1.2 Iris-versicolor
## 94           5.0         2.3          3.3         1.0 Iris-versicolor
## 95           5.6         2.7          4.2         1.3 Iris-versicolor
## 96           5.7         3.0          4.2         1.2 Iris-versicolor
## 97           5.7         2.9          4.2         1.3 Iris-versicolor
## 98           6.2         2.9          4.3         1.3 Iris-versicolor
## 99           5.1         2.5          3.0         1.1 Iris-versicolor
## 100          5.7         2.8          4.1         1.3 Iris-versicolor
## 101          6.3         3.3          6.0         2.5  Iris-virginica
## 102          5.8         2.7          5.1         1.9  Iris-virginica
## 103          7.1         3.0          5.9         2.1  Iris-virginica
## 104          6.3         2.9          5.6         1.8  Iris-virginica
## 105          6.5         3.0          5.8         2.2  Iris-virginica
## 106          7.6         3.0          6.6         2.1  Iris-virginica
## 107          4.9         2.5          4.5         1.7  Iris-virginica
## 108          7.3         2.9          6.3         1.8  Iris-virginica
## 109          6.7         2.5          5.8         1.8  Iris-virginica
## 110          7.2         3.6          6.1         2.5  Iris-virginica
## 111          6.5         3.2          5.1         2.0  Iris-virginica
## 112          6.4         2.7          5.3         1.9  Iris-virginica
## 113          6.8         3.0          5.5         2.1  Iris-virginica
## 114          5.7         2.5          5.0         2.0  Iris-virginica
## 115          5.8         2.8          5.1         2.4  Iris-virginica
## 116          6.4         3.2          5.3         2.3  Iris-virginica
## 117          6.5         3.0          5.5         1.8  Iris-virginica
## 118          7.7         3.8          6.7         2.2  Iris-virginica
## 119          7.7         2.6          6.9         2.3  Iris-virginica
## 120          6.0         2.2          5.0         1.5  Iris-virginica
## 121          6.9         3.2          5.7         2.3  Iris-virginica
## 122          5.6         2.8          4.9         2.0  Iris-virginica
## 123          7.7         2.8          6.7         2.0  Iris-virginica
## 124          6.3         2.7          4.9         1.8  Iris-virginica
## 125          6.7         3.3          5.7         2.1  Iris-virginica
## 126          7.2         3.2          6.0         1.8  Iris-virginica
## 127          6.2         2.8          4.8         1.8  Iris-virginica
## 128          6.1         3.0          4.9         1.8  Iris-virginica
## 129          6.4         2.8          5.6         2.1  Iris-virginica
## 130          7.2         3.0          5.8         1.6  Iris-virginica
## 131          7.4         2.8          6.1         1.9  Iris-virginica
## 132          7.9         3.8          6.4         2.0  Iris-virginica
## 133          6.4         2.8          5.6         2.2  Iris-virginica
## 134          6.3         2.8          5.1         1.5  Iris-virginica
## 135          6.1         2.6          5.6         1.4  Iris-virginica
## 136          7.7         3.0          6.1         2.3  Iris-virginica
## 137          6.3         3.4          5.6         2.4  Iris-virginica
## 138          6.4         3.1          5.5         1.8  Iris-virginica
## 139          6.0         3.0          4.8         1.8  Iris-virginica
## 140          6.9         3.1          5.4         2.1  Iris-virginica
## 141          6.7         3.1          5.6         2.4  Iris-virginica
## 142          6.9         3.1          5.1         2.3  Iris-virginica
## 143          5.8         2.7          5.1         1.9  Iris-virginica
## 144          6.8         3.2          5.9         2.3  Iris-virginica
## 145          6.7         3.3          5.7         2.5  Iris-virginica
## 146          6.7         3.0          5.2         2.3  Iris-virginica
## 147          6.3         2.5          5.0         1.9  Iris-virginica
## 148          6.5         3.0          5.2         2.0  Iris-virginica
## 149          6.2         3.4          5.4         2.3  Iris-virginica
## 150          5.9         3.0          5.1         1.8  Iris-virginica

Standarisasi & Matriks Jarak

data_scaled <- scale(data1[, -5])  # Menghilangkan kolom Species untuk standarisasi
data_scaled
##     sepal_length sepal_width petal_length petal_width
## 1    -0.89767388   1.0286113  -1.33679402 -1.30859282
## 2    -1.13920048  -0.1245404  -1.33679402 -1.30859282
## 3    -1.38072709   0.3367203  -1.39346985 -1.30859282
## 4    -1.50149039   0.1060900  -1.28011819 -1.30859282
## 5    -1.01843718   1.2592416  -1.33679402 -1.30859282
## 6    -0.53538397   1.9511326  -1.16676652 -1.04652483
## 7    -1.50149039   0.7979809  -1.33679402 -1.17755883
## 8    -1.01843718   0.7979809  -1.28011819 -1.30859282
## 9    -1.74301699  -0.3551707  -1.33679402 -1.30859282
## 10   -1.13920048   0.1060900  -1.28011819 -1.43962681
## 11   -0.53538397   1.4898719  -1.28011819 -1.30859282
## 12   -1.25996379   0.7979809  -1.22344235 -1.30859282
## 13   -1.25996379  -0.1245404  -1.33679402 -1.43962681
## 14   -1.86378030  -0.1245404  -1.50682152 -1.43962681
## 15   -0.05233076   2.1817629  -1.45014569 -1.30859282
## 16   -0.17309407   3.1042843  -1.28011819 -1.04652483
## 17   -0.53538397   1.9511326  -1.39346985 -1.04652483
## 18   -0.89767388   1.0286113  -1.33679402 -1.17755883
## 19   -0.17309407   1.7205023  -1.16676652 -1.17755883
## 20   -0.89767388   1.7205023  -1.28011819 -1.17755883
## 21   -0.53538397   0.7979809  -1.16676652 -1.30859282
## 22   -0.89767388   1.4898719  -1.28011819 -1.04652483
## 23   -1.50149039   1.2592416  -1.56349736 -1.30859282
## 24   -0.89767388   0.5673506  -1.16676652 -0.91549084
## 25   -1.25996379   0.7979809  -1.05341485 -1.30859282
## 26   -1.01843718  -0.1245404  -1.22344235 -1.30859282
## 27   -1.01843718   0.7979809  -1.22344235 -1.04652483
## 28   -0.77691058   1.0286113  -1.28011819 -1.30859282
## 29   -0.77691058   0.7979809  -1.33679402 -1.30859282
## 30   -1.38072709   0.3367203  -1.22344235 -1.30859282
## 31   -1.25996379   0.1060900  -1.22344235 -1.30859282
## 32   -0.53538397   0.7979809  -1.28011819 -1.04652483
## 33   -0.77691058   2.4123933  -1.28011819 -1.43962681
## 34   -0.41462067   2.6430236  -1.33679402 -1.30859282
## 35   -1.13920048   0.1060900  -1.28011819 -1.43962681
## 36   -1.01843718   0.3367203  -1.45014569 -1.30859282
## 37   -0.41462067   1.0286113  -1.39346985 -1.30859282
## 38   -1.13920048   0.1060900  -1.28011819 -1.43962681
## 39   -1.74301699  -0.1245404  -1.39346985 -1.30859282
## 40   -0.89767388   0.7979809  -1.28011819 -1.30859282
## 41   -1.01843718   1.0286113  -1.39346985 -1.17755883
## 42   -1.62225369  -1.7389527  -1.39346985 -1.17755883
## 43   -1.74301699   0.3367203  -1.39346985 -1.30859282
## 44   -1.01843718   1.0286113  -1.22344235 -0.78445684
## 45   -0.89767388   1.7205023  -1.05341485 -1.04652483
## 46   -1.25996379  -0.1245404  -1.33679402 -1.17755883
## 47   -0.89767388   1.7205023  -1.22344235 -1.30859282
## 48   -1.50149039   0.3367203  -1.33679402 -1.30859282
## 49   -0.65614727   1.4898719  -1.28011819 -1.30859282
## 50   -1.01843718   0.5673506  -1.33679402 -1.30859282
## 51    1.39682886   0.3367203   0.53350852  0.26381511
## 52    0.67224905   0.3367203   0.42015685  0.39484910
## 53    1.27606556   0.1060900   0.64686019  0.39484910
## 54   -0.41462067  -1.7389527   0.13677768  0.13278111
## 55    0.79301235  -0.5858010   0.47683269  0.39484910
## 56   -0.17309407  -0.5858010   0.42015685  0.13278111
## 57    0.55148575   0.5673506   0.53350852  0.52588310
## 58   -1.13920048  -1.5083224  -0.25995316 -0.26032087
## 59    0.91377565  -0.3551707   0.47683269  0.13278111
## 60   -0.77691058  -0.8164314   0.08010185  0.26381511
## 61   -1.01843718  -2.4308437  -0.14660149 -0.26032087
## 62    0.06843254  -0.1245404   0.25012935  0.39484910
## 63    0.18919584  -1.9695830   0.13677768 -0.26032087
## 64    0.30995914  -0.3551707   0.53350852  0.26381511
## 65   -0.29385737  -0.3551707  -0.08992566  0.13278111
## 66    1.03453895   0.1060900   0.36348102  0.26381511
## 67   -0.29385737  -0.1245404   0.42015685  0.39484910
## 68   -0.05233076  -0.8164314   0.19345352 -0.26032087
## 69    0.43072244  -1.9695830   0.42015685  0.39484910
## 70   -0.29385737  -1.2776920   0.08010185 -0.12928687
## 71    0.06843254   0.3367203   0.59018436  0.78795108
## 72    0.30995914  -0.5858010   0.13677768  0.13278111
## 73    0.55148575  -1.2776920   0.64686019  0.39484910
## 74    0.30995914  -0.5858010   0.53350852  0.00174712
## 75    0.67224905  -0.3551707   0.30680518  0.13278111
## 76    0.91377565  -0.1245404   0.36348102  0.26381511
## 77    1.15530226  -0.5858010   0.59018436  0.26381511
## 78    1.03453895  -0.1245404   0.70353603  0.65691709
## 79    0.18919584  -0.3551707   0.42015685  0.39484910
## 80   -0.17309407  -1.0470617  -0.14660149 -0.26032087
## 81   -0.41462067  -1.5083224   0.02342601 -0.12928687
## 82   -0.41462067  -1.5083224  -0.03324982 -0.26032087
## 83   -0.05233076  -0.8164314   0.08010185  0.00174712
## 84    0.18919584  -0.8164314   0.76021186  0.52588310
## 85   -0.53538397  -0.1245404   0.42015685  0.39484910
## 86    0.18919584   0.7979809   0.42015685  0.52588310
## 87    1.03453895   0.1060900   0.53350852  0.39484910
## 88    0.55148575  -1.7389527   0.36348102  0.13278111
## 89   -0.29385737  -0.1245404   0.19345352  0.13278111
## 90   -0.41462067  -1.2776920   0.13677768  0.13278111
## 91   -0.41462067  -1.0470617   0.36348102  0.00174712
## 92    0.30995914  -0.1245404   0.47683269  0.26381511
## 93   -0.05233076  -1.0470617   0.13677768  0.00174712
## 94   -1.01843718  -1.7389527  -0.25995316 -0.26032087
## 95   -0.29385737  -0.8164314   0.25012935  0.13278111
## 96   -0.17309407  -0.1245404   0.25012935  0.00174712
## 97   -0.17309407  -0.3551707   0.25012935  0.13278111
## 98    0.43072244  -0.3551707   0.30680518  0.13278111
## 99   -0.89767388  -1.2776920  -0.42998067 -0.12928687
## 100  -0.17309407  -0.5858010   0.19345352  0.13278111
## 101   0.55148575   0.5673506   1.27029437  1.70518904
## 102  -0.05233076  -0.8164314   0.76021186  0.91898508
## 103   1.51759216  -0.1245404   1.21361854  1.18105307
## 104   0.55148575  -0.3551707   1.04359104  0.78795108
## 105   0.79301235  -0.1245404   1.15694270  1.31208706
## 106   2.12140867  -0.1245404   1.61034938  1.18105307
## 107  -1.13920048  -1.2776920   0.42015685  0.65691709
## 108   1.75911877  -0.3551707   1.44032188  0.78795108
## 109   1.03453895  -1.2776920   1.15694270  0.78795108
## 110   1.63835547   1.2592416   1.32697021  1.70518904
## 111   0.79301235   0.3367203   0.76021186  1.05001907
## 112   0.67224905  -0.8164314   0.87356353  0.91898508
## 113   1.15530226  -0.1245404   0.98691520  1.18105307
## 114  -0.17309407  -1.2776920   0.70353603  1.05001907
## 115  -0.05233076  -0.5858010   0.76021186  1.57415505
## 116   0.67224905   0.3367203   0.87356353  1.44312105
## 117   0.79301235  -0.1245404   0.98691520  0.78795108
## 118   2.24217198   1.7205023   1.66702522  1.31208706
## 119   2.24217198  -1.0470617   1.78037689  1.44312105
## 120   0.18919584  -1.9695830   0.70353603  0.39484910
## 121   1.27606556   0.3367203   1.10026687  1.44312105
## 122  -0.29385737  -0.5858010   0.64686019  1.05001907
## 123   2.24217198  -0.5858010   1.66702522  1.05001907
## 124   0.55148575  -0.8164314   0.64686019  0.78795108
## 125   1.03453895   0.5673506   1.10026687  1.18105307
## 126   1.63835547   0.3367203   1.27029437  0.78795108
## 127   0.43072244  -0.5858010   0.59018436  0.78795108
## 128   0.30995914  -0.1245404   0.64686019  0.78795108
## 129   0.67224905  -0.5858010   1.04359104  1.18105307
## 130   1.63835547  -0.1245404   1.15694270  0.52588310
## 131   1.87988207  -0.5858010   1.32697021  0.91898508
## 132   2.48369858   1.7205023   1.49699771  1.05001907
## 133   0.67224905  -0.5858010   1.04359104  1.31208706
## 134   0.55148575  -0.5858010   0.76021186  0.39484910
## 135   0.30995914  -1.0470617   1.04359104  0.26381511
## 136   2.24217198  -0.1245404   1.32697021  1.44312105
## 137   0.55148575   0.7979809   1.04359104  1.57415505
## 138   0.67224905   0.1060900   0.98691520  0.78795108
## 139   0.18919584  -0.1245404   0.59018436  0.78795108
## 140   1.27606556   0.1060900   0.93023937  1.18105307
## 141   1.03453895   0.1060900   1.04359104  1.57415505
## 142   1.27606556   0.1060900   0.76021186  1.44312105
## 143  -0.05233076  -0.8164314   0.76021186  0.91898508
## 144   1.15530226   0.3367203   1.21361854  1.44312105
## 145   1.03453895   0.5673506   1.10026687  1.70518904
## 146   1.03453895  -0.1245404   0.81688770  1.44312105
## 147   0.55148575  -1.2776920   0.70353603  0.91898508
## 148   0.79301235  -0.1245404   0.81688770  1.05001907
## 149   0.43072244   0.7979809   0.93023937  1.44312105
## 150   0.06843254  -0.1245404   0.76021186  0.78795108
## attr(,"scaled:center")
## sepal_length  sepal_width petal_length  petal_width 
##     5.843333     3.054000     3.758667     1.198667 
## attr(,"scaled:scale")
## sepal_length  sepal_width petal_length  petal_width 
##    0.8280661    0.4335943    1.7644204    0.7631607
# Menghitung matriks jarak menggunakan metode Euclidean
distance_matrix <- dist(data_scaled, method = "euclidean")
head(distance_matrix,10)
##  [1] 1.1781739 0.8457338 1.1040164 0.2603346 1.0391769 0.6595109 0.2664325
##  [8] 1.6215602 0.9642421 0.5892602
# Menentukan jumlah klaster optimal menggunakan metode Ward's
c_ward <- hclust(distance_matrix, method = "ward.D2")
c_ward
## 
## Call:
## hclust(d = distance_matrix, method = "ward.D2")
## 
## Cluster method   : ward.D2 
## Distance         : euclidean 
## Number of objects: 150

Dendrogram

fviz_dend(c_ward, k = 3, 
            rect = TRUE, 
            rect_fill = TRUE,
            main = "Dendrogram Metode Ward's")
## Warning: `aes_string()` was deprecated in ggplot2 3.0.0.
## ℹ Please use tidy evaluation idioms with `aes()`.
## ℹ See also `vignette("ggplot2-in-packages")` for more information.
## ℹ The deprecated feature was likely used in the factoextra package.
##   Please report the issue at <https://github.com/kassambara/factoextra/issues>.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## ℹ The deprecated feature was likely used in the factoextra package.
##   Please report the issue at <https://github.com/kassambara/factoextra/issues>.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## Warning: The `<scale>` argument of `guides()` cannot be `FALSE`. Use "none" instead as
## of ggplot2 3.3.4.
## ℹ The deprecated feature was likely used in the factoextra package.
##   Please report the issue at <https://github.com/kassambara/factoextra/issues>.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

Hasil Clustering

# Memotong dendrogram untuk mendapatkan 3 klaster
clusters <- cutree(c_ward, k = 3)
table(clusters)
## clusters
##  1  2  3 
## 49 30 71

Komponen Hasil

names(c_ward)
## [1] "merge"       "height"      "order"       "labels"      "method"     
## [6] "call"        "dist.method"

Pada fungsi hclust, beberapa komponen penting yang dihasilkan antara lain: 1. merge: Matriks yang menunjukkan bagaimana klaster digabungkan pada setiap langkah. 2. height: Vektor yang menunjukkan jarak pada setiap langkah penggabungan klaster. 3. order: Urutan objek dalam dendrogram. 4. labels: Label asli dari data yang digunakan. 5. method &dist.method : Metode penggabungan yang digunakan (dalam hal ini “ward.D2”). 6. call: Panggilan fungsi yang digunakan untuk menghasilkan objek hclust.

head(c_ward$merge,10)
##       [,1] [,2]
##  [1,]  -10  -35
##  [2,]  -38    1
##  [3,] -102 -143
##  [4,]   -8  -40
##  [5,]  -11  -49
##  [6,]   -1  -18
##  [7,] -129 -133
##  [8,] -128 -139
##  [9,]   -3  -48
## [10,]  -81  -82
c_ward$height
##   [1]  0.0000000  0.0000000  0.0000000  0.1207633  0.1207633  0.1310340
##   [7]  0.1310340  0.1334014  0.1334014  0.1427657  0.1427657  0.1656272
##  [13]  0.1656272  0.1700275  0.1716135  0.1778459  0.1869915  0.2111925
##  [19]  0.2111925  0.2111925  0.2146608  0.2191670  0.2267033  0.2267033
##  [25]  0.2290169  0.2374921  0.2415266  0.2415266  0.2426982  0.2569804
##  [31]  0.2603346  0.2603346  0.2620680  0.2655546  0.2664325  0.2664325
##  [37]  0.2684237  0.2742323  0.2854909  0.2855315  0.2884595  0.2940673
##  [43]  0.2969111  0.3027366  0.3127181  0.3127181  0.3127181  0.3127181
##  [49]  0.3140645  0.3224513  0.3387294  0.3395682  0.3448541  0.3448759
##  [55]  0.3723424  0.3723424  0.3831402  0.3896210  0.3907813  0.3913291
##  [61]  0.3948722  0.4033863  0.4044344  0.4136456  0.4178101  0.4265695
##  [67]  0.4298420  0.4344252  0.4525775  0.4588328  0.4594146  0.4654400
##  [73]  0.4655722  0.4658463  0.4728403  0.4753837  0.4829513  0.4830385
##  [79]  0.4841107  0.4925678  0.4990433  0.5085480  0.5145497  0.5271913
##  [85]  0.5306791  0.5347433  0.5372522  0.5410532  0.5424847  0.5523323
##  [91]  0.5700300  0.5709480  0.5851060  0.6131618  0.6165543  0.6289501
##  [97]  0.6385716  0.6699257  0.6892326  0.7056868  0.7116400  0.7444180
## [103]  0.7564038  0.8006827  0.8021539  0.8151775  0.8398198  0.8640105
## [109]  0.8646642  0.8990937  0.9068109  0.9086297  0.9272047  0.9303707
## [115]  0.9580839  1.0351972  1.0504262  1.0551088  1.1140057  1.1196360
## [121]  1.1501279  1.1850980  1.1986336  1.2964224  1.2993217  1.3329059
## [127]  1.3387308  1.3706868  1.4310553  1.5309086  1.6488829  1.8034175
## [133]  2.0079948  2.0108773  2.1332397  2.1391334  2.2993996  2.6931983
## [139]  2.8591432  3.4479642  3.9243304  3.9338274  3.9482052  4.2223287
## [145]  4.2347620  6.8992037  7.9849162 12.6094995 27.1064107
cluster_hclust <- cutree(c_ward, k = 3)

# menambahkan cluster ke data asli untuk intepretasi
data_with_clusters <- data1 %>%
  mutate(Cluster = as.factor(cluster_hclust))

#melihat profil rata-rata setiap cluster
cluster_profiles <- data_with_clusters %>%
  group_by(Cluster) %>% 
  summarise(across(where(is.numeric), mean, na.rm = TRUE))
## Warning: There was 1 warning in `summarise()`.
## ℹ In argument: `across(where(is.numeric), mean, na.rm = TRUE)`.
## ℹ In group 1: `Cluster = 1`.
## Caused by warning:
## ! The `...` argument of `across()` is deprecated as of dplyr 1.1.0.
## Supply arguments directly to `.fns` through an anonymous function instead.
## 
##   # Previously
##   across(a:b, mean, na.rm = TRUE)
## 
##   # Now
##   across(a:b, \(x) mean(x, na.rm = TRUE))
print(cluster_profiles)
## # A tibble: 3 × 5
##   Cluster sepal_length sepal_width petal_length petal_width
##   <fct>          <dbl>       <dbl>        <dbl>       <dbl>
## 1 1               5.02        3.44         1.47       0.243
## 2 2               5.53        2.57         3.93       1.21 
## 3 3               6.55        2.99         5.27       1.85

Evaluasi Klaster

beberapa metrik evaluasi klaster yang dapat digunakan untuk menilai kualitas hasil klastering antara lain: 1. Silhouette Score: Mengukur seberapa mirip objek dengan klasternya sendiri dibandingkan dengan klaster lain. Nilai berkisar dari -1 hingga 1, di mana nilai yang lebih tinggi menunjukkan klaster yang lebih baik. 2. Dunn Index: Mengukur rasio antara jarak minimum antar klaster dengan diameter maksimum klaster. Nilai yang lebih tinggi menunjukkan klaster yang lebih baik. 3. Calinski-Harabasz Index: Mengukur rasio antara variansi antar klaster dan variansi dalam klaster. Nilai yang lebih tinggi menunjukkan klaster yang lebih baik.

# Menghitung Silhouette Score
silhouette_values <- silhouette(cluster_hclust, distance_matrix)
avg_silhouette <- mean(silhouette_values[, 3])
cat("Average Silhouette Score:", avg_silhouette, "\n")
## Average Silhouette Score: 0.4455396
# Menghitung Dunn Index
dunn_index <- intCriteria(as.matrix(data_scaled),      as.integer(cluster_hclust),            c("Dunn"))$dunn
cat("Dunn Index:", dunn_index, "\n")
## Dunn Index: 0.09799834
# Menghitung Calinski-Harabasz Index
ch_index <- intCriteria(as.matrix(data_scaled),
                        as.integer(cluster_hclust),
                        c("Calinski_Harabasz"))$calinski_harabasz
cat("Calinski-Harabasz Index:", ch_index, "\n")
## Calinski-Harabasz Index: 220.2604

Karaktrisik Cluster

Tahapan ini bertujuan untuk memahami karakteristik masing-masing klaster yang telah terbentuk. Dengan menganalisis profil rata-rata setiap klaster, kita dapat mengidentifikasi perbedaan dan kesamaan antara klaster-klaster tersebut.

data_clustered <- data1 %>%
  mutate(Cluster = as.factor(cluster_hclust))
# Melihat profil rata-rata setiap klaster
cluster_profiles <- data_clustered %>%
  group_by(Cluster) %>%
  summarise(across(where(is.numeric), mean, na.rm = TRUE))
print(cluster_profiles)
## # A tibble: 3 × 5
##   Cluster sepal_length sepal_width petal_length petal_width
##   <fct>          <dbl>       <dbl>        <dbl>       <dbl>
## 1 1               5.02        3.44         1.47       0.243
## 2 2               5.53        2.57         3.93       1.21 
## 3 3               6.55        2.99         5.27       1.85

Visualisasi Klaster

Visualisasi klaster membantu dalam memahami distribusi dan pemisahan klaster yang telah terbentuk. Salah satu metode yang umum digunakan adalah Principal Component Analysis (PCA) untuk mereduksi dimensi data sehingga dapat divisualisasikan dalam dua dimensi. Beberapa visualisasi yang dapat digunakan antara lain scatter plot dari komponen utama dan heatmap untuk melihat karakteristik klaster.

# Visualisasi klaster menggunakan PCA
pca_result <- prcomp(data_scaled)
pca_data <- data.frame(pca_result$x, Cluster = as.factor(cluster_hclust))
ggplot(pca_data, aes(x = PC1, y = PC2, color = Cluster)) +
  geom_point(size = 2) +
  labs(title = "Visualisasi Klaster menggunakan PCA",
       x = "Principal Component 1",
       y = "Principal Component 2") +
  theme_minimal()

PCA membantu dalam mengurangi dimensi data sambil mempertahankan sebanyak mungkin varians. Dengan memplot dua komponen utama, kita dapat melihat bagaimana klaster-klaster terdistribusi dan apakah ada pemisahan yang jelas antara klaster-klaster tersebut. Berdasarkan visualisasi PCA, kita dapat mengamati bahwa klaster-klaster yang terbentuk memiliki pemisahan yang cukup baik, menunjukkan bahwa metode Ward’s efektif dalam mengelompokkan data berdasarkan karakteristiknya.

# Visualisasi Heatmap
library(ggplot2)
library(reshape2)
## Warning: package 'reshape2' was built under R version 4.4.3
## 
## Attaching package: 'reshape2'
## The following object is masked from 'package:tidyr':
## 
##     smiths
# Pastikan hanya variabel numerik (selain kolom 'Cluster') yang digunakan
data_num <- data_clustered[, sapply(data_clustered, is.numeric)]
data_num$Cluster <- data_clustered$Cluster

# Ubah data menjadi format long
data_melted <- melt(data_num, id.vars = "Cluster")

# Buat heatmap
ggplot(data_melted, aes(x = variable, y = as.factor(Cluster), fill = value)) +
  geom_tile() +
  scale_fill_gradient(low = "white", high = "blue") +
  labs(title = "Heatmap Karakteristik Klaster",
       x = "Fitur",
       y = "Klaster") +
  theme_minimal()

Berdasarkan heatmap, kita dapat melihat pola karakteristik yang berbeda antara klaster-klaster. Misalnya, klaster 1 mungkin memiliki nilai tinggi pada fitur tertentu dibandingkan dengan klaster lainnya, menunjukkan perbedaan signifikan dalam karakteristik data.

#K-Means Clustering ## Menentukan Jumlah Klaster Optimal

Langkah awal dalam K-Means Clustering adalah menentukan jumlah klaster optimal (k) yang akan digunakan. Beberapa metode yang umum digunakan untuk menentukan k antara lain: 1. Elbow Method: Metode ini melibatkan plotting jumlah klaster terhadap total within-cluster sum of squares (WSS). Titik di mana penurunan WSS mulai melambat (membentuk “siku”) dianggap sebagai jumlah klaster optimal. 2. Silhouette Method: Metode ini mengukur seberapa mirip objek dengan klasternya sendiri dibandingkan dengan klaster lain. Nilai rata-rata silhouette yang lebih tinggi menunjukkan klaster yang lebih baik.

library(factoextra)
library(dplyr)
library(tidyr)
library(scales)
## Warning: package 'scales' was built under R version 4.4.3
## 
## Attaching package: 'scales'
## The following object is masked from 'package:purrr':
## 
##     discard
## The following object is masked from 'package:readr':
## 
##     col_factor
library(RColorBrewer)

Elbow Method

fviz_nbclust(data_scaled, kmeans, method = "wss") +
  labs(title = "Elbow Method for Optimal k")
## Warning: The `size` argument of `element_line()` is deprecated as of ggplot2 3.4.0.
## ℹ Please use the `linewidth` argument instead.
## ℹ The deprecated feature was likely used in the ggpubr package.
##   Please report the issue at <https://github.com/kassambara/ggpubr/issues>.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## Warning: The `size` argument of `element_rect()` is deprecated as of ggplot2 3.4.0.
## ℹ Please use the `linewidth` argument instead.
## ℹ The deprecated feature was likely used in the ggpubr package.
##   Please report the issue at <https://github.com/kassambara/ggpubr/issues>.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

Silhouette Method

fviz_nbclust(data_scaled, kmeans, method = "silhouette") +
  labs(title = "Silhouette Method for Optimal k")

Berdasarkan kedua metode di atas, kita dapat menentukan jumlah klaster optimal (k) yang akan digunakan dalam K-Means Clustering. Misalnya, jika kedua metode menunjukkan bahwa k = 3 adalah pilihan yang baik, kita akan melanjutkan dengan k = 3 untuk analisis selanjutnya.

Menjalankan Algoritma K-Means dan Hasil clustering

Setelah menentukan jumlah klaster optimal (k), langkah selanjutnya adalah menjalankan algoritma K-Means pada data yang telah distandarisasi. Berikut adalah langkah-langkah untuk melakukan K-Means Clustering dengan k = 2

set.seed(123)  # Untuk reproduktifitas
k <- 2  # Jumlah klaster optimal
kmeans_result <- kmeans(data_scaled, centers = k, nstart = 25)
table(kmeans_result$cluster)
## 
##   1   2 
##  50 100

Komponen Hasil K-Means

names(kmeans_result)
## [1] "cluster"      "centers"      "totss"        "withinss"     "tot.withinss"
## [6] "betweenss"    "size"         "iter"         "ifault"

Beberapa komponen penting yang dihasilkan oleh objek kmeans antara lain: 1. cluster: Vektor yang menunjukkan klaster yang ditugaskan untuk setiap objek dalam data 2. centers: Matriks yang berisi pusat klaster (centroids) untuk setiap klaster 3. tot.withinss: Total within-cluster sum of squares, yang mengukur seberapa baik klaster terbentuk 4. size: Vektor yang menunjukkan jumlah objek dalam setiap klaster 5. ifault: Informasi tentang iterasi yang dilakukan selama proses K-Means 6. totss: Total sum of squares dari data asli 7. betweenss: Between-cluster sum of squares, yang mengukur variasi antar klaster 8. iter: Jumlah iterasi yang dilakukan untuk mencapai konvergensi 9. withinss: Vektor yang menunjukkan within-cluster sum of squares untuk setiap klaster

kmeans_result$centers
##   sepal_length sepal_width petal_length petal_width
## 1   -1.0111914   0.8394944   -1.3005215  -1.2509379
## 2    0.5055957  -0.4197472    0.6502607   0.6254689
kmeans_result$tot.withinss
## [1] 222.2405
kmeans_result$size
## [1]  50 100
kmeans_result$iter
## [1] 1
kmeans_result$withinss
## [1]  48.15831 174.08215
kmeans_result$betweenss
## [1] 373.7595

Evaluasi Klaster K-Means

Beberapa metrik evaluasi klaster yang dapat digunakan untuk menilai kualitas hasil klastering K-Means antara lain: 1. Silhouette Score: Mengukur seberapa mirip objek dengan klasternya sendiri dibandingkan dengan klaster lain. Nilai berkisar dari -1 hingga 1, di mana nilai yang lebih tinggi menunjukkan klaster yang lebih baik. 2. Dunn Index: Mengukur rasio antara jarak minimum antar klaster dengan diameter maksimum klaster. Nilai yang lebih tinggi menunjukkan klaster yang lebih baik. 3. Calinski-Harabasz Index: Mengukur rasio antara variansi antar klaster dan variansi dalam klaster. Nilai yang lebih tinggi menunjukkan klaster yang lebih baik.

library(cluster)
library(clusterCrit)
distance_matrix <- dist(data_scaled)

silhouette_values_kmeans <- silhouette(kmeans_result$cluster, distance_matrix)
avg_silhouette_kmeans <- mean(silhouette_values_kmeans[, 3])
cat("Average Silhouette Score (K-Means):", avg_silhouette_kmeans, "\n")
## Average Silhouette Score (K-Means): 0.5801845
# Menghitung Dunn Index
dunn_index_kmeans <- intCriteria(
  as.matrix(data_scaled),
  as.integer(kmeans_result$cluster),
  c("Dunn")
)$dunn
cat("Dunn Index (K-Means):", dunn_index_kmeans, "\n")
## Dunn Index (K-Means): 0.266713
# Menghitung Calinski-Harabasz Index
ch_index_kmeans <- intCriteria(
  as.matrix(data_scaled),
  as.integer(kmeans_result$cluster),
  c("Calinski_Harabasz")
)$calinski_harabasz
cat("Calinski-Harabasz Index (K-Means):", ch_index_kmeans, "\n")
## Calinski-Harabasz Index (K-Means): 248.9034

Karakteristik Cluster K-Means

data_kmeans_clustered <- data1 %>%
  mutate(Cluster = as.factor(kmeans_result$cluster))
# Melihat profil rata-rata setiap klaster
cluster_profiles_kmeans <- data_kmeans_clustered %>%
  group_by(Cluster) %>%
  summarise(across(where(is.numeric), mean, na.rm = TRUE))
print(cluster_profiles_kmeans)
## # A tibble: 2 × 5
##   Cluster sepal_length sepal_width petal_length petal_width
##   <fct>          <dbl>       <dbl>        <dbl>       <dbl>
## 1 1               5.01        3.42         1.46       0.244
## 2 2               6.26        2.87         4.91       1.68

Visualisasi Klaster K-Means

fviz_cluster(kmeans_result, data = data_scaled,
             geom = "point",
             ellipse.type = "convex",
             palette = "jco",
             ggtheme = theme_minimal(),
             main = "Visualisasi Klaster K-Means")

Visualisasi klaster K-Means menunjukkan bagaimana data terdistribusi di antara klaster-klaster yang telah terbentuk. Dengan menggunakan metode PCA untuk mereduksi dimensi data, kita dapat melihat pemisahan yang jelas antara klaster-klaster tersebut. Hal ini mengindikasikan bahwa K-Means berhasil mengelompokkan data berdasarkan karakteristiknya dengan baik.

# Visualisasi Heatmap untuk K-Means
library(ggplot2)
library(reshape2)
# Pastikan hanya variabel numerik (selain kolom 'Cluster') yang digunakan
data_num_kmeans <- data_kmeans_clustered[, sapply(data_kmeans_clustered, is.numeric)]
data_num_kmeans$Cluster <- data_kmeans_clustered$Cluster
# Ubah data menjadi format long
data_melted_kmeans <- melt(data_num_kmeans, id.vars = "Cluster")
# Buat heatmap
ggplot(data_melted_kmeans, aes(x = variable, y = as.factor(Cluster), fill = value)) +
  geom_tile() +
  scale_fill_gradient(low = "white", high = "red") +
  labs(title = "Heatmap Karakteristik Klaster K-Means",
       x = "Fitur",
       y = "Klaster") +
  theme_minimal()

Berdasarkan heatmap untuk K-Means, kita dapat melihat pola karakteristik yang berbeda antara klaster-klaster. Misalnya, klaster 1 mungkin memiliki nilai tinggi pada fitur tertentu dibandingkan dengan klaster lainnya, menunjukkan perbedaan signifikan dalam karakteristik data.

Perbandingan Hasil Clustering

Setelah melakukan clustering menggunakan metode Hierarchical Clustering (Ward’s) dan K-Means, kita dapat membandingkan hasil kedua metode tersebut.

# Membandingkan hasil berbagai metode
comparison_table <- data.frame(
  Method = c("Hierarchical (Ward's)", "K-Means"),
  Silhouette_Score = c(avg_silhouette, avg_silhouette_kmeans),
  Dunn_Index = c(dunn_index, dunn_index_kmeans),
  Calinski_Harabasz_Index = c(ch_index, ch_index_kmeans)
)
print(comparison_table)
##                  Method Silhouette_Score Dunn_Index Calinski_Harabasz_Index
## 1 Hierarchical (Ward's)        0.4455396 0.09799834                220.2604
## 2               K-Means        0.5801845 0.26671299                248.9034

Berdasarkan tabel perbandingan di atas, kita dapat melihat bagaimana kedua metode clustering berkinerja berdasarkan metrik evaluasi yang telah dihitung. Misalnya, jika K-Means Clustering memiliki nilai Silhouette Score, Dunn index dan Calinski Harabasz index yang lebih tinggi dibandingkan dengan Hierarchical, ini menunjukkan bahwa klaster yang terbentuk oleh K-Means Clustering lebih baik dalam hal pemisahan antar klaster.