Prediksi Harga Rumah AS

Prediksi Harga Rumah As



Membangun rumah adalah salah satu faktor tantangan dalam hidup kita. Sebelum dibangun, Anda bisa memperkirakan harga rumah Anda berdasarkan harga rumah sebelumnya. Faktor-faktor yang paling mempengaruhi harga rumah antara lain jumlah kamar (tempat tidur, kamar mandi, dll) dan luas tanah. Dengan begitu kita bisa memperkirakan anggaran yang dibutuhkan untuk membangun rumah tersebut.

Dalam panduan ini, kita akan melihat cara memprediksi harga rumah di AS menggunakan Machine Learning melalui Python. Pertama kita bahas dataset yang kita gunakan lalu preprocess datanya. Setelah itu, kami memvisualisasikan atribut yang ada dalam kumpulan data dan menerapkan algoritme Pembelajaran Mesin yang berbeda pada kumpulan data pelatihan (Seattle, Washington Agustus 2022 – Desember 2022). Terakhir, kami mengakhiri panduan ini dengan memprediksi harga beberapa rumah yang ada di kumpulan data Uji. Sebelum mengimplementasikan proyek ini, kita perlu memahami terminologi Machine Learning yang digunakan dalam proyek ini.







Regresi

Dalam Machine Learning, jika Anda bekerja dengan data numerik, Anda perlu memahami Regresi. Regresi adalah Teknik Supervised Learning dalam Machine Learning yang digunakan untuk memahami hubungan antara atribut independen dan atribut dependen (label kelas/target). Mesin tersebut memprediksi harga rumah dengan mempelajari setiap catatan yang ada dalam kumpulan data. Oleh karena itu, ini adalah pembelajaran yang diawasi.



Misalnya, dalam skenario kita, atribut independennya adalah jumlah tempat tidur, jumlah kamar mandi, luas tanah, kode pos, dll. Berdasarkan hal tersebut, kita dapat memprediksi harga rumah. Jadi, ini adalah atribut independen yang tidak bergantung pada apapun. Harga adalah atribut target atau label kelas yang bergantung pada atribut tersebut.



1. Regresi Linier

Algoritma Regresi Linier menunjukkan adanya hubungan linier antara variabel atribut terikat (Y) dan atribut bebas (X). Secara matematis kita dapat mengevaluasinya sebagai berikut:





DAN = kapak+b

Di sini, “a” dan “b” adalah Koefisien Linier.

Dengan Python, LinearRegression() tersedia di modul “sklearn.linear_model”. Kita akan melihat bagaimana menentukan hal ini saat mengimplementasikan proyek. Berikut ini adalah model dengan parameternya:



2. Pohon Keputusan

Pada dasarnya, Pohon Keputusan adalah representasi grafis untuk mendapatkan semua kemungkinan solusi suatu masalah berdasarkan kondisi yang disediakan menggunakan node. Node Keputusan digunakan untuk membuat keputusan dan node Daun mengacu pada output dari keputusan tertentu. Kita bisa memprediksi harga rumah kita dengan Decision Tree Regressor.

Dengan Python, DecisionTreeRegressor tersedia di modul “sklearn.tree”. Kita akan melihat bagaimana menentukan hal ini saat mengimplementasikan proyek. Berikut ini adalah model dengan parameternya:

3. Hutan Acak

Random Forest melakukan fungsi yang sama seperti Pohon Keputusan. Namun dibutuhkan Hutan (kumpulan Pohon Keputusan) dan menggabungkan (nilai rata-rata) semua keluaran dari Pohon Keputusan. Misalnya ukuran Random Forest adalah 3. Jadi, secara internal dibuat tiga pohon Keputusan dan hasil Harga Rumah dari Pohon Keputusan pertama adalah 20.000. Hasil Harga Rumah dari Pohon Keputusan kedua adalah 20.000. Dan hasil Harga Rumah dari Pohon Keputusan kedua adalah 20.000. Pohon Keputusan terakhir adalah 10000. 16,666.666 adalah hasil akhir ((20000+20000+10000)/3).

Dengan Python, RandomForestRegressor tersedia di modul “sklearn.ensemble”. Berikut ini adalah model dengan parameternya. Kita dapat menentukan jumlah pohon di parameter “n_estimators”. Ini adalah 100 secara default.

Penerapan

Lihat dengan cepat langkah-langkah dalam memprediksi harga Rumah AS. Kami mempertimbangkan kumpulan data house_train (file CSV) dengan catatan tahun 2016 (digunakan untuk melatih model Machine Learning). Kemudian, kami memprediksi catatan harga rumah (505) yang ada di file house_test.

1. Memuat Set Data Pelatihan dan Pengujian

Pandas adalah modul yang tersedia dengan Python yang digunakan untuk analisis data. Kami menggunakan modul ini untuk memuat kumpulan data ke dalam Lingkungan Python. Di sini, kami menggunakan Google Co sebagai Lingkungan Kode. Ini tersedia secara gratis. Hanya diperlukan akun Google.

Pertama, kita perlu memuat file dari PC lokal kita ke Colab Env. Unduh kumpulan data dari Di Sini .

# Unggah file house_train.csv dan house_test.csv ke Google Colab Anda

# satu setelah lainnya.

dari google. DAN AL impor file

file. mengunggah ( )

read_csv() adalah fungsi yang digunakan untuk memuat data CSV ke dalam variabel. Dibutuhkan nama file sebagai parameter.

impor panda

# Muat house_train.csv ke dalam variabel train_data

kereta_data = panda. baca_csv ( 'rumah_kereta.csv' )

# Muat house_test.csv ke dalam variabel test_data

tes_data = panda. baca_csv ( 'house_test.csv' )

# Simpan test_data ke dalam variabel test_data1

tes_data1 = tes_data

Mari kita lihat jumlah kolom dan catatan bukan nol di setiap kolom. Pandas.DataFrame.info() digunakan untuk mendapatkan informasi ini.

mencetak ( kereta_data. info ( ) )

mencetak ( tes_data1. info ( ) )

Keluaran:

2. Pemrosesan Awal Data

Di kedua kumpulan data, kolom “ukuran_lot” berisi nilai dengan kaki persegi dan acre (Anda akan menemukan variansnya dengan melihat baris di kolom “ukuran_unit”). Tapi formatnya harus dalam sqft. Jadi, kita perlu mengonversi nilai di kolom “ukuran_lot” dari acre menjadi sqft. Demikian pula, hal ini harus dilakukan untuk “test_data1”.

DataFrame.loc[] digunakan di sini untuk mencari “lot_size_units” dengan “acre” dan mengalikan nilai yang ada di “lot_size” dengan 43560.

# Ubah nilai lot_size acre menjadi Kaki persegi di train_data

kereta_data. tempat [ ( kereta_data [ 'ukuran_lot_unit' ] == 'hektar' ) , 'banyak ukuran' ] = kereta_data [ 'banyak ukuran' ] * 43560

# Ubah nilai lot_size acre menjadi Kaki persegi di test_data1

tes_data1. tempat [ ( tes_data1 [ 'ukuran_lot_unit' ] == 'hektar' ) , 'banyak ukuran' ] = tes_data1 [ 'banyak ukuran' ] * 43560

mencetak ( kereta_data. kepala ( ) )

mencetak ( tes_data1. kepala ( ) )

Keluaran:

Sekarang, Anda akan melihat bahwa semua nilai di kolom “lot_size” adalah nilai sqft.

Anda melihat beberapa nilai yang hilang di kolom ini. Mari kita ganti nilai NaN yang ada di kolom dengan rata-rata kolom yang sama di kedua kumpulan data.

DataFrame['column_name'].fillna() digunakan untuk mengisi nilai yang hilang dengan mean menggunakan fungsi mean(). DataFrame['column_name'].mean() diteruskan sebagai parameter ke fungsi finna(). Mari kita tampilkan meannya dan lihat hitungannya sekarang:

# Isi nilai yang hilang pada kolom lot_size dengan Mean nilai yang ada

kereta_data [ 'banyak ukuran' ] = kereta_data [ 'banyak ukuran' ] . merasa ( kereta_data [ 'banyak ukuran' ] . berarti ( ) )

# Tampilan Berarti

mencetak ( 'Data kereta Nilai Rata-rata:' , kereta_data [ 'banyak ukuran' ] . berarti ( ) )

mencetak ( hanya ( kereta_data [ 'banyak ukuran' ] ) )

# Isi nilai yang hilang pada kolom lot_size dengan Mean nilai yang ada

tes_data1 [ 'banyak ukuran' ] = tes_data1 [ 'banyak ukuran' ] . merasa ( tes_data1 [ 'banyak ukuran' ] . berarti ( ) )

# Tampilan Berarti

mencetak ( 'Data uji Nilai Rata-rata:' , tes_data1 [ 'banyak ukuran' ] . berarti ( ) )

mencetak ( hanya ( tes_data1 [ 'banyak ukuran' ] ) )

Keluaran:

Nilai yang hilang di kolom “lot_size” Train Dataset diganti dengan nilai rata-rata 18789.95194 dan nilai yang hilang di kolom “lot_size” Test Dataset diganti dengan nilai rata-rata 8961.0

3. Pembersihan Data

Saat melatih model, ada beberapa atribut yang tidak diperlukan dan tidak diperlukan untuk memprediksi hasilnya. Dalam kasus kami, ada tiga atribut yaitu “lot_size_units”, “zip_code”, dan “size_units” yang harus dihapus dari kedua dataset. pandas.DataFrame.drop() digunakan untuk menghapus tiga kolom ini dari kedua kumpulan data.

kereta_data = kereta_data. menjatuhkan ( [ 'ukuran_lot_unit' , 'Kode Pos' , 'ukuran_unit' ] , sumbu = 1 )

tes_data1 = tes_data1. menjatuhkan ( [ 'ukuran_lot_unit' , 'Kode Pos' , 'ukuran_unit' ] , sumbu = 1 )

mencetak ( kereta_data. info ( ) )

mencetak ( tes_data1. info ( ) )

Keluaran:

Sekarang, kumpulan datanya dalam kondisi baik. Kolom yang tidak diperlukan akan dihapus dan nilai yang hilang tidak ada.

4. Visualisasi Data

Mari buat histogram untuk kolom data Kereta. Fungsi pandas.DataFrame.hist() digunakan untuk menghasilkan histogram untuk semua atribut.

kereta_data. sejarah ( ukuran gambar = ( 4 , 9 ) )

Keluaran:

Histogram dihasilkan untuk kolom tempat tidur, kamar mandi, ukuran, ukuran_lot, dan harga untuk data Kereta.

Mari kita buat korelasi untuk semua bidang satu sama lain. Modul Plotly.express digunakan untuk memplot nilai yang berkorelasi.

impor secara plot. cepat

benar = kereta_data. benar ( )

# Plot data yang berkorelasi

lihat_gambar = secara plot. cepat . tunjukkan ( benar , teks_otomatis = BENAR )

# Menampilkan

lihat_gambar. menunjukkan ( )

Keluaran:

  1. Tempat tidur berkorelasi 0,2935 dengan harga, -0,059 berkorelasi dengan ukuran_lot, 0,77 berkorelasi dengan ukuran, dan 0,65 berkorelasi dengan kamar mandi.
  2. Kamar mandi berkorelasi 0,3173 dengan harga, -0,054 berkorelasi dengan ukuran_lot, 0,667 berkorelasi dengan kamar mandi, dan 0,771 berkorelasi dengan tempat tidur.
  3. Ukurannya berkorelasi 0,444 dengan harga, -0,044 berkorelasi dengan ukuran_lot, 0,667 berkorelasi dengan ukuran, dan 0,652 berkorelasi dengan tempat tidur.

5. Persiapan Model

Kita perlu menetapkan harga sebagai target dengan menghapusnya dari train_data. Pastikan atribut yang ada di data Train dan Test harus sama di fase ini.

target = kereta_data [ 'harga' ]

kereta_data = kereta_data. menjatuhkan ( [ 'harga' ] , sumbu = 1 )

mencetak ( kereta_data. info ( ) )

mencetak ( tes_data1. info ( ) )

Keluaran:

Sekarang, ada empat atribut independen (tempat tidur, kamar mandi, ukuran, dan ukuran_lot) dan harga adalah atribut dependen yang bergantung pada keempat atribut tersebut.

6. Melatih Model

Pertama, kami menerapkan algoritma RandomForestRegressor. Impor dari paket “sklearn.ensemble”. Ini adalah Teknik Ensembling.

  1. Buat model dari RandomForestRegressor(). Kami tidak meneruskan parameter apa pun ke model ini. Jadi, jumlah Pohon Keputusan adalah 100 secara default.
  2. Gunakan metode fit() agar sesuai dengan model. Dibutuhkan dua parameter. Parameter pertama adalah atribut dependen dan parameter kedua adalah label/target kelas.
  3. Gunakan metode score() untuk melihat Akurasi Model. Ini juga membutuhkan parameter yang sama seperti metode fit().
dari terpelajar ansambel impor Regresor Hutan Acak

# Tentukan Modelnya

model1 = Regresor Hutan Acak ( )

# Sesuaikan modelnya

model1. bugar ( kereta_data , target )

# Akurasi Model

mencetak ( model1. skor ( kereta_data , target ) * 100 )

Keluaran:

86.08400889419033

7. Uji Model dan Simpan Hasilnya

Ini adalah langkah terakhir dimana kita perlu memprediksi hasilnya dan menyimpannya.

  1. Metode prediksi() digunakan untuk memprediksi data Pengujian. Ini digunakan dengan model dan mengambil daftar nilai/DataFrame Bersarang.
  2. Gunakan metode to_csv() untuk menyimpan hasilnya ke dalam file CSV.
  3. Unduh file dari lingkungan Python (Google Colab).
# Prediksi test_data1 dengan model1.

tes_data [ 'Harga' ] = model1. meramalkan ( tes_data1 )

# Simpan test_data ke test_results.csv

tes_data. ke_csv ( 'hasil_tes.csv' )

# Unduh file ini dari Colab

file. unduh ( 'hasil_tes.csv' )

Keluaran:

Mari kita tampilkan 20 rekaman dari 505 rekaman. Anda dapat melihat bahwa kolom Harga berisi nilai prediksi untuk setiap rumah.

Model Lainnya

Mari kita prediksi rumah menggunakan DecisionTreeRegressor. Anda dapat mengimpornya dari modul “sklearn.tree”.

dari terpelajar pohon impor Regresor Pohon Keputusan

# Tentukan Modelnya

model2 = Regresor Pohon Keputusan ( )

# Sesuaikan modelnya

model2. bugar ( kereta_data , target )

# Akurasi Model

mencetak ( model2. skor ( kereta_data , target ) * 100 )

# Prediksi test_data1 dengan model1.

tes_data [ 'Harga' ] = model2. meramalkan ( tes_data1 )

# Simpan test_data ke test_results.csv

tes_data. ke_csv ( 'hasil_tes.csv' )

# Unduh file ini dari Colab

file. unduh ( 'hasil_tes.csv' )

Keluaran:

99.94183165335028

Anda dapat melihat hasil prediksinya di sini:

Mari kita prediksi rumah menggunakan LinearrEgression. Impor model dari modul “sklearn.linear_model”.

dari terpelajar model_linier impor Regresi linier

# Tentukan Modelnya

model3 = Regresi linier ( )

# Sesuaikan modelnya

model3. bugar ( kereta_data , target )

# Prediksi test_data1 dengan model1.

tes_data [ 'Harga' ] = model3. meramalkan ( tes_data1 )

# Simpan test_data ke test_results.csv

tes_data. ke_csv ( 'hasil_tes.csv' )

# Unduh file ini dari Colab

file. unduh ( 'hasil_tes.csv' )

Anda dapat melihat hasil prediksinya di sini:

Kesimpulan

Sekarang, Anda dapat memprediksi harga rumah berdasarkan atribut seperti jumlah kamar, luas tanah, dll. Dalam panduan ini, kami mempertimbangkan data rumah sebenarnya dari Seattle, Washington. Dengan menggunakan teknik Regresi seperti Regresi Linier, Pohon Keputusan, dan Hutan Acak, kami memperkirakan harga 505 rumah. Semua langkah (Pemrosesan Awal Data, Pembersihan Data, dan Visualisasi Data) yang harus dilakukan sebelum melatih model dijelaskan langkah demi langkah dengan cuplikan kode dan keluaran.