K-means dalam analisis Harga Rumah
Dalam pertemuan kelas kemarin, kita telah membahas metode clustering, khususnya algoritma K-Means, untuk menganalisis harga rumah menggunakan dataset yang tersedia. Di artikel ini, saya ingin menjelaskan kembali materi tersebut dalam bentuk yang lebih terstruktur, lengkap dengan contoh implementasi dalam Python.
Business Understanding
Apa itu Business Understanding? Business Understanding adalah fase pertama dari model CRISP-DM (Cross Industry Standard Process for Data Mining), yang sangat penting dalam menjalankan proyek data mining. Fase ini memastikan bahwa kita memahami tujuan bisnis dan pertanyaan yang ingin dijawab sebelum melakukan analisis data lebih lanjut.
Tujuan Analisis
Dalam konteks kita, tujuan analisis ini adalah untuk mengeksplorasi data harga rumah dan mengidentifikasi pola yang ada. Dengan menggunakan teknik clustering K-Means, kita bertujuan untuk:
- Mengelompokkan rumah berdasarkan fitur-fitur tertentu (misalnya, ukuran, jumlah kamar, dan tahun dibangun).
- Memahami karakteristik dari masing-masing cluster.
- Memberikan rekomendasi harga berdasarkan kelompok yang dihasilkan.
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split #pelatihan data
from sklearn.cluster import KMeans #model data mining
from sklearn.preprocessing import StandardScaler #standarisasi
#evaluasi model
from sklearn.metrics import silhouette_score, davies_bouldin_score, calinski_harabasz_score, adjusted_rand_score, normalized_mutual_info_score
from sklearn.metrics import silhouette_samples, silhouette_score
import matplotlib.pyplot as plt #visualisasi
import seaborn as sns #visualisasi
Data Understanding
Sumber Data
Dataset yang digunakan adalah HousePriceTrain.csv
, yang berisi informasi tentang harga rumah dan fitur-fitur relevan lainnya. Sebelum mulai melakukan analisis, kita perlu memahami struktur dan isi dataset.
Memeriksa dan Membersihkan Data
Langkah awal adalah memeriksa apakah ada nilai yang hilang atau “NaN” dalam dataset. Dalam kasus ini, kita menangani nilai hilang dengan mengisi kolom yang hilang dengan rata-rata nilai masing-masing kolom numerik
data = pd.read_csv('HousePriceTrain.csv')
data.fillna(data.mean(), inplace=True)
Memilih Fitur
Setelah melakukan pembersihan data, kita menentukan fitur-fitur mana yang akan digunakan untuk analisis clustering. Dalam hal ini, kita memilih fitur-fitur berikut:
OverallQual
: Kualitas keseluruhan rumahGrLivArea
: Luas ruang tamuGarageCars
: Jumlah mobil yang dapat ditampung di garasiGarageArea
: Luas garasiTotalBsmtSF
: Total luas basementFullBath
: Jumlah kamar mandi penuhYearBuilt
: Tahun rumah dibangun
Data Preparation
Standarisasi Data
Sebelum menerapkan algoritma K-Means, penting untuk melakukan standarisasi data agar semua fitur memiliki skala yang setara. Hal ini menghindari fitur dengan rentang nilai yang besar mempengaruhi hasil clustering.
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
Pembagian Data
Selanjutnya, kita membagi data menjadi dua set: data pelatihan dan data pengujian, dengan proporsi 80% untuk pelatihan dan 20% untuk pengujian.
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.2, random_state=42)
Modeling
Penerapan K-Means
Setelah data siap, kita dapat menerapkan algoritma K-Means untuk mengelompokkan rumah ke dalam beberapa cluster.
from sklearn.cluster import KMeans
kmeans = KMeans(n_clusters=4, random_state=42)
kmeans.fit(X_scaled)
data['Cluster'] = kmeans.labels_
Evaluasi Model
Setelah melakukan clustering, langkah selanjutnya adalah mengevaluasi hasil clustering dengan menggunakan berbagai metrik.
- Silhouette Score: Mengukur seberapa baik objek dalam cluster yang sama, semakin tinggi semakin baik.
- Davies-Bouldin Index: Semakin rendah indeks ini, semakin baik pemisahan antara cluster.
- Calinski-Harabasz Index: Semakin tinggi nilai ini, semakin baik.
Berikut adalah cara kita menghitung metrik tersebut:
from sklearn.metrics import silhouette_score, davies_bouldin_score, calinski_harabasz_score
sil_score = silhouette_score(X_scaled, kmeans.labels_)
db_index = davies_bouldin_score(X_scaled, kmeans.labels_)
ch_index = calinski_harabasz_score(X_scaled, kmeans.labels_)
Visualisasi Hasil
Untuk memahami hasil clustering dengan lebih baik, kita membuat visualisasi scatter plot yang menunjukkan Cluster terhadap YearBuilt
dan SalePrice
import matplotlib.pyplot as plt
import seaborn as sns
plt.figure(figsize=(10, 6))
sns.scatterplot(data=data, x='YearBuilt', y='SalePrice', hue='Cluster', palette='viridis')
plt.title('Clustering K-Means dari Harga Rumah')
plt.show()
Kesimpulan
Dengan menggunakan metode clustering K-Means, kita tidak hanya dapat mengelompokkan harga rumah ke dalam clusters, tetapi juga mendapatkan wawasan yang lebih dalam mengenai karakteristik dari setiap kelompok. Hasil ini dapat sangat berguna bagi pengembang, agen real estate, maupun investor untuk mengetahui segmen pasar yang lebih menarik. Analisis semacam ini memberikan dasar yang kuat untuk pengambilan keputusan berbasis data.
Saran saya, coba terapkan kode yang telah dibahas di atas ke dalam lingkungan Python yang kalian miliki dan eksplorasilah dataset lebih lanjut. Selamat belajar dan semoga sukses!