- Tentukan jumlah cluster
- Alokasikan data ke dalam cluster secara
random
- Hitung centroid/rata-rata dari data yang ada
di masing-masing cluster Alokasikan masing-masing data ke
centroid/rata-rata terdekat
-Kembali ke Step 3, apabila masih ada data
yang berpindah cluster atau apabila perubahan nilai centroid, ada yang di atas
nilai threshold yang ditentukan atau apabila perubahan nilai pada objective
function yang digunakan di atas nilai threshold yang ditentukan.
Implementasi K-Means denga pemerograman R
c.
Lalu install package NbClust
d.
Data yang akan di pakai, saya menggunakan
data : jika tidak memiliki data sebagai latihan pakai data ini Download
Saya
asumsikan kelengkapan a sampai dengan d sudah ada di PC masing-masing,
selanjutnya kita akan melakukan uji pada metode k-means.
1.
Bukalah program R atau R studio yang
sebelumnya di install tadi, berikut
adalah tampilah utama R-Studio.
1. Masukkan data yang akan di uji
Berikut adalah codingnya
kesehatanIbu<-read.csv(file.choose(),
header = TRUE)
2. Ambil hanya kolom yang akan di klaster
kes_ibu<-kesehatanIbu[,3:9]
kes_ibu
P1 P2 P3 P4 P5 P6 P7
1 90.54 81.83 80.11 79.53 66.65 18.00 49.34
2 92.60 86.32 94.15 84.29 27.38 59.86 38.57
3 94.79 82.70 82.11 81.06 76.63 9.94 56.11
4 88.65 80.37 79.54 82.72 57.58 20.15 28.76
5 98.89 93.39 91.08 91.06 49.22 42.71 84.54
6 90.91 87.59 86.30 86.38 36.30 52.06 61.74
7 97.00 91.02 87.77 90.92 58.30 32.76 69.72
8 95.78 89.62 84.15 83.53 60.32 25.85 62.81
9 96.15 90.04 88.02 84.37 91.14 0.00 85.35
10 94.09 88.61 85.34 81.67 89.23 0.12 58.74
11 99.92 96.01 94.64 94.79 96.22 0.97 82.76
12 96.84 89.13 87.33 90.48 80.08 7.46 81.62
13 99.60 93.11 92.37 92.49 95.02 4.15 101.05
14 100.00 92.81 94.54 91.59 99.46 0.50 89.69
15 96.19 88.66 91.15 84.94 91.32 1.14 91.48
16 93.76 84.53 89.60 61.36 78.08 14.31 81.91
17 98.59 94.15 93.85 95.01 97.17 0.49 77.18
18 83.67 76.24 74.05 92.42 67.27 7.47 91.00
19 85.93 61.78 69.11 74.18 67.69 10.25 52.12
20 94.79 85.99 82.03 85.08 53.39 30.85 62.81
21 95.63 87.25 88.01 81.32 46.31 43.81 50.12
22 98.31 82.65 87.27 79.79 55.78 33.59 86.37
23 102.25 89.42 85.84 80.87 85.87 6.08 84.08
24 99.79 87.39 90.98 90.22 79.72 16.44 59.26
25 102.91 102.91 79.96 80.21 74.73 8.30 82.12
26 87.93 76.68 74.91 70.42 62.40 14.49 51.58
27 99.12 91.22 89.49 88.93 81.96 10.82 73.98
28 96.14 81.41 83.98 79.01 53.38 32.43 49.82
29 100.40 89.32 84.27 85.21 89.25 0.90 73.04
30 94.16 78.21 80.60 78.89 80.74 7.01 54.01
31 55.93 47.87 43.39 62.51 32.83 14.07 31.39
32 80.28 70.19 68.60 80.41 53.87 13.47 50.69
33 75.67 39.74 29.13 32.46 35.79 8.95 9.61
34 79.13 49.67 38.61 49.12 12.97 50.18 29.54
3. Klaster menjadi 2 kelompok
stats::kmeans(kes_ibu, 3)
hasilnya akan tampak
K-means clustering with 3 clusters of sizes 17, 14, 3
Cluster means:
P1 P2 P3 P4 P5 P6 P7
1 97.19000 89.08588 87.30235 85.55941 85.52294 5.652941 77.84588
2 92.38429 82.57786 82.64357 82.04571 53.46929 30.734286 57.07071
3 70.24333 45.76000 37.04333 48.03000 27.19667 24.400000 23.51333
Clustering vector:
[1] 2 2 1 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 2 2 2 2 1 1 1 2 1 2 1 1 3 2 3 3
Within cluster sum of squares by cluster:
[1] 7324.494 10242.742 2537.575
(between_SS / total_SS = 68.5 %)
Available components:
[1] "cluster" "centers" "totss" "withinss" "tot.withinss" "betweenss" "size"
[8] "iter" "ifault"
4. Membuat jarak dengan nama matrix_ibu
matrix_ibu<-stats::dist(kes_ibu, method = "euclidean")
matrix_ibu
5. Membuat hierarchical agglomerative clustering:
6. Call:
7. stats::hclust(d = matrix_ibu, method = "ward.D")
8.
9. Cluster method : ward.D
10. Distance : euclidean
11. Number of objects: 34
6. Menampilkan dendogram
7. Mengelompokkan hasil cluster, misal dlm 3 cluster:
grouping<-cutree(hclust_ibu, k=3)
grouping
[1] 1 1 1 1 1 1 1 1 2 1 2 2 2 2 2 2
2 2 1 1 1 1 2 1 2 1 2 1 2 1
3 1 3 3
8. Menampilkan
hasil dendogram dgn kotak merah untuk 3 cluster:
|
jika ada yang kurang jelas mohon di komentari atau
bisa memalui email: laluallistio@gmail.com