Clustering merupakan salah satu metode dalam analisis data yang digunakan untuk mengelompokkan objek berdasarkan karakteristik yang dimilikinya. metode ini termasuk dalam teknik unsupervised learning.
Salah satu metode clustering yang populer adalah K-Means Clustering. Metode ini bekerja dengan cara membagi data kedalam beberapa kelompok (cluster) sehingga objek dalam satu kelompok memiliki karakteristik yang lebih mirip dibandingkan dengan objek pada kelompok lain.
Pada analisis ini digunakan dataset iris yang merupakan dataset bawaan dari R. Dataset ini berisi informasi mengenai ukuran bagian bunga iris yang terdiri dari panjang dan lebar sepal serta petal.
Tujuan analisis ini adalah untuk mengelompokkan data bunga iris menggunakan metode K-Means berdasarkan karakteristik ukuran bunga.
data("iris")
head(iris)
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1 5.1 3.5 1.4 0.2 setosa
## 2 4.9 3.0 1.4 0.2 setosa
## 3 4.7 3.2 1.3 0.2 setosa
## 4 4.6 3.1 1.5 0.2 setosa
## 5 5.0 3.6 1.4 0.2 setosa
## 6 5.4 3.9 1.7 0.4 setosa
Dataset iris memiliki lima variabel, empat variabel pertama merupakan variabel numerik yang digunakan dalam proses clustering.
library(dplyr)
library(ggplot2)
library(cluster)
data_cluster <- iris %>%
select(Sepal.Length, Sepal.Width, Petal.Length, Petal.Width)
head(data_cluster)
## Sepal.Length Sepal.Width Petal.Length Petal.Width
## 1 5.1 3.5 1.4 0.2
## 2 4.9 3.0 1.4 0.2
## 3 4.7 3.2 1.3 0.2
## 4 4.6 3.1 1.5 0.2
## 5 5.0 3.6 1.4 0.2
## 6 5.4 3.9 1.7 0.4
data_scaled <- scale(data_cluster)
wss <- numeric(10)
for (i in 1:10) {
km <- kmeans(data_scaled, centers = i, nstart = 25)
wss[i] <- km$tot.withinss
}
plot(1:10, wss,
type = "b",
pch = 19,
xlab = "Jumlah Cluster",
ylab = "Within Sum of Squares",
main = "Metode Elbow")
set.seed(123)
kmeans_result <- kmeans(data_scaled, centers = 3, nstart = 25)
kmeans_result
## K-means clustering with 3 clusters of sizes 50, 53, 47
##
## Cluster means:
## Sepal.Length Sepal.Width Petal.Length Petal.Width
## 1 -1.01119138 0.85041372 -1.3006301 -1.2507035
## 2 -0.05005221 -0.88042696 0.3465767 0.2805873
## 3 1.13217737 0.08812645 0.9928284 1.0141287
##
## Clustering vector:
## [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 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 3 3 3 2 2 2 3 2 2 2 2 2 2 2 2 3 2 2 2 2 3 2 2 2
## [75] 2 3 3 3 2 2 2 2 2 2 2 3 3 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 3 3 3 3 2 3 3 3 3
## [112] 3 3 2 2 3 3 3 3 2 3 2 3 2 3 3 2 3 3 3 3 3 3 2 2 3 3 3 2 3 3 3 2 3 3 3 2 3
## [149] 3 2
##
## Within cluster sum of squares by cluster:
## [1] 47.35062 44.08754 47.45019
## (between_SS / total_SS = 76.7 %)
##
## Available components:
##
## [1] "cluster" "centers" "totss" "withinss" "tot.withinss"
## [6] "betweenss" "size" "iter" "ifault"
iris$cluster <- kmeans_result$cluster
head(iris)
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species cluster
## 1 5.1 3.5 1.4 0.2 setosa 1
## 2 4.9 3.0 1.4 0.2 setosa 1
## 3 4.7 3.2 1.3 0.2 setosa 1
## 4 4.6 3.1 1.5 0.2 setosa 1
## 5 5.0 3.6 1.4 0.2 setosa 1
## 6 5.4 3.9 1.7 0.4 setosa 1
ggplot(iris, aes(x = Sepal.Length,
y = Petal.Length,
color = factor(cluster))) +
geom_point(size = 3) +
labs(title = "Hasil Clustering Data Iris",
x = "Sepal Length",
y = "Petal Length",
color = "Cluster")
iris %>%
group_by(cluster) %>%
summarise(
mean_sepal_length = mean(Sepal.Length),
mean_sepal_width = mean(Sepal.Width),
mean_petal_length = mean(Petal.Length),
mean_petal_width = mean(Petal.Width)
)
## # A tibble: 3 × 5
## cluster mean_sepal_length mean_sepal_width mean_petal_length mean_petal_width
## <int> <dbl> <dbl> <dbl> <dbl>
## 1 1 5.01 3.43 1.46 0.246
## 2 2 5.80 2.67 4.37 1.41
## 3 3 6.78 3.10 5.51 1.97
aggregate(iris[,1:4], by=list(Cluster=iris$cluster), mean)
## Cluster Sepal.Length Sepal.Width Petal.Length Petal.Width
## 1 1 5.006000 3.428000 1.462000 0.246000
## 2 2 5.801887 2.673585 4.369811 1.413208
## 3 3 6.780851 3.095745 5.510638 1.972340
Berdasarkan hasil analisis K-Means Clustering, data bunga iris dapat dikelompokkan menjadi tiga cluster berdasarkan karakteristik ukuran sepal dan petal.
Setiap cluster memiliki karakteristik ukuran bunga yang berbeda. Cluster pertama menunjukkan kelompok bunga dengan ukuran petal yang relatif kecil, sedangjan cluster lainnya memiliki ukuran petal yang lebih besar.
Hasil clustering ini menunjukkan bahwa metode K-Means mampu mengelompokkan data berdasarkan kemiripan karakteristik yang dimiliki oleh masing-masing objek.