Data Mining – Jurusan Teknologi Informasi
Jobsheet – Clustering dengan Python
1.1. Tujuan Praktikum
Setelah menyelesaikan praktikum ini, mahasiswa mampu:
• Mengimplementasikan Clustering menggunakan Python
1.2. Peralatan yang dibutuhkan
Beberapa peralatan yang dibutuhkan dalam menyelesaikan praktikum ini adalah:
• Dataset terkait
1.3. Dasar Teori
1.3.1. K-Means
Metode K-Means digunakan untuk membagi data ke dalam kelompok (clusters)
berdasarkan kesamaan karakteristik. Dalam Python, KMeans biasanya diimplementasikan
menggunakan library scikit-learn.
K-Means bekerja dengan cara sebagai berikut:
1. Menentukan jumlah kluster 𝑘 yang diinginkan.
2. Menginisialisasi 𝑘 titik pusat kluster (centroids) secara acak.
3. Mengulang langkah-langkah berikut sampai konvergensi:
a. Menetapkan setiap titik data ke kluster terdekat berdasarkan jarak Euclidean ke
titik pusat kluster.
b. Menghitung ulang posisi titik pusat kluster sebagai rata-rata dari semua titik data
yang ditetapkan ke kluster tersebut.
Beberapa hal yang perlu diperhatikan ketika menggunakan K-Means Clustering adalah:
1. Pemilihan jumlah kluster 𝑘: Pemilihan nilai 𝑘 sangat penting dan sering dilakukan
menggunakan metode elbow atau silhouette.
2. Inisialisasi centroid: Inisialisasi centroid yang buruk dapat menyebabkan hasil yang
buruk. Scikit-learn menggunakan metode k-means++ untuk inisialisasi yang lebih
baik.
Data Mining – Jurusan Teknologi Informasi
Skalabilitas: K-Means dapat diterapkan pada dataset besar, tetapi performa bisa menurun
dengan jumlah data yang sangat besar. Untuk mencari K Optimal dapat digunakan teknik
Elbow Method yang akan dijelaskan pada subbab berikut.
1.3.2. Elbow Method
Elbow Method adalah sebuah teknik yang digunakan untuk menentukan jumlah kluster
optimal 𝑘 dalam algoritma KMeans. Metode ini membantu mengidentifikasi titik di mana
penambahan kluster tambahan memberikan penurunan signifikan yang lebih kecil dalam
variansi total (Within-cluster sum of squares, WCSS), sehingga membentuk "siku" (elbow)
pada grafik.
Langkah-langkah Teknik Elbow Method secara berurutan:
1. Jalankan KMeans untuk berbagai nilai 𝑘:
• Mulai dari 𝑘 = 1 hingga 𝑘 yang lebih besar (misalnya, 10).
• Untuk setiap 𝑘, hitung total variansi dalam kluster (WCSS).
2. Hitung WCSS untuk setiap 𝑘
WCSS adalah jumlah kuadrat jarak antara setiap titik data dan centroid kluster
terdekatnya.
3. Plot WCSS terhadap jumlah kluster 𝑘
Buat grafik dengan sumbu x sebagai jumlah kluster 𝑘
4. Temukan titik "siku":
Titik di mana penurunan WCSS mulai berkurang signifikan, membentuk sudut tajam
adalah jumlah kluster yang optimal.
1.3.3. Agglomerative Clustering
Agglomerative Clustering adalah metode clustering hierarkis yang bekerja dengan
menggabungkan data atau cluster yang paling mirip secara bertahap hingga terbentuk
jumlah cluster yang diinginkan.
Langkah:
1. Inisialisasi cluster → awalnya setiap titik data dianggap sebagai cluster tunggal
2. Hitung jarak antarcluster
3. Gabungkan 2 cluster terdekat
4. Hitung ulang jarak antarcluster hingga menjadi 1 cluster besar
Data Mining – Jurusan Teknologi Informasi
1.3.4. DBScan
DBSCAN (Density-Based Spatial Clustering of Applications with Noise) adalah metode
clustering berbasis kepadatan yang mengelompokkan data berdasarkan jumlah titik data di
sekitar suatu area tertentu.
Langkah:
1. Menentukan parameter DBSCAN
Epsilon (ε) → jarak maksimum agar titik dianggap bertetangga.
MinPts → jumlah minimum titik dalam suatu area agar dianggap padat (dense region).
2. Memilih satu titik data
Ambil satu titik yang belum diproses.
3. Mencari tetangga titik
Hitung semua titik yang berada dalam radius ε dari titik tersebut.
4. Menentukan tipe titik
Jika jumlah tetangga ≥ MinPts, titik menjadi core point.
Jika jumlah tetangga < MinPts tetapi berada di sekitar core point, titik menjadi border
point.
Jika tidak memenuhi keduanya, titik menjadi noise (outlier).
5. Membentuk cluster
Mulai dari core point, tambahkan semua titik yang terhubung secara kepadatan
(density-connected) ke cluster yang sama.
6. Memperluas cluster
Periksa tetangga dari core point lain yang ditemukan dan tambahkan titik-titik terkait
sampai tidak ada lagi titik yang dapat ditambahkan.
7. Mengulangi proses
Pilih titik lain yang belum diproses dan ulangi langkah di atas sampai semua titik selesai
diperiksa.
Data Mining – Jurusan Teknologi Informasi
Percobaan K-Means menggunakan Python
1. Pada percobaan ini akan dilakukan klasterisasi data Resiko Kredit calon nasabah, file
credit_data_sample.csv sudah disertakan.
Lakukan import Library yang dibutuhkan:
# Import library yang diperlukan
import pandas as pd
import numpy as np
import [Link] as plt
import seaborn as sns
from [Link] import KMeans
from [Link] import StandardScaler
from [Link] import silhouette_score
2. Langkah berikutnya adalah meload data dari Google Drive (silakan menyesuaikan path
atau gunakan metode import dataset seperti jobsheet sebelumnya)
# Load data
df =
pd.read_csv('/content/drive/MyDrive/Kuliah/2025 Data
Mining/Minggu 10/credit_data_sample.csv', sep=';')
# Tampilkan 5 data pertama
print([Link]())
3. Selanjutnya kita akan pilih fitur untuk Clustering, untuk saat ini kita pilih fitur numerik
saja.
features = ['Age', 'Credit_amount', 'Duration',
'Employment_since']
X = df[features]
Data Mining – Jurusan Teknologi Informasi
4. Karena skala antara fitur berbeda-beda, maka kita lakukan standardisasi data.
# Standarisasi data
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
5. Langkah berikutnya adalah menentukan jumlah cluster. Jumlah cluster dapat ditentukan
sesuai kebutuhan kita, atau dapat juga dicari jumlah cluster optimal menggunakan Elbow
Method.
# Elbow Method
inertia = []
K = range(1, 10)
for k in K:
kmeans = KMeans(n_clusters=k, random_state=42)
[Link](X_scaled)
[Link](kmeans.inertia_)
# Plot hasil elbow
[Link](figsize=(8,5))
[Link](K, inertia, 'bx-')
[Link]('Jumlah Cluster (k)')
[Link]('Inertia')
[Link]('Metode Elbow untuk Menentukan k')
[Link](True)
[Link]()
Data Mining – Jurusan Teknologi Informasi
6. Langkah berikutnya kita lakukan K-Means Clustering dengan 3 Cluster.
# Buat model KMeans
kmeans = KMeans(n_clusters=3, random_state=42)
df['Cluster'] = kmeans.fit_predict(X_scaled)
# Lihat hasil clustering
print([Link]())
7. Visualisasi hasil Cluster dapat dijalankan dengan Code berikut.
# Visualisasi hasil clustering
[Link](figsize=(8,6))
[Link](x=df['Credit_amount'], y=df['Duration'],
hue=df['Cluster'], palette='viridis')
[Link]('Cluster Calon Kreditur Berdasarkan Jumlah Kredit
dan Durasi')
[Link]('Credit Amount')
[Link]('Duration')
[Link](True)
[Link]()
Kita dapat lakukan interprestasi hasil Clustering tiap cluster sebagai berikut:
a. Cluster 0 = Risiko rendah → kredit kecil, durasi pendek.
b. Cluster 1 = Risiko sedang → kredit sedang, durasi menengah.
c. Cluster 2 = Risiko tinggi → kredit besar, durasi panjang.
Data Mining – Jurusan Teknologi Informasi
8. Berikutnya kita akan lihat performa dari K-Means model menggunakan Silhouette Score
# 7a. Hitung Silhouette Score
silhouette_avg = silhouette_score(X_scaled,
df['Cluster'])
print(f"\nSilhouette Score: {silhouette_avg:.3f}")
# 7b. Tampilkan inertia akhir
print(f"Inertia (k=3): {kmeans.inertia_:.3f}")
# Step 8 — Visualisasi hasil clustering (2 fitur:
Credit_amount vs Duration)
[Link](figsize=(8,6))
[Link](
x=df['Credit_amount'],
y=df['Duration'],
hue=df['Cluster'],
palette='viridis',
s=100
)
[Link]('Cluster Calon Kreditur Berdasarkan Credit
Amount dan Duration')
[Link]('Credit Amount')
[Link]('Duration')
[Link](title='Cluster')
[Link](True)
[Link]()
9. Semakin kecil nilai Inertia, maka semakin kecil jarak antar data dalam satu cluster, nilai
ini terlihat dari grafik Elbow Method. Silhouette Score (SC) menghitung seberapa mirip
objek dengan clusternya sendiri dibandingkan dengan cluster lain. Nilainya antara -1
sampai 1. Score 0,549 sudah dianggap hasil yang cukup baik. Cluster sudah cukup
terpisah tetapi belum sempurna.
Nilai Score Interpretasi
Cluster sangat baik (data sangat cocok dengan clusternya
~ 1.0 sendiri, dan jauh dari cluster lain)
~ 0.5 Cluster cukup baik (struktur cluster lumayan jelas)
~ 0.0 Cluster saling tumpang tindih (overlapping), kurang jelas
~ < 0.0 Salah cluster, data lebih cocok di cluster lain
Data Mining – Jurusan Teknologi Informasi
Tugas:
1. Lakukan K-Means Clustering pada sebuah dataset. Tentukan nilai silhoutte score nya.
Buat grafik elbow method untuk mengidentifikasi nilai k yang optimal.
2. Lakukan percobaan clustering menggunakan DBScan pada contoh data.
import numpy as np
import [Link] as plt
from [Link] import DBSCAN
from [Link] import make_blobs
# Membuat data contoh
X, _ = make_blobs(n_samples=300, centers=4, cluster_std=0.60,
random_state=0)
# Menggunakan DBSCAN
dbscan = DBSCAN(eps=0.3, min_samples=10)
labels = dbscan.fit_predict(X)
# Visualisasi hasil clustering
[Link](X[:, 0], X[:, 1], c=labels, cmap='viridis')
[Link]("Hasil DBSCAN Clustering")
[Link]()
Data Mining – Jurusan Teknologi Informasi
Lakukan percobaan clustering menggunakan Agglomerative Clustering pada contoh
data yang sama.
from [Link] import AgglomerativeClustering
# Menggunakan Agglomerative Clustering
agg_clust = AgglomerativeClustering(n_clusters=4)
agg_labels = agg_clust.fit_predict(X)
# Visualisasi hasil clustering
[Link](X[:, 0], X[:, 1], c=agg_labels,
cmap='viridis')
[Link]("Hasil Agglomerative Clustering")
[Link]()
Perhatikan bahwa hasil clustering untuk data contoh dengan DBScan tidak sebaik
dengan Agglomerative Clustering. Lakukan analisa, mengapa demikian? Coba lakukan
perubahan parameter eps (epsilon) dan min_samples (minPts) dengan beberapa
kombinasi nilai agar cluster yang dihasilkan lebih baik. Screenshot hasil scatter plot
clustering dengan DBScan yang sudah diperbaiki dan tuliskan nilai eps dan min_samples
terbaik yang dapat Anda temukan.
--- SELAMAT BELAJAR ---