K-means dalam analisis Harga Rumah

Galih Setiawan Nurohim
3 min readNov 28, 2024

--

k-means

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:

  1. Mengelompokkan rumah berdasarkan fitur-fitur tertentu (misalnya, ukuran, jumlah kamar, dan tahun dibangun).
  2. Memahami karakteristik dari masing-masing cluster.
  3. 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 rumah
  • GrLivArea: Luas ruang tamu
  • GarageCars: Jumlah mobil yang dapat ditampung di garasi
  • GarageArea: Luas garasi
  • TotalBsmtSF: Total luas basement
  • FullBath: Jumlah kamar mandi penuh
  • YearBuilt: 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!

--

--

Galih Setiawan Nurohim
Galih Setiawan Nurohim

No responses yet