BESERTA CONTOHNYA
Disusun Oleh :
Adam Aris Rizaldy – 10116295
Reyhan Fauzan Nugroho - 10116299
Faisal Rahmi – 10116312
Muhammad Adityo Fathur Rahim – 10116315
Rizqi Adiguna - 10116319
Kelas : IF-7
Tentang Algoritma K-Means
Algoritma K-Means merupakan salah satu dari metode data clustering. Algoritma K-
Means termasuk kedalam kelompok data non hirarki yang berusaha mempartisi data yang ada
ke dalam bentuk satu atau lebih cluster/kelompok. Metode ini mempartisi data ke dalam
cluster/kelompok sehingga data yang memiliki karakteristik yang sama dikelompokkan ke
dalam satu cluster yang sama dan data yang mempunyai karakteristik yang berbeda
dikelompokkan ke dalam kelompok yang lain.
Metode K-Means Clustering berusaha mengelompokkan data yang ada ke dalam
beberapa kelompok, dimana data dalam satu kelompok mempunyai karakteristik yang sama
satu sama lainnya dan mempunyai karakteristik yang berbeda dengan data yang ada di dalam
kelompok yang lain. Dengan kata lain, metode K-Means Clustering bertujuan untuk
meminimalisasikan objective function yang diset dalam proses clustering dengan
cara meminimalkan variasi antar data yang ada di dalam suatu cluster dan memaksimalkan
variasi dengan data yang ada di cluster lainnya.
Gambar 2 Contoh Cluster
Algoritma K-means sudah lama ditemukan oleh beberapa orang yaitu Lloyd (1957,
1982), Forgey (1965) , Friedman and Rubin (1967) , and McQueen (1967). Ide dari clustering
pertama kali ditemukan oleh Lloyd pada tahun 1957, namun hal tersebut baru dipublikasi pada
tahun 1982. Pada tahun 1965, Forgey juga mempublikasi teknik yang sama sehingga terkadang
dikenal sebagai Lloyd-Forgy pada beberapa sumber.
Dari beberapa penemuan yang telah dilakukan, Algoritma K-Means diperkenalkan oleh
J.B. MacQueen pada tahun 1976, salah satu algoritma clustering sangat umum yang
mengelompokkan data sesuai dengan karakteristik atau ciri-ciri bersama yang serupa.Pada
akhirnya penemuan tersebut sama-sama dipublikasikan pada tahun yang sama yaitu tahun
1982, dikarenakan beberapa orang tersebut yang melakukan penemuan Algoritma K-Means
dipelajari,diuji dan diimplementasikan terlebih dahulu.
Karakteristik K-Means
1. Binary
2. Nominal
3. Ordinal
4. Interval
5. Ratio
Berbagai macam atribut dalam basis data yang berbeda tipe disebut sebagai data
multivariate. Tipe data seperti nominal dan ordinal harus diolah terlebih dahulu menjadi data
numerik (bisa dilakukan dengan cara diskritisasi), sehingga dapat diberlakukan algoritma K-
Means dalam pembentukan clusternya.
Contoh Program
3. Menghitung kuadrat jarak Euclidean antara data uji dan pusat cluster
No.0 C1
D(a,b) = √(𝑎1 − 𝑏1 )2 + (𝑎2 − 𝑏2 )2
= √(19,210586 − 19,210586 )2 + (2,652 − 2,652)2
= 0
No.0 C2
D(a,b) = √(𝑎1 − 𝑏1 )2 + (𝑎2 − 𝑏2 )2
= √(19,210586 − 13,560101)2 + (2,652 − 0,918)2
= 142,3976
No.0 C3
D(a,b) = √(𝑎1 − 𝑏1 )2 + (𝑎2 − 𝑏2 )2
= √(19,210586 − 13,560101)2 + (2,652 − 0,918)2
= 34,93974
No.1 C1
D(a,b) = √(𝑎1 − 𝑏1 )2 + (𝑎2 − 𝑏2 )2
= √(30,848229 − 19,210586)2 + (5,290 − 2,652)2
= 142,39378
No.1 C2
D(a,b) = √(𝑎1 − 𝑏1 )2 + (𝑎2 − 𝑏2 )2
= √(30,848229 − 30,848229)2 + (5,290 − 5,290)2
= 0
No.1 C3
D(a,b) = √(𝑎1 − 𝑏1 )2 + (𝑎2 − 𝑏2 )2
= √(30,848229 − 13,560101)2 + (5,290 − 0,918)2
= 317,99375
No.2 C1
D(a,b) = √(𝑎1 − 𝑏1 )2 + (𝑎2 − 𝑏2 )2
= √(13,560101 − 19,210586)2 + (0,918 − 2,652)2
= 34,93474
No.2 C2
D(a,b) = √(𝑎1 − 𝑏1 )2 + (𝑎2 − 𝑏2 )2
= √(13,560101 − 30,848229)2 + (0,918 − 5,290)2
= 317,99617
No.2 C3
D(a,b) = √(𝑎1 − 𝑏1 )2 + (𝑎2 − 𝑏2 )2
= √(13,560101 − 13,560101)2 + (0,918 − 0,918)2
= 0
No.3 C1
D(a,b) = √(𝑎1 − 𝑏1 )2 + (𝑎2 − 𝑏2 )2
= √(19,766679 − 19,210586 )2 + (7,700 − 2,652)2
= 25,79154
No.3 C2
D(a,b) = √(𝑎1 − 𝑏1 )2 + (𝑎2 − 𝑏2 )2
= √(19,766679 − 30,848229)2 + (7,700 − 5,290)2
= 128,600885
No.3 C3
D(a,b) = √(𝑎1 − 𝑏1 )2 + (𝑎2 − 𝑏2 )2
= √(19,766679 − 13,560101)2 + (7,700 − 0,918)2
= 84,51713
No.4 C1
D(a,b) = √(𝑎1 − 𝑏1 )2 + (𝑎2 − 𝑏2 )2
= √(25,807401 − 19,210586)2 + (3,995 − 2,652)2
= 45,32162
No.4 C2
D(a,b) = √(𝑎1 − 𝑏1 )2 + (𝑎2 − 𝑏2 )2
= √(25,807401 − 30,848229)2 + (3,995 − 5,290)2
= 27,08697
No.4 C3
D(a,b) = √(𝑎1 − 𝑏1 )2 + (𝑎2 − 𝑏2 )2
= √(25,807401 − 13,560101)2 + (3,995 − 0,918)2
= 159,46429
No C1 C2 C3
0 0 142,393779 34,934737
1 142,393779 0 317,993754
2 34,934737 317,993754 0
3 25,791543 128,608850 84,517134
4 45,321617 27,086972 159,464286
4. Mengelompokkan data (berdasarkan nilai minimum jarak setiap data terhadap cluster)
No C1 C2 C3 Min(C1,C2,C3) Cluster No C1 C2 C3
0 0 142,393779 34,934737 0 C1 0 1 0 0
1 142,393779 0 317,993754 0 C2 1 0 1 0
2 34,934737 317,993754 0 0 C3 2 0 0 1
3 25,791543 128,608850 84,517134 25,791543 C1 3 1 0 0
4 45,321617 27,086972 159,464286 27,086972 C2 4 0 1 0
C1 X1(Speed) X2(distance)
0 19,210586 2,652
3 19,766679 7,700
mean 19,488633 5,176
C2 X1(Speed) X2(distance)
1 30,848229 5,290
4 25,807401 3,995
mean 28,327815 4,643
C3 X1(Speed) X2(distance)
2 13,560101 0,918
mean 13,560101 0,918
2. Iterasi 2
a1 a2
speed Distance
0 19,210586 2,652
1 30,848229 5,290
2 13,560101 0,918
3 19,766679 7,700
4 25,807401 3,995
3. Menghitung kuadrat jarak Euclidean antara data uji dan pusat cluster
No.0 C1
D(a,b) = √(𝑎1 − 𝑏1 )2 + (𝑎2 − 𝑏2 )2
= √(19,210586 − 19,488633)2 + (2,652 − 5,176)2
= 6,447886
No.0 C2
D(a,b) = √(𝑎1 − 𝑏1 )2 + (𝑎2 − 𝑏2 )2
= √(19,210586 − 28,327815)2 + (2,652 − 4,643)2
= 87,085955
No.0 C3
D(a,b) = √(𝑎1 − 𝑏1 )2 + (𝑎2 − 𝑏2 )2
= √(19,210586 − 13,560101)2 + (2,652 − 0,918)2
= 34,93974
No.1 C1
D(a,b) = √(𝑎1 − 𝑏1 )2 + (𝑎2 − 𝑏2 )2
= √(30,848229 − 19,488633)2 + (5,290 − 5,176)2
= 129,053429
No.1 C2
D(a,b) = √(𝑎1 − 𝑏1 )2 + (𝑎2 − 𝑏2 )2
= √(30,848229 − 28,327815)2 + (5,290 − 4,643)2
= 6,771743
No.1 C3
D(a,b) = √(𝑎1 − 𝑏1 )2 + (𝑎2 − 𝑏2 )2
= √(30,848229 − 13,560101)2 + (5,290 − 0,918)2
= 317,99375
No.2 C1
D(a,b) = √(𝑎1 − 𝑏1 )2 + (𝑎2 − 𝑏2 )2
= √(13,560101 − 19,488633)2 + (0,918 − 5,176)2
= 53,278050
No.2 C2
D(a,b) = √(𝑎1 − 𝑏1 )2 + (𝑎2 − 𝑏2 )2
= √(13,560101 − 28,327815)2 + (0,918 − 4,643)2
= 231,957277
No.2 C3
D(a,b) = √(𝑎1 − 𝑏1 )2 + (𝑎2 − 𝑏2 )2
= √(13,560101 − 13,560101)2 + (0,918 − 0,918)2
= 0
No.3 C1
D(a,b) = √(𝑎1 − 𝑏1 )2 + (𝑎2 − 𝑏2 )2
= √(19,766679 − 19,488633 )2 + (7,700 − 5,176)2
= 6,447886
No.3 C2
D(a,b) = √(𝑎1 − 𝑏1 )2 + (𝑎2 − 𝑏2 )2
= √(19,766679 − 28,327815)2 + (7,700 − 4,643)2
= 82,641356
No.3 C3
D(a,b) = √(𝑎1 − 𝑏1 )2 + (𝑎2 − 𝑏2 )2
= √(19,766679 − 13,560101)2 + (7,700 − 0,918)2
= 84,51713
No.4 C1
D(a,b) = √(𝑎1 − 𝑏1 )2 + (𝑎2 − 𝑏2 )2
= √(25,807401 − 19,488633)2 + (3,995 − 5,176)2
= 41,321596
No.4 C2
D(a,b) = √(𝑎1 − 𝑏1 )2 + (𝑎2 − 𝑏2 )2
= √(25,807401 − 28,327815)2 + (3,995 − 4,643)2
= 6,771743
No.4 C3
D(a,b) = √(𝑎1 − 𝑏1 )2 + (𝑎2 − 𝑏2 )2
= √(25,807401 − 13,560101)2 + (3,995 − 0,918)2
= 159,46429
No C1 C2 C3
0 6,447886 87,085955 34,934737
1 129,053429 6,771743 317,993754
2 53,278050 231,957277 0,000000
3 6,447886 82,641356 84,517134
4 41,321596 6,771743 159,464286
4. Mengelompokkan data (berdasarkan nilai minimum jarak setiap data terhadap cluster)
No C1 C2 C3 Min(C1,C2,C3) Cluster No C1 C2 C3
0 6,447886 87,085955 34,934737 6,447886 C1 0 1 0 0
1 129,053429 6,771743 317,993754 6,771743 C2 1 0 1 0
2 53,278050 231,957277 0,000000 0,000000 C3 2 0 0 1
3 6,447886 82,641356 84,517134 6,447886 C1 3 1 0 0
4 41,321596 6,771743 159,464286 6,771743 C2 4 0 1 0
C1 X1(Speed) X2(distance)
0 19,210586 2,652
3 19,766679 7,700
m 19,488633 5,176
C2 X1(Speed) X2(distance)
1 30,848229 5,290
4 25,807401 3,995
m 28,327815 4,643
C3 X1(Speed) X2(distance)
2 13,560101 0,918
m 13,560101 0,918
Berikut ini contoh penggunaan algoritma K-means pada program menggunakan
dataset sampel dari data pengemudi pada aplikasi Go-Track.
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn.preprocessing import MinMaxScaler
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import Kmeans
from sklearn.preprocessing import MinMaxScaler
Selanjutnya akan dilakukannya pemanggilan dataset yang berekstensi csv. Setelah data
terpanggil pada program, pada data yang dihasilkan terdapat 10 buah variabel dan selanjutnya
akan menghilangkan beberapa variabel yang tidak digunakan.
driver = pd.read_csv("go_track_tracks.csv")
driver.head()
Sekarang saatnya menghapus beberapa variabel yang tidak digunakan seperti time,
rating, rating_bus, rating_weather, car_or_bus dan hinha. Hingga tinggal variabel id,
id_android, speed dan distance yang tersisa.
Data yang diatas yang sebelumnya telah ditampikan berupa variabel data frame, untuk dapat
menentukan nilai K, maka rubah terlebih dahulu ke dalam bentuk array.
x_array = np.array(driver_x)
print(x_array)
Selanjutnya data yang telah dirubah ke bentuk array akan distandarkan kembali ukuran
variabelnya agar data dapat kembali seperti jenis data yang sebelum dirubah ke dalam bentuk
array.
x_scaled
Setelah itu tentukanlah nilai K, jika dalam program nilai n_clusters diisi sesuai dengan
keinginan pembuat dan tergantung studi kasus.
Nilai K telah ditentukan, tinggal menampilkan titik pusat atau disebut centroid.
print(kmeans.cluster_centers_)
print(kmeans.labels_)
driver["kluster"] = kmeans.labels_
Terakhir memvisualisasikan hasil cluster, dan dari hasil visualisasi dapat terlihat bahwa
pengemudi G-Track telah terbagi menjadi 3 cluster.
output = plt.scatter(x_scaled[:,0], x_scaled[:,1], s = 100, c =
driver.kluster, marker = "o", alpha = 1, )
centers = kmeans.cluster_centers_
plt.scatter(centers[:,0], centers[:,1], c='red', s=200, alpha=1 ,
marker="s");
plt.title("Hasil Klustering K-Means")
plt.colorbar (output)
plt.show()
Daftar Pustaka
[3] "Komputasi | Solusi Terapan : Algoritma Clustering K-Means," 14 November 2008. [Online].
Available: https://komputasi.wordpress.com/2008/11/14/algoritma-clustering-k-means/.
[4] R. D. RAMADHANI, "Medium : >> Memahami K-Mean Clustering Pada Machine Learning Dengan
Phyton <<," [Online]. Available: https://medium.com/@16611129/memahami-k-mean-
clustering-pada-machine-learning-dengan-phyton-430323d80868.
[5] P. Yudi Agusta, "K-Means – Penerapan, Permasalahan dam Metode Terkait," Jurnal Sistem dan
Informatika, vol. 3, pp. 47-60, 2007.