Membuat House Prediction dengan Decision Tree

2,000 Views

Halo teman-teman,

Di artikel kali ini, kita akan membuat model house price prediction menggunakan algoritma decision tree.

Mari kita mulai membuat model kita dengan Python. Kali ini dataset yang kita gunakan adalah dataset yang lebih real yang bisa kita ambil dari Kaggle.

Dataset

Dataset yang akan kita pakai adalah House Price Dataset yang berisi 12 kolom yang dapat membantu kita untuk mengelompokkan harga rumah.

Import Libraries

Seperti biasa, hal yang pertama kali kita lakukan sebelum membuat model adalah mengimpor libraries.

import pandas as pd
import numpy as np  
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeRegressor
from sklearn.metrics import r2_score

Beberapa libraries diatas merupakan libraries yang sering digunakan dalam pemodelan machine learning, Pandas nantinya akan kita pakai untuk membuat dan mengolah dataset menjadi dataframe. Numpy digunakan untuk mengolah data di dalam dataframe, dan yang lainnya akan dijelaskan di sub artikel selanjutnya.

Load Dataset

Hal yang selanjutnya kita lakukan adalah memuat dataset yang akan kita olah.

df = pd.read_csv('House_Rent_Dataset.csv')

Kode diatas digunakan untuk membaca dataset yang telah diimport tadi. Read_csv merupakan fungsi dari library pandas yang berguna untuk membaca file berformat .csv.

Eksplorasi Data

Sebelum kita masuk ke pengolahan data, ada baiknya kita terlebih dahulu mengeksplorasi data yang akan kita olah. Eksplorasi data berguna agar kita mengetahui tipe data yang ada di dalam dataset juga apakah ada cell yang kosong di dalam dataset.

df.info()  
<class 'pandas.core.frame.DataFrame'>  
RangeIndex: 4746 entries, 0 to 4745  
Data columns (total 12 columns):  
# Column Non-Null Count Dtype  
- - - - - - - - - - - - - - -  
0 Posted On 4746 non-null object  
1 BHK 4746 non-null int64  
2 Rent 4746 non-null int64  
3 Size 4746 non-null int64  
4 Floor 4746 non-null object  
5 Area Type 4746 non-null object  
6 Area Locality 4746 non-null object  
7 City 4746 non-null object  
8 Furnishing Status 4746 non-null object  
9 Tenant Preferred 4746 non-null object  
10 Bathroom 4746 non-null int64  
11 Point of Contact 4746 non-null object  
dtypes: int64(4), object(8)  
memory usage: 445.1+ KB

Dari sini kita dapat mengetahui tipe data yang dipakai masing-masing kolom dalam dataset.

Mengubah Data Kategorikal Menjadi Numerik

Dapat kita ketahui bahwa beberapa data yang ada di dataset kita masih merupakan data kategorikal atau data yang sulit untuk diolah oleh komputer. Maka dari itu, kita harus merubah data kategorikal kita menjadi data numerik agar komputer dapat mengolahnya dengan baik.

df['City']= df.groupby("City").ngroup()  
df['Area Type']= df.groupby("Area Type").ngroup()  
df['Furnishing Status']= df.groupby("Furnishing Status").ngroup()

Kode diatas berguna untuk mengubah data kategorikal menjadi numerik dengan cara mengelompokkan kata-kata yang sama.

Memisahkan Atribut dan Label

Untuk dapat melatih model kita, kita harus memisahkan atribut dan label agar mesin dapat mempelajari dataset yang akan kita berikan. Atribut berperan sebagai petunjuk sedangkan label berperan sebagai jawaban atau kelompok yang nantinya akan dijadikan acuan untuk memeriksa benar salahnya tebakan dari mesin.

X = np.asarray(df.drop(['Rent'], axis=1))  
y = np.asarray(df['Rent'])

Memisahkan Data Train dan Data Test

Dalam melatih model, kita harus memisahkan data kita menjadi data untuk training model dan data untuk melakukan test terhadap model yang telah di train. Hal ini bertujuan agar tidak terjadi underfitting atau overfitting pada model.

X_train, X_test, y_train, y_test = train_test_split(
    X, 
    y, 
    test_size=0.2, 
    random_state=4
)

Melatih Model

Berikut adalah tahapan kita dalam melatih model

clf = DecisionTreeRegressor()  
clf.fit(X_train,y_train)

Mengecek Akurasi Pada Model

Tentu saja setelah kita melatih model, hal selanjutnya yang harus kita lakukan adalah mengecek akurasi pada model untuk mengetahui apakah ada indikasi overfitting atau underfitting dalam model kita.

yhat = clf.predict(X_test)  
r2_score(y_test, yhat)  
0.9909972282120773

Wah!!!, ternyata akurasi pada model kita tergolong baik karena menyentuh angka 99%.

Baiklah selesai sudah perjalanan kita dalam membuat model prediksi harga rumah menggunakan Decision Tree, tunggu artikel selanjutnya ya..

See You!!