πLab 1
Pengantar
Pada modul praktikum ini, kita akan langsung mempraktikkan pembuatan model K-Means dengan menggunakan python. Kita akan menggunakan contoh kasus yang sederhana, yaitu dengan menggunakan dataset iris.
Langkah 0 - Download Dataset
β¬οΈ Download β¬οΈ
Iris merupakan dataset yang menggambarkan 4 jenis bunga Iris berdasarkan panjang dan lebar dari sepal dan petal bunga. Dataset ini sebetulnya telah memiliki label (sehingga dapat digunakan untuk proses klasifikasi). Pada praktikum ini, kita akan berasumsi bahwa dataset tidak memiliki label sehingga relevan untuk proses klasterisasi.
Langkah 1 - Import Library
Import library yang dibutuhkan
# Import required library
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeansLangkah 2 - Load dan Inspeksi Data
Pada tahap ini, kita akan memuat data ke dalam dataframe kemudian melakukan inspeksi data untuk 5 data pertama.
Maka, akan didapatkan hasil sebagai berikut,
Selanjutnya, lakukan inspeksi profile data,
Didapatkan informasi bahwa terdapat 150 data dan tidak ada missing values pada seluruh variabel.
Langkah 3 - Seleksi Fitur
Dikarenakan kita hanya membutuhkan fitur untuk proses klasterisasi, maka kita perlu memisahkan antara fitur dan label dengan menggunakan proses slicing data.
Jika Anda perhatikan pada baris ke-2, index slicing yang digunakan adalah [:,1:-1], artinya kolom Id dan Species (label) tidak digunakan.
Cek data fitur dengan cara,
Hasilnya adalah,
Langkah 4 - Plotting
Pada tahap ini, kita akan melakukan proses plot menggunakan scatter plot untuk melihat sebaran data berdasarkan 2 fitur, yaitu SepalLengthCm dan SepalWidthCm.
Anda akan mendapatkan hasil scatterplot seperti berikut ini,

Jika diperhatikan secara visual, kita mungkin dapat berasumsi bahwa terdapat dua cluster pada data.
Langkah 5 - Membuat Model K-Means
Selanjutnya, kita akan membuat model K-Means dengan asumsi terdapat dua cluster sesuai dengan amatan visual pada scatterplot.
Setelah model mempelajari data yang kita miliki melalui fungsi fit_predict(), kita dapat melakukan pengecekan hasil klasterisasi dengan memanfaatkan scatterplot.
Hasil dari klasterisasi dan titik centroid dapat dilihat pada Gambar berikut ini,

Langkah 6 - Evaluasi Model
Untuk mengetahui apakah model klasterisasi yang dihasilkan memiliki performa yang baik, maka kita akan melakukan proses evaluasi. Nilai metrik evaluasi yang dapat kita gunakan salah satunya adalah sum of square error (SSE). Untuk mendapatkan nilai SSE, kita cukup mengakses properti inertia_ dari objek K-Means yang telah dilatih sebelumnya.
Anda akan mendapatkan nilai SSE seperti berikut ini,
NB: Anda mungkin mendapatkan nilai yang berbeda. Ingat, titik centroid awal ditentukan pada lokasi yang acak!
Langkah 7 - Menentukan k terbaik dengan Elbow Method
Pada pembuatan model klasterisasi, jika kita masih belum menentukan jumlah cluster yang akan digunakan, maka kita dapat menggunakan elbow method untuk mendapatkan jumlah cluster yang terbaik. Cara kerja elbow method cukup sederhana, yaitu,
Tentukan rentang k yang ingin dievaluasi.
Kalkulasi nilai SSE untuk setiap nilai k pada rentang yang telah ditentukan.
Buat grafik lineplot untuk mendapatkan visualisasi sebagai dasar justifikasi.
Jalakan kode diatas, maka Anda akan mendapatkan lineplot sebagai berikut,

Berdasarkan hasil lineplot SSE untuk setiap k, maka kita dapat berargumen bahwa nilai k terbaik adalah 3. Mengapa k=3? Hal ini dikarenakan pada nilai k=2 nilai SSE masih terlalu tinggi dibandingkan dengan k=4, sedangkan, misal k=8 sangat rendah. Jumlah cluster terbaik bukan karena nilai SSE yang rendah. SSE pasti aka semakin mengecil seiring dengan jumlah cluster yang dihasilkan. Hal ini dikarenakan jumlah anggota tiap cluster juga semakin mengecil dan cluster otomatis lebih sempit. Dalam konteks ini, kita harus dapat menemukan posisi dimana nilai k telah turun dengan tajam diikuti dengan penurunan yang lebih stabil. Posisi inilah yang dikenal dengan posisi "elbow". Dalam konteks fitur yang kita gunakan saat ini, nilai k=3 menjadi nilai yang paling optimal.
Last updated