Anda di halaman 1dari 8

Nama : Hawi Natalino

NIM : 1715015031
Kelas : TI A 17
Kecerdasan Buatan

Sejarah K-Mean
K-means merupakan salah satu algoritma clustering. Tujuan algoritma ini yaitu untuk
membagi data menjadi beberapa kelompok. Algoritma ini menerima masukan berupa data
tanpa label kelas. Hal ini berbeda dengan supervised learning yang menerima masukan berupa
vektor (x1 , y1) , (x2 , y2) , …, (xi , yi), di mana xi merupakan data dari suatu data pelatihan
dan yi merupakan label kelas untuk xi .
K-means 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.

Prosedur Menggunakan K-Mean


Prosedur yang digunakan dalam melakukan optimasi menggunakan k-means adalah
sebagai berikut:
Step 1. Tentukan jumlah cluster
Step 2. Alokasikan data ke dalam cluster secara random
Step 3. Hitung centroid/rata-rata dari data yang ada di masing-masing cluster.
Step 4. Alokasikan masing-masing data ke centroid/rata-rata terdekat
Step 5. 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

Algoritma K-Mean
Algoritma untuk melakukan K-Means clustering adalah sebagai berikut :

1. Pilih K buah titik centroid secara acak


2. Kelompokkan data sehingga terbentuk K buah cluster dengan titik centroid dari
setiap cluster merupakan titik centroid yang telah dipilih sebelumnya
3. Perbaharui nilai titik centroid
4. Ulangi langkah 2 dan 3 sampai nilai dari titik centroid tidak lagi berubah
K-Mean Clustering
Suatu metode penganalisaan data atau metode Data Mining yang melakukan proses
pemodelan tanpa supervisi (unsupervised) dan merupakan salah satu metode yang melakukan
pengelompokan data dengan sistem partisi.
Terdapat dua jenis data clustering yang sering dipergunakan dalam proses
pengelompokan data yaitu Hierarchical dan Non-Hierarchical, dan K-Means merupakan salah
satu metode data clustering non-hierarchical atau Partitional Clustering.

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.

Data clustering menggunakan metode K-Means Clustering ini secara umum


dilakukan dengan algoritma dasar sebagai berikut:
1. Tentukan jumlah cluster
2. Alokasikan data ke dalam cluster secara random
3. Hitung centroid/rata-rata dari data yang ada di masing-masing cluster
4. Alokasikan masing-masing data ke centroid/rata-rata terdekat
5. 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 Program Menggunakan Phyton Menerapkan K-Means Clustering Pada Data
Pengemudi Go-Track :
Langkah 1: Import Libraries
Pada kasus ini , Kides akan menggunakan library Scikit-learn dan beberapa data acak untuk
mengilustrasikan penjelasan sederhana pengelompokan K-means.
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn.preprocessing import MinMaxScaler
Seperti yang dapat Anda lihat di atas , Kides mengiport libraries:
>> Panda untuk membaca dan menulis spreadsheet
>> Numpy untuk melakukan perhitungan yang efisien
>>Matplotlib untuk visualisasi data

Langkah 2: Menginput Data


Data yang digunakan yakni dataset sampel data pengemudi (driver) pada aplikasi Go-Track.
Dibawah ini adalah script untuk menginput data (baris 1) dan membaca data (baris 2)
--- Membaca Data ---
driver = pd.read_csv("go_track_tracks.csv")
driver.head()

Dari data yang Kides miliki terdapat 10 variabel pada data set yang ada . Ada beberapa
variabel yang tidak dibutuhkan sehingga harus dihapuskan.

Langkah 3: Menghilangkan kolom yang tidak diperlukan


Untuk contoh ini, Kides telah menghilangkan beberapa kolom yang tidak diperlukan .
Sehingga Kides hanya menyisakan 4 kolom yakni id , id_android,speed dan distance seperti
ditunjukkan pada gambar dibawah :
--- Menghilangkan Kolom Yang Tidak Perlu ---
driver = driver.drop(["linha", "car_or_bus","rating_weather",
"rating_bus","rating","time"], axis = 1)
driver.head()

Pada gambar diatas menunjukkan dataset untuk 38092 driver . Selanjutnya menentukan
variabel yang diklusterkan , disini Kides menggunakan variabel jarak pada sumbu X dan
variabel kecepatan pada sumbu Y .
-- Menentukan variabel yang akan di klusterkan ---
driver_x = driver.iloc[:, 1:3]
driver_x.head()

Dataset diatas divisualisasikan persebaran datanya sebagai berikut :


--- Memvisualkan persebaran data ---
plt.scatter(driver.distance, driver.speed, s =10, c = "c", marker = "o", alpha = 1)
plt.show()
Langkah 4: Menentukan Nilai K
Sebelum menetukan nilai K , Kides harus mengubah variabel data frame menjadi array
terlebih dahulu
--- Mengubah Variabel Data Frame Menjadi Array ---
x_array = np.array(driver_x)
print(x_array)

Kemudian Kides harus menstandarkan kembali ukuran variabel . Agar data dapat kembali
seperti jenis data diawal sebelum di array kan
--- Menstandarkan Ukuran Variabel ---
scaler = MinMaxScaler()
x_scaled = scaler.fit_transform(x_array)
x_scaled
Tentukan nilai K . Dalam hal tersebut, nilai K (n_clusters) atau nilai arbitrer bebas
ditentukan , tergantung kepada peneliti .Pada kasus ini , Kides akan mengkonfigurasi dan
menentukan nilai K sebesar 3 cluster. Selain itu Kides juga menetukan kluster dari data yang
telah di standarkan .
--- Menentukan dan mengkonfigurasi fungsi kmeans ---
kmeans = KMeans(n_clusters = 3, random_state=123)
--- Menentukan kluster dari data ---
kmeans.fit(x_scaled)

Langkah 5 : Memvisualisasikan Kluster


Untuk memvisualisasikan kaluster , Kides harus menampilkan centroid terlebih dahulu sepeti
gambar dibawah
--- Menampilkan pusat cluster ---
print(kmeans.cluster_centers_)

Selanjutnya Kides menampilkan hasil cluster dan Menambahkan kolom data frame driver .
--- Menampilkan Hasil Kluster ---
print(kmeans.labels_)
--- Menambahkan Kolom "kluster" Dalam Data Frame Driver ---
driver["kluster"] = kmeans.labels_
Kemudian memvisualisasikan hasil cluster
--- Memvisualkan hasil kluster ---
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()

Dari gambar diatas dapat kita lihat bahwa dari data pengemudi Go-Track telah ter cluster
menjadi 3.

Anda mungkin juga menyukai