https://github.com/juwono136/predictive-analytics-machine-learning-model
Predictive Analysis using a Comparison of Three Machine Learning Algorithms (KNN, Random Forest, and Boosting Algorithm) to Predict Home Selling Prices.
https://github.com/juwono136/predictive-analytics-machine-learning-model
boosting-algorithms knn-regression machine-learning predictive-analytics random-forest-regression sklearn-library
Last synced: over 1 year ago
JSON representation
Predictive Analysis using a Comparison of Three Machine Learning Algorithms (KNN, Random Forest, and Boosting Algorithm) to Predict Home Selling Prices.
- Host: GitHub
- URL: https://github.com/juwono136/predictive-analytics-machine-learning-model
- Owner: Juwono136
- Created: 2023-11-10T11:33:34.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2023-11-18T04:02:06.000Z (over 2 years ago)
- Last Synced: 2023-11-18T05:21:53.336Z (over 2 years ago)
- Topics: boosting-algorithms, knn-regression, machine-learning, predictive-analytics, random-forest-regression, sklearn-library
- Language: Jupyter Notebook
- Homepage:
- Size: 4.63 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Predictive Analytics - Prediksi Harga Jual Rumah Menggunakan Algoritma Machine Learning

Untuk penjelasan dan file projek dalam versi Bahasa Inggris silahkan [klik disini](https://www.kaggle.com/code/juwonoindo/predictive-analytics-using-3-ml-models-algorithms)
*For the explanation and project files in the English version, please [click here](https://www.kaggle.com/code/juwonoindo/predictive-analytics-using-3-ml-models-algorithms)*
## Domain Proyek
Fluktuasi atau perubahan harga rumah dapat dipengaruhi oleh beberapa faktor termasuk lokasi, ukuran rumah, kondisi bangunan, faktor ekonomi makro dan sebagainya. Beberapa faktor tadi terkadang membingungkan dan membutuhkan waktu untuk mempertimbangkan dan memilih rumah yang sesuai. Oleh karena itu, dibutuhkan sebuah sistem untuk memprediksi harga rumah yang dapat memberikan estimasi dengan tepat/pantas dan membantu para penjual dan pembeli dalam mengambil keputusan.
Dengan membangun sistem yang bisa memprediksi harga rumah, pembeli maupun penjual akan mendapatkan harga rumah yang akurat serta ekspektasi harga yang realistis sehingga bisa meminimalkan risiko overpricing atau underpricing. Jika seorang investor atau pengembang, memiliki perkiraan harga rumah yang akurat dapat membantu dalam menentukan apakah suatu properti merupakan investasi yang menguntungkan atau tidak.
Untuk proses pengembangan model machine learning, dataset yang digunakan pada proyek ini adalah [Ames Housing Dataset](https://www.kaggle.com/competitions/house-prices-advanced-regression-techniques/overview). Dataset ini berisi berbagai atribut rumah yang ada di daerah Ames, Iowa, United States termasuk dengan harga jualnya dan jumlah fitur yang mencangkup setiap aspek rumah hunian di daerah tersebut. Menurut hasil studi dari [Alan Ihre et al](https://www.diva-portal.org/smash/record.jsf?pid=diva2%3A1354741&dswid=-7113) dalam jurnalnya berjudul *Predicting House Prices with Machine Learning Methods* dengan menggunakan dataset yang sama, didapat hasil bahwa permasalahan mengenai prediksi harga rumah bisa menggunakan metode regresi seperti misalnya KNN (K-Nearest Neighbor) atau Random Forest. Dengan membangun model prediksi harga rumah berdasarkan dataset dari daerah Ames, diharapkan hasil model dari proyek ini dapat juga digunakan untuk memprediksi harga rumah di daerah lain.
## Business Understanding
### Problem Statements
Sekarang, Misalkan ada sebuah perusahaan atau pengembang properti perumahan yang ingin menentukan harga jual rumah pantas tapi perusahaan tetap ingin mendapat keuntungan sebesar mungkin dari penjualan properti tersebut. Berdasarkan kondisi yang telah diuraikan sebelumnya, perusahaan akan mengembangkan sistem yang mampu memprediksi harga rumah untuk menjawab permasalahan berikut:
- Dari serangkaian fitur yang ada, fitur apa saja yang paling berpengaruh terhadap harga jual rumah?
- Berapa harga pasar jual rumah dengan karakteristik atau fitur tertentu?
### Goals
Untuk menjawab pertanyaan tersebut, perusahaan akan membuat predictive modelling dengan tujuan atau goals sebagai berikut:
- Mengetahui fitur yang paling berkorelasi dengan harga jual rumah.
- Membuat model machine learning yang dapat memprediksi harga jual rumah seakurat mungkin berdasarkan fitur - fitur yang ada.
### Metodologi
Prediksi harga adalah tujuan yang ingin dicapai dan harga merupakan variabel kontinu. Dalam predictive analytics, untuk data yang bersifat variabel kontinu artinya merupakan permasalahan regresi. Oleh karena itu, metodologi pada proyek ini adalah: membangun model regresi dengan harga jual rumah sebagai target.
### Solution Statements
Berdasarkan tujuan atau goals yang sudah dijelaskan sebelumnya, solusi yang diberikan untuk menyelesaikan permasalahan adalah sebagai berikut:
- Membuat sebuah model untuk memprediksi harga jual rumah. Pengembangan model akan menggunakan beberapa algoritma machine learning yaitu K-Nearest Neighbor, Random Forest, dan Boosting Algorithm dengan mengatur hyperparameter tuning dan melakukan improvement pada baseline model. Dari ketiga model ini, akan dipilih satu model yang memiliki nlai kesalahan prediksi terkecil untuk membuat model yang seakurat mungkin.
- Metrik digunakan untuk mengevaluasi seberapa baik model dalam memprediksi harga. Karena kasus kali ini merupakan kasus regresi, beberapa metrik yang digunakan adalah Mean Squared Error (MSE) dan Root Mean Squared Error (RMSE). Secara umum, metrik ini mengukur seberapa jauh hasil prediksi dengan nilai sebenarnya.
## Data Understanding
Data yang digunakan pada proyek ini adalah Ames Housing Dataset yang diunduh dari platform [Kaggle](https://www.kaggle.com/competitions/house-prices-advanced-regression-techniques/data). Dataset ini merupakan dataset competition yang diguanakan untuk latihan di Kaggle dan didalamnya terdapat 1.460 jenis rumah hunian dengan berbagai karakteristik dan harga. Karakteristik terdiri dari 79 jenis fitur yang mencangkup fitur numerik dan non-numerik serta terdapat 1 label yaitu sale price (harga rumah) sebagai variabel target. Fitur numerik seperti misalnya MSSub Class, Lot Frontage, dan Lot Area, sedangkan fitur non-numerik misalnya Street, Alley, dan Lot Shape. 79 Jenis fitur ini adalah fitur yang akan digunakan dalam menentukan pola data, sedangkan harga jual merupakan fitur target. Karena banyaknya jumlah fitur/variabel yang tersedia dalam dataset, maka dibuatkan file bernama data_description.txt untuk melihat informasi lebih lengkap mengenai kategori dan penjelasan dari masing - masing fitur yang tersedia. Berikut adalah struktur folder Ames Housing Dataset yang sudah di download:
├── house-prices <- nama folder utama.
├── data_description.txt <- berisi kategori dan penjelasan lengkap dari masing - masing fitur.
├── sample_submission.csv <- berisi contoh submission kompetisi.
├── test.csv <- test data untuk melakukan pengujian model.
└── train.csv <- train data untuk melatih model.
### Variabel - variabel pada Ames Housing Dataset adalah sebagai berikut:
- SalePrice : Harga jual rumah dalam dollar. Ini adalah variabel target yang ingin diprediksi.
- MSSubClass : Tipe atau kelas bangunan, terdiri dari beberapa jenis kelas rumah yang direpresentasikan dalam bentuk angka.
- MSZoning : Klasifikasi zonasi umum dari penjualan properti yang direpresentasikan dalam bentuk huruf seperti A (Agriculture/Pertanian), C (Commercial/Komersial), FV (Pemukiman Desa Terapung), I (Industri), RH (Kepadatan tinggi perumahan), RL (Kepadatan rendah perumahan), RP (Kepadatan rendah perumahan taman), dan RM (Kepadatan menengah perumahan).
- LotFrontage : Panjang linear dari jalan yang terhubung ke properti.
- LotArea : Luas lot (lahan/tanah) dalam kaki persegi.
- Street : Jenis akses jalan ke properti.
- Alley : Jenis akses gang ke properti.
- LotShape : Bentuk umum dari properti.
- LandContour : Kontur tanah dari properti.
- Utilities : Jenis utilitas yang tersedia.
- LotConfig : Konfigurasi lot.
- LandSlope : Kemiringan properti.
- Neighborhood : Lokasi fisik dalam batas kota Ames.
- Condition1 : Proksimitas (kedekatan) dengan properti.
- Condition2 : Proksimitas terhadap berbagai kondisi di dekat properti (jika lebih dari satu).
- BldgType : Tipe hunian.
- HouseStyle : Gaya hunian.
- OverallQual : Penilaian bahan/material dan penyelesaian keseluruhan rumah.
- OverallCond : Penilaian kondisi keseluruhan rumah.
- YearBuilt : Tanggal konstruksi asli.
- YearRemodAdd : Tanggal remodel (sama dengan tanggal konstruksi jika tidak ada renovasi atau penambahan).
- RoofStyle : Jenis atap.
- RoofMatl : Bahan atap.
- Exterior1st : Penutup luar rumah.
- Exterior2nd : Penutup luar rumah (jika lebih dari satu bahan).
- MasVnrType : Jenis veneer batu bata.
- MasVnrArea : Luas veneer batu bata dalam kaki persegi.
- ExterQual : Kualitas material pada eksterior.
- ExterCond : Kondisi saat ini dari material pada eksterior.
- Foundation : Jenis pondasi.
- BsmtQual : Ketinggian basement.
- BsmtCond : Kondisi umum basement.
- BsmtExposure : Dinding tingkat berjalan atau taman.
- BsmtFinType1 : Penilaian area basement yang sudah selesai.
- BsmtFinSF1 : Tipe 1 yang sudah selesai dalam kaki persegi.
- BsmtFinType2 : Penilaian area basement yang sudah selesai (jika ada beberapa tipe).
- BsmtFinSF2 : tipe 2 yang sudah selesai dalam kaki persegi.
- BsmtUnfSF : area yang belum selesai dari area basement dalam kaki persegi.
- TotalBsmtSF : Total area basement dalam kaki persegi.
- Heating : jenis pemanas.
- HeatingQC : Kualitas dan kondisi pemanas.
- CentralAir : terdapat pemanas udara pusat.
- Electrical : Sistem listrik.
- 1stFlrSF : Luas lantai pertama dalam kaki persegi.
- 2ndFlrSF : Luas lantai kedua dalam kaki persegi.
- LowQualFinSF : luas lantai yang sudah selesai berkualitas rendah dalam kaki persegi.
- GrLivArea : Area tinggal di atas tingkat tanah dalam kaki persegi.
- BsmtFullBath : Kamar mandi penuh di basement.
- BsmtHalfBath : Kamar mandi setengah di basement.
- FullBath : Kamar mandi penuh di atas tingkat tanah.
- HalfBath : Kamar mandi setengah di atas tingkat tanah (lantai atas).
- Bedroom : Kamar tidur di atas tingkat tanah (TIDAK termasuk kamar tidur di basement).
- Kitchen : Dapur di atas tingkat tanah.
- KitchenQual : Kualitas dapur.
- TotRmsAbvGrd : Total kamar di atas tingkat tanah (tidak termasuk kamar mandi).
- Functional : Fungsionalitas rumah (Anggap tipikal kecuali ada pengurangan).
- Fireplaces : Jumlah perapian.
- FireplaceQu : Kualitas perapian.
- GarageType : Lokasi garasi.
- GarageYrBlt : Tahun pembuatan garasi.
- GarageFinish : Penyelesaian interior garasi.
- GarageCars : Ukuran garasi dalam kapasitas mobil.
- GarageArea : Ukuran garasi dalam kaki persegi.
- GarageQual : Kualitas garasi.
- GarageCond : Kondisi garasi.
- PavedDrive : Jalan beraspal.
- WoodDeckSF : Luas area dek kayu dalam kaki persegi.
- OpenPorchSF : Luas area teras terbuka dalam kaki persegi.
- EnclosedPorch : Luas area teras tertutup dalam kaki persegi.
- 3SsnPorch : Luas area teras tiga musim dalam kaki persegi.
- ScreenPorch : Luas area teras berlayar dalam kaki persegi.
- PoolArea : Luas area kolam renang dalam kaki persegi.
- PoolQC : Kualitas kolam renang.
- Fence : Kualitas pagar.
- MiscFeature : Fitur tambahan lainnya yang tidak termasuk dalam kategori lain.
- MiscVal : Nilai fitur tambahan dalam dolar.
- MoSold : Bulan Dijual (MM).
- YrSold : Tahun Dijual (YYYY).
- SaleType : Jenis penjualan.
- SaleCondition : Kondisi penjualan.
### Berikut adalah beberapa tahapan untuk memahami data:
- Data Loading
- Exploratory Data Analysis - Deskripsi Variabel
- Exploratory Data Analysis - Identifikasi Missing Value, Outliers dan Menghapus fitur yang tidak diperlukan untuk pelatihan model
- Exploratory Data Analysis - Univariate Analysis
- Exploratory Data Analysis - Multivariate Analysis
### Data Loading
Pada bagian ini, dataset akan dibaca secara langsung dari folder dataset yang sudah di download melalui [Ames Housing Dataset](https://www.kaggle.com/competitions/house-prices-advanced-regression-techniques/data). Dataset yang digunakan adalah train.csv yang berisi dataset untuk proses pelatihan model.
Tabel 1. Train data dari Ames Housing Dataset
| | Id | MSSubClass | MSZoning | LotFrontage | LotArea | Street | Alley | LotShape | LandContour | Utilities | LotConfig | LandSlope | Neighborhood | Condition1 | Condition2 | BldgType | HouseStyle | OverallQual | OverallCond | YearBuilt | YearRemodAdd | RoofStyle | RoofMatl | Exterior1st | Exterior2nd | MasVnrType | MasVnrArea | ExterQual | ExterCond | Foundation | BsmtQual | BsmtCond | BsmtExposure | BsmtFinType1 | BsmtFinSF1 | BsmtFinType2 | BsmtFinSF2 | BsmtUnfSF | TotalBsmtSF | Heating | HeatingQC | CentralAir | Electrical | 1stFlrSF | 2ndFlrSF | LowQualFinSF | GrLivArea | BsmtFullBath | BsmtHalfBath | FullBath | HalfBath | BedroomAbvGr | KitchenAbvGr | KitchenQual | TotRmsAbvGrd | Functional | Fireplaces | FireplaceQu | GarageType | GarageYrBlt | GarageFinish | GarageCars | GarageArea | GarageQual | GarageCond | PavedDrive | WoodDeckSF | OpenPorchSF | EnclosedPorch | 3SsnPorch | ScreenPorch | PoolArea | PoolQC | Fence | MiscFeature | MiscVal | MoSold | YrSold | SaleType | SaleCondition | SalePrice |
|---:|-----:|-------------:|:-----------|--------------:|----------:|:---------|--------:|:-----------|:--------------|:------------|:------------|:------------|:---------------|:-------------|:-------------|:-----------|:-------------|--------------:|--------------:|------------:|---------------:|:------------|:-----------|:--------------|:--------------|:-------------|-------------:|:------------|:------------|:-------------|:-----------|:-----------|:---------------|:---------------|-------------:|:---------------|-------------:|------------:|--------------:|:----------|:------------|:-------------|:-------------|-----------:|-----------:|---------------:|------------:|---------------:|---------------:|-----------:|-----------:|---------------:|---------------:|:--------------|---------------:|:-------------|-------------:|:--------------|:-------------|--------------:|:---------------|-------------:|-------------:|:-------------|:-------------|:-------------|-------------:|--------------:|----------------:|------------:|--------------:|-----------:|---------:|--------:|--------------:|----------:|---------:|---------:|:-----------|:----------------|------------:|
| 0 | 1 | 60 | RL | 65 | 8450 | Pave | nan | Reg | Lvl | AllPub | Inside | Gtl | CollgCr | Norm | Norm | 1Fam | 2Story | 7 | 5 | 2003 | 2003 | Gable | CompShg | VinylSd | VinylSd | BrkFace | 196 | Gd | TA | PConc | Gd | TA | No | GLQ | 706 | Unf | 0 | 150 | 856 | GasA | Ex | Y | SBrkr | 856 | 854 | 0 | 1710 | 1 | 0 | 2 | 1 | 3 | 1 | Gd | 8 | Typ | 0 | nan | Attchd | 2003 | RFn | 2 | 548 | TA | TA | Y | 0 | 61 | 0 | 0 | 0 | 0 | nan | nan | nan | 0 | 2 | 2008 | WD | Normal | 208500 |
| 1 | 2 | 20 | RL | 80 | 9600 | Pave | nan | Reg | Lvl | AllPub | FR2 | Gtl | Veenker | Feedr | Norm | 1Fam | 1Story | 6 | 8 | 1976 | 1976 | Gable | CompShg | MetalSd | MetalSd | None | 0 | TA | TA | CBlock | Gd | TA | Gd | ALQ | 978 | Unf | 0 | 284 | 1262 | GasA | Ex | Y | SBrkr | 1262 | 0 | 0 | 1262 | 0 | 1 | 2 | 0 | 3 | 1 | TA | 6 | Typ | 1 | TA | Attchd | 1976 | RFn | 2 | 460 | TA | TA | Y | 298 | 0 | 0 | 0 | 0 | 0 | nan | nan | nan | 0 | 5 | 2007 | WD | Normal | 181500 |
| 2 | 3 | 60 | RL | 68 | 11250 | Pave | nan | IR1 | Lvl | AllPub | Inside | Gtl | CollgCr | Norm | Norm | 1Fam | 2Story | 7 | 5 | 2001 | 2002 | Gable | CompShg | VinylSd | VinylSd | BrkFace | 162 | Gd | TA | PConc | Gd | TA | Mn | GLQ | 486 | Unf | 0 | 434 | 920 | GasA | Ex | Y | SBrkr | 920 | 866 | 0 | 1786 | 1 | 0 | 2 | 1 | 3 | 1 | Gd | 6 | Typ | 1 | TA | Attchd | 2001 | RFn | 2 | 608 | TA | TA | Y | 0 | 42 | 0 | 0 | 0 | 0 | nan | nan | nan | 0 | 9 | 2008 | WD | Normal | 223500 |
| 3 | 4 | 70 | RL | 60 | 9550 | Pave | nan | IR1 | Lvl | AllPub | Corner | Gtl | Crawfor | Norm | Norm | 1Fam | 2Story | 7 | 5 | 1915 | 1970 | Gable | CompShg | Wd Sdng | Wd Shng | None | 0 | TA | TA | BrkTil | TA | Gd | No | ALQ | 216 | Unf | 0 | 540 | 756 | GasA | Gd | Y | SBrkr | 961 | 756 | 0 | 1717 | 1 | 0 | 1 | 0 | 3 | 1 | Gd | 7 | Typ | 1 | Gd | Detchd | 1998 | Unf | 3 | 642 | TA | TA | Y | 0 | 35 | 272 | 0 | 0 | 0 | nan | nan | nan | 0 | 2 | 2006 | WD | Abnorml | 140000 |
| 4 | 5 | 60 | RL | 84 | 14260 | Pave | nan | IR1 | Lvl | AllPub | FR2 | Gtl | NoRidge | Norm | Norm | 1Fam | 2Story | 8 | 5 | 2000 | 2000 | Gable | CompShg | VinylSd | VinylSd | BrkFace | 350 | Gd | TA | PConc | Gd | TA | Av | GLQ | 655 | Unf | 0 | 490 | 1145 | GasA | Ex | Y | SBrkr | 1145 | 1053 | 0 | 2198 | 1 | 0 | 2 | 1 | 4 | 1 | Gd | 9 | Typ | 1 | TA | Attchd | 2000 | RFn | 3 | 836 | TA | TA | Y | 192 | 84 | 0 | 0 | 0 | 0 | nan | nan | nan | 0 | 12 | 2008 | WD | Normal | 250000 |
Berdasarkan Tabel 1 informasi yang didapat dataset adalah sebagai berikut:
- Terdapat 1.460 baris (records atau jumlah pengamatan) dalam dataset.
- Terdapat 81 kolom yaitu: Id, MSSubClass, MSZoning, LotFrontage, dan sebagainya.
### Exploratory Data Analysis - Deskripsi Variabel
Exploratory data analysis atau sering disingkat EDA merupakan proses investigasi awal pada data untuk menganalisis karakteristik, menemukan pola, anomali, dan memeriksa asumsi pada data. Proses EDA akan melakukan deskripsi variabel untuk mengetahui informasi lebih lengkap dan mengecek informasi pada dataset. Berdasarkan informasi dari [Kaggle](https://www.kaggle.com/competitions/house-prices-advanced-regression-techniques/data) Terdapat sekitar 80 variabel (termasuk harga rumah) yang dijelaskan lebih lengkap di file data_description.txt. Berikut adalah contoh penjelasan dari salah satu variabel yaitu MSZoning yang berasal dari file data_description.txt:
- MSZoning : Mengidentifikasi klasifikasi zona umum dari penjualan. Terdiri dari:
- A : Pertanian
- C : Komersial
- FV : Perumahan Desa Mengambang
- I : Industri
- RH : Kepadatan Tinggi Perumahan
- RL : Kepadatan Rendah Perumahan
- RP : Taman Kepadatan Rendah Perumahan
- RM : Kepadatan Sedang Perumahan
Dengan menggunakan fungsi info() di dataset terlihat bahwa:
- Terdapat 43 kolom dengan tipe object. Kolom ini merupakan categorical features (fitur non-numerik)
- Terdapat 3 kolom dengan tipe data float64. Kolom ini merupakan fitur numerik yang merupakan hasil pengukuran secara fisik.
- Terdapat 35 kolom dengan tipe data int64. Kolom ini merupakan fitur numerik yang salah satunya adalah target fitur yaitu harga jual rumah.
Terdapat juga beberapa fitur/kolom yang memiliki nilai null/NaN. Berdasarkan hasil analisis, terdapat 19 fitur yang mempunyai nilai NaN/Null yaitu 'LotFrontage', 'Alley', 'MasVnrType', 'MasVnrArea', 'BsmtQual', 'BsmtCond', 'BsmtExposure', 'BsmtFinType1', 'BsmtFinType2', 'Electrical', 'FireplaceQu', 'GarageType', 'GarageYrBlt', 'GarageFinish', 'GarageQual', 'GarageCond', 'PoolQC', 'Fence', dan 'MiscFeature'. Karena nilai ini nantinya akan mengganggu kinerja dari model maka akan dihapus fitur yang memiliki nilai NaN/Null tersebut. Setelah di drop fitur yang memiliki nilai NaN/Null, dataset akan terlihat pada Tabel 2.
Tabel 2. Dataset setelah dilakukan proses drop fitur yang memiliki nilai NaN/Null
| | Id | MSSubClass | MSZoning | LotArea | Street | LotShape | LandContour | Utilities | LotConfig | LandSlope | Neighborhood | Condition1 | Condition2 | BldgType | HouseStyle | OverallQual | OverallCond | YearBuilt | YearRemodAdd | RoofStyle | RoofMatl | Exterior1st | Exterior2nd | ExterQual | ExterCond | Foundation | BsmtFinSF1 | BsmtFinSF2 | BsmtUnfSF | TotalBsmtSF | Heating | HeatingQC | CentralAir | 1stFlrSF | 2ndFlrSF | LowQualFinSF | GrLivArea | BsmtFullBath | BsmtHalfBath | FullBath | HalfBath | BedroomAbvGr | KitchenAbvGr | KitchenQual | TotRmsAbvGrd | Functional | Fireplaces | GarageCars | GarageArea | PavedDrive | WoodDeckSF | OpenPorchSF | EnclosedPorch | 3SsnPorch | ScreenPorch | PoolArea | MiscVal | MoSold | YrSold | SaleType | SaleCondition | SalePrice |
|-----:|-----:|-------------:|:-----------|----------:|:---------|:-----------|:--------------|:------------|:------------|:------------|:---------------|:-------------|:-------------|:-----------|:-------------|--------------:|--------------:|------------:|---------------:|:------------|:-----------|:--------------|:--------------|:------------|:------------|:-------------|-------------:|-------------:|------------:|--------------:|:----------|:------------|:-------------|-----------:|-----------:|---------------:|------------:|---------------:|---------------:|-----------:|-----------:|---------------:|---------------:|:--------------|---------------:|:-------------|-------------:|-------------:|-------------:|:-------------|-------------:|--------------:|----------------:|------------:|--------------:|-----------:|----------:|---------:|---------:|:-----------|:----------------|------------:|
| 0 | 1 | 60 | RL | 8450 | Pave | Reg | Lvl | AllPub | Inside | Gtl | CollgCr | Norm | Norm | 1Fam | 2Story | 7 | 5 | 2003 | 2003 | Gable | CompShg | VinylSd | VinylSd | Gd | TA | PConc | 706 | 0 | 150 | 856 | GasA | Ex | Y | 856 | 854 | 0 | 1710 | 1 | 0 | 2 | 1 | 3 | 1 | Gd | 8 | Typ | 0 | 2 | 548 | Y | 0 | 61 | 0 | 0 | 0 | 0 | 0 | 2 | 2008 | WD | Normal | 208500 |
| 1 | 2 | 20 | RL | 9600 | Pave | Reg | Lvl | AllPub | FR2 | Gtl | Veenker | Feedr | Norm | 1Fam | 1Story | 6 | 8 | 1976 | 1976 | Gable | CompShg | MetalSd | MetalSd | TA | TA | CBlock | 978 | 0 | 284 | 1262 | GasA | Ex | Y | 1262 | 0 | 0 | 1262 | 0 | 1 | 2 | 0 | 3 | 1 | TA | 6 | Typ | 1 | 2 | 460 | Y | 298 | 0 | 0 | 0 | 0 | 0 | 0 | 5 | 2007 | WD | Normal | 181500 |
| 2 | 3 | 60 | RL | 11250 | Pave | IR1 | Lvl | AllPub | Inside | Gtl | CollgCr | Norm | Norm | 1Fam | 2Story | 7 | 5 | 2001 | 2002 | Gable | CompShg | VinylSd | VinylSd | Gd | TA | PConc | 486 | 0 | 434 | 920 | GasA | Ex | Y | 920 | 866 | 0 | 1786 | 1 | 0 | 2 | 1 | 3 | 1 | Gd | 6 | Typ | 1 | 2 | 608 | Y | 0 | 42 | 0 | 0 | 0 | 0 | 0 | 9 | 2008 | WD | Normal | 223500 |
| 3 | 4 | 70 | RL | 9550 | Pave | IR1 | Lvl | AllPub | Corner | Gtl | Crawfor | Norm | Norm | 1Fam | 2Story | 7 | 5 | 1915 | 1970 | Gable | CompShg | Wd Sdng | Wd Shng | TA | TA | BrkTil | 216 | 0 | 540 | 756 | GasA | Gd | Y | 961 | 756 | 0 | 1717 | 1 | 0 | 1 | 0 | 3 | 1 | Gd | 7 | Typ | 1 | 3 | 642 | Y | 0 | 35 | 272 | 0 | 0 | 0 | 0 | 2 | 2006 | WD | Abnorml | 140000 |
| 4 | 5 | 60 | RL | 14260 | Pave | IR1 | Lvl | AllPub | FR2 | Gtl | NoRidge | Norm | Norm | 1Fam | 2Story | 8 | 5 | 2000 | 2000 | Gable | CompShg | VinylSd | VinylSd | Gd | TA | PConc | 655 | 0 | 490 | 1145 | GasA | Ex | Y | 1145 | 1053 | 0 | 2198 | 1 | 0 | 2 | 1 | 4 | 1 | Gd | 9 | Typ | 1 | 3 | 836 | Y | 192 | 84 | 0 | 0 | 0 | 0 | 0 | 12 | 2008 | WD | Normal | 250000 |
| 5 | 6 | 50 | RL | 14115 | Pave | IR1 | Lvl | AllPub | Inside | Gtl | Mitchel | Norm | Norm | 1Fam | 1.5Fin | 5 | 5 | 1993 | 1995 | Gable | CompShg | VinylSd | VinylSd | TA | TA | Wood | 732 | 0 | 64 | 796 | GasA | Ex | Y | 796 | 566 | 0 | 1362 | 1 | 0 | 1 | 1 | 1 | 1 | TA | 5 | Typ | 0 | 2 | 480 | Y | 40 | 30 | 0 | 320 | 0 | 0 | 700 | 10 | 2009 | WD | Normal | 143000 |
| 6 | 7 | 20 | RL | 10084 | Pave | Reg | Lvl | AllPub | Inside | Gtl | Somerst | Norm | Norm | 1Fam | 1Story | 8 | 5 | 2004 | 2005 | Gable | CompShg | VinylSd | VinylSd | Gd | TA | PConc | 1369 | 0 | 317 | 1686 | GasA | Ex | Y | 1694 | 0 | 0 | 1694 | 1 | 0 | 2 | 0 | 3 | 1 | Gd | 7 | Typ | 1 | 2 | 636 | Y | 255 | 57 | 0 | 0 | 0 | 0 | 0 | 8 | 2007 | WD | Normal | 307000 |
| 7 | 8 | 60 | RL | 10382 | Pave | IR1 | Lvl | AllPub | Corner | Gtl | NWAmes | PosN | Norm | 1Fam | 2Story | 7 | 6 | 1973 | 1973 | Gable | CompShg | HdBoard | HdBoard | TA | TA | CBlock | 859 | 32 | 216 | 1107 | GasA | Ex | Y | 1107 | 983 | 0 | 2090 | 1 | 0 | 2 | 1 | 3 | 1 | TA | 7 | Typ | 2 | 2 | 484 | Y | 235 | 204 | 228 | 0 | 0 | 0 | 350 | 11 | 2009 | WD | Normal | 200000 |
| 8 | 9 | 50 | RM | 6120 | Pave | Reg | Lvl | AllPub | Inside | Gtl | OldTown | Artery | Norm | 1Fam | 1.5Fin | 7 | 5 | 1931 | 1950 | Gable | CompShg | BrkFace | Wd Shng | TA | TA | BrkTil | 0 | 0 | 952 | 952 | GasA | Gd | Y | 1022 | 752 | 0 | 1774 | 0 | 0 | 2 | 0 | 2 | 2 | TA | 8 | Min1 | 2 | 2 | 468 | Y | 90 | 0 | 205 | 0 | 0 | 0 | 0 | 4 | 2008 | WD | Abnorml | 129900 |
| 9 | 10 | 190 | RL | 7420 | Pave | Reg | Lvl | AllPub | Corner | Gtl | BrkSide | Artery | Artery | 2fmCon | 1.5Unf | 5 | 6 | 1939 | 1950 | Gable | CompShg | MetalSd | MetalSd | TA | TA | BrkTil | 851 | 0 | 140 | 991 | GasA | Ex | Y | 1077 | 0 | 0 | 1077 | 1 | 0 | 1 | 0 | 2 | 2 | TA | 5 | Typ | 2 | 1 | 205 | Y | 0 | 4 | 0 | 0 | 0 | 0 | 0 | 1 | 2008 | WD | Normal | 118000 |
| 10 | 11 | 20 | RL | 11200 | Pave | Reg | Lvl | AllPub | Inside | Gtl | Sawyer | Norm | Norm | 1Fam | 1Story | 5 | 5 | 1965 | 1965 | Hip | CompShg | HdBoard | HdBoard | TA | TA | CBlock | 906 | 0 | 134 | 1040 | GasA | Ex | Y | 1040 | 0 | 0 | 1040 | 1 | 0 | 1 | 0 | 3 | 1 | TA | 5 | Typ | 0 | 1 | 384 | Y | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 2 | 2008 | WD | Normal | 129500 |
| 11 | 12 | 60 | RL | 11924 | Pave | IR1 | Lvl | AllPub | Inside | Gtl | NridgHt | Norm | Norm | 1Fam | 2Story | 9 | 5 | 2005 | 2006 | Hip | CompShg | WdShing | Wd Shng | Ex | TA | PConc | 998 | 0 | 177 | 1175 | GasA | Ex | Y | 1182 | 1142 | 0 | 2324 | 1 | 0 | 3 | 0 | 4 | 1 | Ex | 11 | Typ | 2 | 3 | 736 | Y | 147 | 21 | 0 | 0 | 0 | 0 | 0 | 7 | 2006 | New | Partial | 345000 |
| 12 | 13 | 20 | RL | 12968 | Pave | IR2 | Lvl | AllPub | Inside | Gtl | Sawyer | Norm | Norm | 1Fam | 1Story | 5 | 6 | 1962 | 1962 | Hip | CompShg | HdBoard | Plywood | TA | TA | CBlock | 737 | 0 | 175 | 912 | GasA | TA | Y | 912 | 0 | 0 | 912 | 1 | 0 | 1 | 0 | 2 | 1 | TA | 4 | Typ | 0 | 1 | 352 | Y | 140 | 0 | 0 | 0 | 176 | 0 | 0 | 9 | 2008 | WD | Normal | 144000 |
| 13 | 14 | 20 | RL | 10652 | Pave | IR1 | Lvl | AllPub | Inside | Gtl | CollgCr | Norm | Norm | 1Fam | 1Story | 7 | 5 | 2006 | 2007 | Gable | CompShg | VinylSd | VinylSd | Gd | TA | PConc | 0 | 0 | 1494 | 1494 | GasA | Ex | Y | 1494 | 0 | 0 | 1494 | 0 | 0 | 2 | 0 | 3 | 1 | Gd | 7 | Typ | 1 | 3 | 840 | Y | 160 | 33 | 0 | 0 | 0 | 0 | 0 | 8 | 2007 | New | Partial | 279500 |
| 14 | 15 | 20 | RL | 10920 | Pave | IR1 | Lvl | AllPub | Corner | Gtl | NAmes | Norm | Norm | 1Fam | 1Story | 6 | 5 | 1960 | 1960 | Hip | CompShg | MetalSd | MetalSd | TA | TA | CBlock | 733 | 0 | 520 | 1253 | GasA | TA | Y | 1253 | 0 | 0 | 1253 | 1 | 0 | 1 | 1 | 2 | 1 | TA | 5 | Typ | 1 | 1 | 352 | Y | 0 | 213 | 176 | 0 | 0 | 0 | 0 | 5 | 2008 | WD | Normal | 157000 |
| 15 | 16 | 45 | RM | 6120 | Pave | Reg | Lvl | AllPub | Corner | Gtl | BrkSide | Norm | Norm | 1Fam | 1.5Unf | 7 | 8 | 1929 | 2001 | Gable | CompShg | Wd Sdng | Wd Sdng | TA | TA | BrkTil | 0 | 0 | 832 | 832 | GasA | Ex | Y | 854 | 0 | 0 | 854 | 0 | 0 | 1 | 0 | 2 | 1 | TA | 5 | Typ | 0 | 2 | 576 | Y | 48 | 112 | 0 | 0 | 0 | 0 | 0 | 7 | 2007 | WD | Normal | 132000 |
| 16 | 17 | 20 | RL | 11241 | Pave | IR1 | Lvl | AllPub | CulDSac | Gtl | NAmes | Norm | Norm | 1Fam | 1Story | 6 | 7 | 1970 | 1970 | Gable | CompShg | Wd Sdng | Wd Sdng | TA | TA | CBlock | 578 | 0 | 426 | 1004 | GasA | Ex | Y | 1004 | 0 | 0 | 1004 | 1 | 0 | 1 | 0 | 2 | 1 | TA | 5 | Typ | 1 | 2 | 480 | Y | 0 | 0 | 0 | 0 | 0 | 0 | 700 | 3 | 2010 | WD | Normal | 149000 |
| 17 | 18 | 90 | RL | 10791 | Pave | Reg | Lvl | AllPub | Inside | Gtl | Sawyer | Norm | Norm | Duplex | 1Story | 4 | 5 | 1967 | 1967 | Gable | CompShg | MetalSd | MetalSd | TA | TA | Slab | 0 | 0 | 0 | 0 | GasA | TA | Y | 1296 | 0 | 0 | 1296 | 0 | 0 | 2 | 0 | 2 | 2 | TA | 6 | Typ | 0 | 2 | 516 | Y | 0 | 0 | 0 | 0 | 0 | 0 | 500 | 10 | 2006 | WD | Normal | 90000 |
| 18 | 19 | 20 | RL | 13695 | Pave | Reg | Lvl | AllPub | Inside | Gtl | SawyerW | RRAe | Norm | 1Fam | 1Story | 5 | 5 | 2004 | 2004 | Gable | CompShg | VinylSd | VinylSd | TA | TA | PConc | 646 | 0 | 468 | 1114 | GasA | Ex | Y | 1114 | 0 | 0 | 1114 | 1 | 0 | 1 | 1 | 3 | 1 | Gd | 6 | Typ | 0 | 2 | 576 | Y | 0 | 102 | 0 | 0 | 0 | 0 | 0 | 6 | 2008 | WD | Normal | 159000 |
| 19 | 20 | 20 | RL | 7560 | Pave | Reg | Lvl | AllPub | Inside | Gtl | NAmes | Norm | Norm | 1Fam | 1Story | 5 | 6 | 1958 | 1965 | Hip | CompShg | BrkFace | Plywood | TA | TA | CBlock | 504 | 0 | 525 | 1029 | GasA | TA | Y | 1339 | 0 | 0 | 1339 | 0 | 0 | 1 | 0 | 3 | 1 | TA | 6 | Min1 | 0 | 1 | 294 | Y | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 5 | 2009 | COD | Abnorml | 139000 |
| 20 | 21 | 60 | RL | 14215 | Pave | IR1 | Lvl | AllPub | Corner | Gtl | NridgHt | Norm | Norm | 1Fam | 2Story | 8 | 5 | 2005 | 2006 | Gable | CompShg | VinylSd | VinylSd | Gd | TA | PConc | 0 | 0 | 1158 | 1158 | GasA | Ex | Y | 1158 | 1218 | 0 | 2376 | 0 | 0 | 3 | 1 | 4 | 1 | Gd | 9 | Typ | 1 | 3 | 853 | Y | 240 | 154 | 0 | 0 | 0 | 0 | 0 | 11 | 2006 | New | Partial | 325300 |
| 21 | 22 | 45 | RM | 7449 | Pave | Reg | Bnk | AllPub | Inside | Gtl | IDOTRR | Norm | Norm | 1Fam | 1.5Unf | 7 | 7 | 1930 | 1950 | Gable | CompShg | Wd Sdng | Wd Sdng | TA | TA | PConc | 0 | 0 | 637 | 637 | GasA | Ex | Y | 1108 | 0 | 0 | 1108 | 0 | 0 | 1 | 0 | 3 | 1 | Gd | 6 | Typ | 1 | 1 | 280 | N | 0 | 0 | 205 | 0 | 0 | 0 | 0 | 6 | 2007 | WD | Normal | 139400 |
| 22 | 23 | 20 | RL | 9742 | Pave | Reg | Lvl | AllPub | Inside | Gtl | CollgCr | Norm | Norm | 1Fam | 1Story | 8 | 5 | 2002 | 2002 | Hip | CompShg | VinylSd | VinylSd | Gd | TA | PConc | 0 | 0 | 1777 | 1777 | GasA | Ex | Y | 1795 | 0 | 0 | 1795 | 0 | 0 | 2 | 0 | 3 | 1 | Gd | 7 | Typ | 1 | 2 | 534 | Y | 171 | 159 | 0 | 0 | 0 | 0 | 0 | 9 | 2008 | WD | Normal | 230000 |
...
| 1456 | 1457 | 20 | RL | 13175 | Pave | Reg | Lvl | AllPub | Inside | Gtl | NWAmes | Norm | Norm | 1Fam | 1Story | 6 | 6 | 1978 | 1988 | Gable | CompShg | Plywood | Plywood | TA | TA | CBlock | 790 | 163 | 589 | 1542 | GasA | TA | Y | 2073 | 0 | 0 | 2073 | 1 | 0 | 2 | 0 | 3 | 1 | TA | 7 | Min1 | 2 | 2 | 500 | Y | 349 | 0 | 0 | 0 | 0 | 0 | 0 | 2 | 2010 | WD | Normal | 210000 |
| 1457 | 1458 | 70 | RL | 9042 | Pave | Reg | Lvl | AllPub | Inside | Gtl | Crawfor | Norm | Norm | 1Fam | 2Story | 7 | 9 | 1941 | 2006 | Gable | CompShg | CemntBd | CmentBd | Ex | Gd | Stone | 275 | 0 | 877 | 1152 | GasA | Ex | Y | 1188 | 1152 | 0 | 2340 | 0 | 0 | 2 | 0 | 4 | 1 | Gd | 9 | Typ | 2 | 1 | 252 | Y | 0 | 60 | 0 | 0 | 0 | 0 | 2500 | 5 | 2010 | WD | Normal | 266500 |
| 1458 | 1459 | 20 | RL | 9717 | Pave | Reg | Lvl | AllPub | Inside | Gtl | NAmes | Norm | Norm | 1Fam | 1Story | 5 | 6 | 1950 | 1996 | Hip | CompShg | MetalSd | MetalSd | TA | TA | CBlock | 49 | 1029 | 0 | 1078 | GasA | Gd | Y | 1078 | 0 | 0 | 1078 | 1 | 0 | 1 | 0 | 2 | 1 | Gd | 5 | Typ | 0 | 1 | 240 | Y | 366 | 0 | 112 | 0 | 0 | 0 | 0 | 4 | 2010 | WD | Normal | 142125 |
| 1459 | 1460 | 20 | RL | 9937 | Pave | Reg | Lvl | AllPub | Inside | Gtl | Edwards | Norm | Norm | 1Fam | 1Story | 5 | 6 | 1965 | 1965 | Gable | CompShg | HdBoard | HdBoard | Gd | TA | CBlock | 830 | 290 | 136 | 1256 | GasA | Gd | Y | 1256 | 0 | 0 | 1256 | 1 | 0 | 1 | 1 | 3 | 1 | TA | 6 | Typ | 0 | 1 | 276 | Y | 736 | 68 | 0 | 0 | 0 | 0 | 0 | 6 | 2008 | WD | Normal | 147500 |
Berdasarkan Tabel 2 terlihat bahwa jumlah fitur yang tersisa adalah sebesar 62 fitur setelah menghilangkan fitur yang memiliki nilai NaN/Null. Selanjutnya, karena semua kolom telah memiliki tipe data yang sesuai dilakukan proses pengecekan deksripsi statistik data menggunakan fitur describe().
Fungsi describe() memberikan informasi statistik pada masing - masing kolom, antara lain:
- Count adalah jumlah sampel pada data.
- Mean adalah nilai rata-rata.
- Std adalah standar deviasi.
- Min yaitu nilai minimum setiap kolom.
- 25% adalah kuartil pertama. Kuartil adalah nilai yang menandai batas interval dalam empat bagian sebaran yang sama.
- 50% adalah kuartil kedua, atau biasa juga disebut median (nilai tengah).
- 75% adalah kuartil ketiga.
- Max adalah nilai maksimum.
### Exploratory Data Analysis - Menangani Missing Value, Outliers dan Menghapus fitur yang tidak perlu
#### Identifikasi Missing Value
Dari hasil fungsi describe(), nilai minimum untuk beberapa kolom adalah 0. Karena terdapat banyak fitur dalam dataset, sehingga dibeberapa kasus nilai 0 ini menyulitkan nantinya untuk melihat keseluruhan fitur, maka dilakukan investigasi untuk mencari informasi semua fitur dengan nilai minimum sama dengan 0.
Berdasarkan analisis dengan bantuan fungsi describe(), didapat bahwa terdapat 22 fitur yang memiliki nilai minimum 0. Berdasarkan data description di file data_description.txt diketahui bahwa nilai 0 di dataset juga memiliki makna tertentu yang artinya bukan merupakan nilai missing value tapi berupa informasi yang ada di beberapa variabel. Misalnya untuk fitur PoolArea yang paling banyak terdapat nilai 0 sebesar 1.453, nilai 0 disini memiliki arti bahwa di beberapa jenis properti rumah tersebut tidak terdapat kolam renang. Nilai 0 ini juga tidak bisa dianggap sebagai tipe data boolean karena angka 0 disini memiliki arti jumlah (kuantitas) bukan bermakna True/False. Jadi bisa disimpulkan bahwa tidak terdapat missing value pada dataset tersebut.
#### Menghilangkan outliers
Outliers adalah sampel yang nilainya sangat jauh dari cakupan umum data utama. Ada beberapa teknik outliers yang umum digunakan. Pada proyek ini akan menggunakan metode IQR (Inter Quartile Range). IQR menggunakan konsep kuartil untuk menghilangkan outliers, Kuartil dari suatu populasi adalah tiga nilai yang membagi distribusi data menjadi empat sebaran. Seperempat dari data berada di bawah kuartil pertama (Q1), setengah dari data berada di bawah kuartil kedua (Q2), dan tiga perempat dari data berada di kuartil ketiga (Q3). Dengan demikian interquartile range atau IQR = Q3 - Q1.
Hal pertama yang perlu dilakukan adalah membuat batas bawah dan batas atas. Untuk membuat batas bawah, kurangi Q1 dengan 1,5 * IQR. Kemudian, untuk membuat batas atas, tambahkan 1.5 * IQR dengan Q3.
$Batas\ bawah = Q1 - 1.5 * IQR$
$Batas\ atas = Q3 + 1.5 * IQR$
Selanjutnya, visualisasikan terlebih dahulu dataset dengan boxplot untuk mendeteksi outliers pada beberapa fitur numerik. Misalnya pada fitur 'MSSubClass' seperti terlihat pada Gambar 1.

Gambar 1. Boxplot untuk melihat outliers pada fitur MSSubClass
Selanjutnya gunakan metode IQR untuk mengatasi outliers yang terdapat di beberapa fitur tersebut. Metode IQR digunakan untuk mengidentifikasi outlier yang berada di luar Q1 dan Q3. Nilai apa pun yang berada di luar batas ini dianggap sebagai outlier.
Setelah dilakukan proses penghapusan outliers maka dataset akan memiliki dimensi sebesar (601, 62). Ini berarti dataset sudah bersih dan memiliki 601 sampel dengan tersisa 62 fitur. Untuk lebih jelasnya, dilakukan pengecekan kembali fitur 'MSSubClass' dengan menggunakan boxplot dan seperti terlihat pada Gambar 2 bahwa fitur tersebut sudah bersih dari outliers.

Gambar 2. Boxplot pada fitur MSSubClass setelah outliers dihilangkan
#### Menghapus fitur yang tidak diperlukan
Sebelum dilakukan proses analisis data lebih lanjut. Perlu dilakuan pengecekan fitur yang tidak terlalu berpengaruh pada proses pemodelan nantinya. Penghapusan fitur yang tidak diperlukan akan membantu mempercepat proses pelatihan model dan membantu memahami data dengan lebih mudah.
- Pertama, dihapus kolom Id karena tidak terlalu berpengaruh pada proses training nantinya.
- Mengecek jumlah fitur yang mempunyai unique value hanya 1 saja. Jika suatu fitur hanya memiliki satu nilai unik, maka fitur tersebut tidak terlalu berpengaruh atau memberikan banyak informasi yang berguna dalam analisis statistik atau pemodelan. Fitur ini sering disebut juga sebagai fitur konstan.
Setelah dibersihkan dari fitur yang tidak perlu, maka dataset hanya tersisa 49 fitur/variabel dan akan terlihat seperti Tabel 3.
Tabel 3. Dataset yang sudah bersih dari fitur yang tidak diperlukan
| | MSSubClass | MSZoning | LotArea | Street | LotShape | LandContour | LotConfig | LandSlope | Neighborhood | Condition1 | BldgType | HouseStyle | OverallQual | OverallCond | YearBuilt | YearRemodAdd | RoofStyle | Exterior1st | Exterior2nd | ExterQual | ExterCond | Foundation | BsmtFinSF1 | BsmtUnfSF | TotalBsmtSF | Heating | HeatingQC | CentralAir | 1stFlrSF | 2ndFlrSF | GrLivArea | BsmtFullBath | FullBath | HalfBath | BedroomAbvGr | KitchenQual | TotRmsAbvGrd | Functional | Fireplaces | GarageCars | GarageArea | PavedDrive | WoodDeckSF | OpenPorchSF | MoSold | YrSold | SaleType | SaleCondition | SalePrice |
|---:|-------------:|:-----------|----------:|:---------|:-----------|:--------------|:------------|:------------|:---------------|:-------------|:-----------|:-------------|--------------:|--------------:|------------:|---------------:|:------------|:--------------|:--------------|:------------|:------------|:-------------|-------------:|------------:|--------------:|:----------|:------------|:-------------|-----------:|-----------:|------------:|---------------:|-----------:|-----------:|---------------:|:--------------|---------------:|:-------------|-------------:|-------------:|-------------:|:-------------|-------------:|--------------:|---------:|---------:|:-----------|:----------------|------------:|
| 0 | 60 | RL | 8450 | Pave | Reg | Lvl | Inside | Gtl | CollgCr | Norm | 1Fam | 2Story | 7 | 5 | 2003 | 2003 | Gable | VinylSd | VinylSd | Gd | TA | PConc | 706 | 150 | 856 | GasA | Ex | Y | 856 | 854 | 1710 | 1 | 2 | 1 | 3 | Gd | 8 | Typ | 0 | 2 | 548 | Y | 0 | 61 | 2 | 2008 | WD | Normal | 208500 |
| 2 | 60 | RL | 11250 | Pave | IR1 | Lvl | Inside | Gtl | CollgCr | Norm | 1Fam | 2Story | 7 | 5 | 2001 | 2002 | Gable | VinylSd | VinylSd | Gd | TA | PConc | 486 | 434 | 920 | GasA | Ex | Y | 920 | 866 | 1786 | 1 | 2 | 1 | 3 | Gd | 6 | Typ | 1 | 2 | 608 | Y | 0 | 42 | 9 | 2008 | WD | Normal | 223500 |
| 4 | 60 | RL | 14260 | Pave | IR1 | Lvl | FR2 | Gtl | NoRidge | Norm | 1Fam | 2Story | 8 | 5 | 2000 | 2000 | Gable | VinylSd | VinylSd | Gd | TA | PConc | 655 | 490 | 1145 | GasA | Ex | Y | 1145 | 1053 | 2198 | 1 | 2 | 1 | 4 | Gd | 9 | Typ | 1 | 3 | 836 | Y | 192 | 84 | 12 | 2008 | WD | Normal | 250000 |
| 6 | 20 | RL | 10084 | Pave | Reg | Lvl | Inside | Gtl | Somerst | Norm | 1Fam | 1Story | 8 | 5 | 2004 | 2005 | Gable | VinylSd | VinylSd | Gd | TA | PConc | 1369 | 317 | 1686 | GasA | Ex | Y | 1694 | 0 | 1694 | 1 | 2 | 0 | 3 | Gd | 7 | Typ | 1 | 2 | 636 | Y | 255 | 57 | 8 | 2007 | WD | Normal | 307000 |
| 10 | 20 | RL | 11200 | Pave | Reg | Lvl | Inside | Gtl | Sawyer | Norm | 1Fam | 1Story | 5 | 5 | 1965 | 1965 | Hip | HdBoard | HdBoard | TA | TA | CBlock | 906 | 134 | 1040 | GasA | Ex | Y | 1040 | 0 | 1040 | 1 | 1 | 0 | 3 | TA | 5 | Typ | 0 | 1 | 384 | Y | 0 | 0 | 2 | 2008 | WD | Normal | 129500 |
### Exploratory Data Analysis - Univariate Analysis
Sebelum masuk ke tahap proses analisis data dengan teknik Univariate EDA. Pertama, dilakukan proses pembagian fitur pada dataset menjadi dua bagian, yaitu numerical features dan categorical features (non numerik). Lakukan analisis pada fitur kategori terlebih dahulu kemudian pada fitur numerik.
#### Categorical Features
Untuk fitur kategori, pertama visualisasikan dalam bentuk plot dan data frame untuk menganalisis persentase dari masing - masing fitur. Gambar 3 memperlihatkan salah satu visualisasi dari fitur bernama 'KitchenQual'.

Gambar 3. Visualisasi dari salah satu fitur kategori bernama KitchenQual
Berdasarkan Gambar 3, diketahui bahwa beberapa fitur kategori memiliki persentase yang berbeda. Persentase ini menunjukkan jumlah kategori dari masing - masing fitur atau seberapa sering kategori itu muncul pada fitur tersebut.
#### Numerical Features
Untuk fitur numerik bisa menggunakan histogram untuk melihat hubungan fitur numerik terhadap sampel. Hasilnya terlihat pada Gambar 4.

Gambar 4. Visualisasi histogram hubungan antara fitur - fitur numerik terhadap sampel.
Perhatikan Gambar 4, khususnya histogram untuk variabel "SalePrice" yang merupakan fitur target (label) pada dataset. Dari histogram "SalePrice" tersebut terdapat beberapa informasi, antara lain:
- Peningkatan harga jual rumah terdistribusi dengan cukup baik. Hal ini dapat dilihat pada histogram "SalePrice" yang mana sampel cenderung meningkat lalu mengalami penurunan seiring dengan meningkatnya harga jual rumah.
- rentang harga jual rumah cukup tinggi yaitu skala puluhan ribu dollar Amerika hingga sekitar $350000.
- Sebagian besar harga jual rumah bernilai antara $100000 sampai $200000.
- Distribusi harga cenderung cukup normal. Hal ini kemungkinan besar akan berimplikasi pada model.
### Exploratory Data Analysis - Multivariate Analysis
Multivariate EDA menunjukkan hubungan antara dua atau lebih variabel pada data. Multivariate EDA yang menunjukkan hubungan antara dua variabel biasa disebut sebagai bivariate EDA. Selanjutnya,untuk melihat hubungan tersebut dilakukan analisis data pada fitur kategori dan numerik.
#### Categorical Features
Untuk fitur kategori, dilakukan pengamatan rata - rata harga jual rumah terhadap fitur kategori. Gambar 5 memperlihatkan salah satu visualisasi dari fitur kategori yaitu 'PavedDrive':

Gambar 5. Visualisasi diagram multivariate analysis dari salah satu fitur kategori bernama PavedDrive
Dengan mengamati rata - rata harga jual rumah relatif terhadap fitur kategori diatas, diperoleh insight yaitu bahwa beberapa fitur kategori memiliki pengaruh yang cukup tinggi terhadap harga jual rumah. Misalkan pada fitur 'PavedDrive' (jalan masuk beraspal) yang terdapat pada Gambar 5, harga jual tertinggi dimiliki oleh tipe Y (Paved).
#### Numerical Features
Untuk mengamati hubungan antara fitur numerik, dilakukan Corellation matrix untuk melihat hubungan korelasi antar fitur. Koefisien korelasi berkisar antara -1 dan +1, dimana itu akan mengukur kekuatan hubungan antara dua variabel serta arahnya (positif atau negatif). Mengenai kekuatan hubungan antar variabel, semakin dekat nilainya ke 1 atau -1, korelasinya semakin kuat. Sedangkan, semakin dekat nilainya ke 0, korelasinya semakin lemah. Arah korelasi antara dua variabel bisa bernilai positif (nilai kedua variabel cenderung meningkat bersama-sama) maupun negatif (nilai salah satu variabel cenderung meningkat ketika nilai variabel lainnya menurun).

Gambar 6. Correlation matrix untuk fitur numerik
Berdasarkan Gambar 6, terdapat beberapa fitur yang memiliki skor korelasi yang cukup besar diatas 70% dengan fitur target yaitu "SalePrice", Fitur tersebut adalah "OveralQual", "GLivArea", "GarageCars", dan "GarageArea". Sementara fitur lainnya memiliki korelasi yang kecil. Sehingga, fitur - fitur tersebut dapat di-drop atau dihapus dari dataset. Setelah itu fitur numerik akan di cek untuk memastikan tidak ada nilai Null/NaN di dalamnya. Jika ada, maka nilai tersebut akan dihapus. Setelah dilakukan proses drop dan menghilangkan nilai None/NaN, dataset akan tersisa 29 fitur seperti terlihat pada Tabel 4.
Tabel 4. Dataset setelah dilakukan proses EDA (Exploratory Data Analysis)
| | MSZoning | Street | LotShape | LandContour | LotConfig | LandSlope | Neighborhood | Condition1 | BldgType | HouseStyle | OverallQual | RoofStyle | Exterior1st | Exterior2nd | ExterQual | ExterCond | Foundation | Heating | HeatingQC | CentralAir | GrLivArea | KitchenQual | Functional | GarageCars | GarageArea | PavedDrive | SaleType | SaleCondition | SalePrice |
|-----:|:-----------|:---------|:-----------|:--------------|:------------|:------------|:---------------|:-------------|:-----------|:-------------|--------------:|:------------|:--------------|:--------------|:------------|:------------|:-------------|:----------|:------------|:-------------|------------:|:--------------|:-------------|-------------:|-------------:|:-------------|:-----------|:----------------|------------:|
| 0 | RL | Pave | Reg | Lvl | Inside | Gtl | CollgCr | Norm | 1Fam | 2Story | 7 | Gable | VinylSd | VinylSd | Gd | TA | PConc | GasA | Ex | Y | 1710 | Gd | Typ | 2 | 548 | Y | WD | Normal | 208500 |
| 2 | RL | Pave | IR1 | Lvl | Inside | Gtl | CollgCr | Norm | 1Fam | 2Story | 7 | Gable | VinylSd | VinylSd | Gd | TA | PConc | GasA | Ex | Y | 1786 | Gd | Typ | 2 | 608 | Y | WD | Normal | 223500 |
| 4 | RL | Pave | IR1 | Lvl | FR2 | Gtl | NoRidge | Norm | 1Fam | 2Story | 8 | Gable | VinylSd | VinylSd | Gd | TA | PConc | GasA | Ex | Y | 2198 | Gd | Typ | 3 | 836 | Y | WD | Normal | 250000 |
| 6 | RL | Pave | Reg | Lvl | Inside | Gtl | Somerst | Norm | 1Fam | 1Story | 8 | Gable | VinylSd | VinylSd | Gd | TA | PConc | GasA | Ex | Y | 1694 | Gd | Typ | 2 | 636 | Y | WD | Normal | 307000 |
| 10 | RL | Pave | Reg | Lvl | Inside | Gtl | Sawyer | Norm | 1Fam | 1Story | 5 | Hip | HdBoard | HdBoard | TA | TA | CBlock | GasA | Ex | Y | 1040 | TA | Typ | 1 | 384 | Y | WD | Normal | 129500 |
| 13 | RL | Pave | IR1 | Lvl | Inside | Gtl | CollgCr | Norm | 1Fam | 1Story | 7 | Gable | VinylSd | VinylSd | Gd | TA | PConc | GasA | Ex | Y | 1494 | Gd | Typ | 3 | 840 | Y | New | Partial | 279500 |
| 18 | RL | Pave | Reg | Lvl | Inside | Gtl | SawyerW | RRAe | 1Fam | 1Story | 5 | Gable | VinylSd | VinylSd | TA | TA | PConc | GasA | Ex | Y | 1114 | Gd | Typ | 2 | 576 | Y | WD | Normal | 159000 |
| 19 | RL | Pave | Reg | Lvl | Inside | Gtl | NAmes | Norm | 1Fam | 1Story | 5 | Hip | BrkFace | Plywood | TA | TA | CBlock | GasA | TA | Y | 1339 | TA | Min1 | 1 | 294 | Y | COD | Abnorml | 139000 |
| 20 | RL | Pave | IR1 | Lvl | Corner | Gtl | NridgHt | Norm | 1Fam | 2Story | 8 | Gable | VinylSd | VinylSd | Gd | TA | PConc | GasA | Ex | Y | 2376 | Gd | Typ | 3 | 853 | Y | New | Partial | 325300 |
| 23 | RM | Pave | Reg | Lvl | Inside | Gtl | MeadowV | Norm | TwnhsE | 1Story | 5 | Gable | CemntBd | CmentBd | TA | TA | PConc | GasA | TA | Y | 1060 | TA | Typ | 2 | 572 | Y | WD | Normal | 129900 |
| 25 | RL | Pave | Reg | Lvl | Corner | Gtl | NridgHt | Norm | 1Fam | 1Story | 8 | Gable | VinylSd | VinylSd | Gd | TA | PConc | GasA | Ex | Y | 1600 | Gd | Typ | 3 | 890 | Y | WD | Normal | 256300 |
| 27 | RL | Pave | Reg | Lvl | Inside | Gtl | NridgHt | Norm | 1Fam | 1Story | 8 | Gable | VinylSd | VinylSd | Gd | TA | PConc | GasA | Ex | Y | 1704 | Gd | Typ | 3 | 772 | Y | WD | Normal | 306000 |
| 31 | RL | Pave | IR1 | Lvl | CulDSac | Gtl | Sawyer | Norm | 1Fam | 1Story | 5 | Gable | HdBoard | HdBoard | TA | TA | CBlock | GasA | Gd | Y | 1228 | Gd | Typ | 1 | 271 | Y | WD | Normal | 149350 |
| 32 | RL | Pave | Reg | Lvl | Corner | Gtl | CollgCr | Norm | 1Fam | 1Story | 8 | Gable | VinylSd | VinylSd | Gd | TA | PConc | GasA | Ex | Y | 1234 | Gd | Typ | 2 | 484 | Y | WD | Normal | 179900 |
| 34 | RL | Pave | Reg | Lvl | Inside | Gtl | NridgHt | Norm | TwnhsE | 1Story | 9 | Hip | MetalSd | MetalSd | Ex | TA | PConc | GasA | Ex | Y | 1561 | Ex | Typ | 2 | 556 | Y | WD | Normal | 277500 |
| 35 | RL | Pave | Reg | Lvl | Inside | Gtl | NridgHt | Norm | 1Fam | 2Story | 8 | Gable | VinylSd | VinylSd | Gd | TA | PConc | GasA | Ex | Y | 2452 | Gd | Typ | 3 | 691 | Y | WD | Normal | 309000 |
| 36 | RL | Pave | Reg | Lvl | Corner | Gtl | CollgCr | Norm | 1Fam | 1Story | 5 | Gable | VinylSd | VinylSd | TA | TA | PConc | GasA | Ex | Y | 1097 | TA | Typ | 2 | 672 | Y | WD | Normal | 145000 |
| 38 | RL | Pave | Reg | Lvl | Inside | Gtl | NAmes | Norm | 1Fam | 1Story | 5 | Gable | VinylSd | VinylSd | TA | Gd | CBlock | GasA | TA | Y | 1057 | Gd | Typ | 1 | 246 | Y | WD | Abnorml | 109000 |
| 40 | RL | Pave | Reg | Lvl | Inside | Gtl | NAmes | Norm | 1Fam | 1Story | 6 | Gable | Wd Sdng | Wd Sdng | TA | TA | CBlock | GasA | Ex | Y | 1324 | TA | Typ | 2 | 440 | Y | WD | Abnorml | 160000 |
| 45 | RL | Pave | Reg | Lvl | Inside | Gtl | NridgHt | Norm | TwnhsE | 1Story | 9 | Hip | MetalSd | MetalSd | Ex | TA | PConc | GasA | Ex | Y | 1752 | Ex | Typ | 2 | 576 | Y | WD | Normal | 319900 |
| 47 | FV | Pave | Reg | Lvl | Inside | Gtl | Somerst | Norm | 1Fam | 1Story | 8 | Gable | VinylSd | VinylSd | Gd | TA | PConc | GasA | Ex | Y | 1656 | Gd | Typ | 3 | 826 | Y | WD | Normal | 249700 |
| 49 | RL | Pave | Reg | Lvl | Inside | Gtl | Sawyer | Norm | 1Fam | 1Story | 5 | Gable | HdBoard | HdBoard | TA | TA | CBlock | GasA | Ex | Y | 955 | TA | Typ | 1 | 386 | Y | WD | Normal | 127000 |
| 54 | RL | Pave | Reg | Bnk | Inside | Mod | NAmes | Norm | 1Fam | SLvl | 5 | Gable | MetalSd | MetalSd | TA | TA | CBlock | GasA | TA | Y | 1360 | TA | Min1 | 2 | 572 | Y | WD | Normal | 130000 |
...
| 1451 | RL | Pave | Reg | Lvl | Inside | Gtl | Somerst | Norm | 1Fam | 1Story | 8 | Gable | CemntBd | CmentBd | Gd | TA | PConc | GasA | Ex | Y | 1578 | Ex | Typ | 3 | 840 | Y | New | Partial | 287090 |
| 1453 | RL | Pave | Reg | Lvl | Inside | Gtl | Mitchel | Norm | 1Fam | 1Story | 5 | Gable | VinylSd | VinylSd | TA | TA | PConc | GasA | Ex | Y | 1140 | TA | Typ | 0 | 0 | Y | WD | Abnorml | 84500 |
| 1454 | FV | Pave | Reg | Lvl | Inside | Gtl | Somerst | Norm | 1Fam | 1Story | 7 | Gable | VinylSd | VinylSd | Gd | TA | PConc | GasA | Ex | Y | 1221 | Gd | Typ | 2 | 400 | Y | WD | Normal | 185000 |
| 1455 | RL | Pave | Reg | Lvl | Inside | Gtl | Gilbert | Norm | 1Fam | 2Story | 6 | Gable | VinylSd | VinylSd | TA | TA | PConc | GasA | Ex | Y | 1647 | TA | Typ | 2 | 460 | Y | WD | Normal | 175000 |
## Data Preparation
Pada bagian ini, terdapat empat tahap persiapan data, yaitu:
- Encoding fitur kategori.
- Reduksi dimensi dengan Principal Component Analysis (PCA).
- Pembagian dataset dengan fungsi train_test_split dari library sklearn.
- Standarisasi.
### Encoding Fitur Kategori
Proses encoding fitur kategori menggunakan teknik one-hot-encoding. Teknik ini adalah salah satu metode dalam proses encoding fitur (feature encoding) pada data kategorikal. Tujuannya adalah untuk mengubah variabel kategorikal menjadi representasi biner yang dapat digunakan dalam algoritma pembelajaran mesin. Dalam dataset terdapat beberapa variabel kategori, maka dilakukan proses encoding ini dengan fitur get_dummies. Dan menghasilkan dataset seperti terlihat pada Tabel 5.
Tabel 5. Dataset hasil dari Encoding Fitur Kategori
| | OverallQual | GrLivArea | GarageCars | GarageArea | SalePrice | MSZoning_FV | MSZoning_RH | MSZoning_RL | MSZoning_RM | Street_Grvl | Street_Pave | LotShape_IR1 | LotShape_IR2 | LotShape_IR3 | LotShape_Reg | LandContour_Bnk | LandContour_HLS | LandContour_Low | LandContour_Lvl | LotConfig_Corner | LotConfig_CulDSac | LotConfig_FR2 | LotConfig_FR3 | LotConfig_Inside | LandSlope_Gtl | LandSlope_Mod | Neighborhood_Blmngtn | Neighborhood_BrkSide | Neighborhood_ClearCr | Neighborhood_CollgCr | Neighborhood_Crawfor | Neighborhood_Edwards | Neighborhood_Gilbert | Neighborhood_IDOTRR | Neighborhood_MeadowV | Neighborhood_Mitchel | Neighborhood_NAmes | Neighborhood_NPkVill | Neighborhood_NWAmes | Neighborhood_NoRidge | Neighborhood_NridgHt | Neighborhood_OldTown | Neighborhood_SWISU | Neighborhood_Sawyer | Neighborhood_SawyerW | Neighborhood_Somerst | Neighborhood_StoneBr | Neighborhood_Timber | Neighborhood_Veenker | Condition1_Artery | Condition1_Feedr | Condition1_Norm | Condition1_PosA | Condition1_PosN | Condition1_RRAe | Condition1_RRAn | Condition1_RRNe | Condition1_RRNn | BldgType_1Fam | BldgType_Duplex | BldgType_Twnhs | BldgType_TwnhsE | HouseStyle_1.5Fin | HouseStyle_1.5Unf | HouseStyle_1Story | HouseStyle_2Story | HouseStyle_SFoyer | HouseStyle_SLvl | RoofStyle_Gable | RoofStyle_Gambrel | RoofStyle_Hip | Exterior1st_AsbShng | Exterior1st_BrkFace | Exterior1st_CemntBd | Exterior1st_HdBoard | Exterior1st_MetalSd | Exterior1st_Plywood | Exterior1st_Stucco | Exterior1st_VinylSd | Exterior1st_Wd Sdng | Exterior1st_WdShing | Exterior2nd_AsbShng | Exterior2nd_BrkFace | Exterior2nd_CmentBd | Exterior2nd_HdBoard | Exterior2nd_ImStucc | Exterior2nd_MetalSd | Exterior2nd_Plywood | Exterior2nd_Stone | Exterior2nd_Stucco | Exterior2nd_VinylSd | Exterior2nd_Wd Sdng | Exterior2nd_Wd Shng | ExterQual_Ex | ExterQual_Fa | ExterQual_Gd | ExterQual_TA | ExterCond_Fa | ExterCond_Gd | ExterCond_TA | Foundation_BrkTil | Foundation_CBlock | Foundation_PConc | Foundation_Wood | Heating_GasA | Heating_GasW | Heating_Grav | HeatingQC_Ex | HeatingQC_Fa | HeatingQC_Gd | HeatingQC_TA | CentralAir_N | CentralAir_Y | KitchenQual_Ex | KitchenQual_Fa | KitchenQual_Gd | KitchenQual_TA | Functional_Maj1 | Functional_Maj2 | Functional_Min1 | Functional_Min2 | Functional_Typ | PavedDrive_N | PavedDrive_P | PavedDrive_Y | SaleType_COD | SaleType_CWD | SaleType_Con | SaleType_ConLD | SaleType_ConLI | SaleType_ConLw | SaleType_New | SaleType_Oth | SaleType_WD | SaleCondition_Abnorml | SaleCondition_AdjLand | SaleCondition_Alloca | SaleCondition_Family | SaleCondition_Normal | SaleCondition_Partial |
|---:|--------------:|------------:|-------------:|-------------:|------------:|--------------:|--------------:|--------------:|--------------:|--------------:|--------------:|---------------:|---------------:|---------------:|---------------:|------------------:|------------------:|------------------:|------------------:|-------------------:|--------------------:|----------------:|----------------:|-------------------:|----------------:|----------------:|-----------------------:|-----------------------:|-----------------------:|-----------------------:|-----------------------:|-----------------------:|-----------------------:|----------------------:|-----------------------:|-----------------------:|---------------------:|-----------------------:|----------------------:|-----------------------:|-----------------------:|-----------------------:|---------------------:|----------------------:|-----------------------:|-----------------------:|-----------------------:|----------------------:|-----------------------:|--------------------:|-------------------:|------------------:|------------------:|------------------:|------------------:|------------------:|------------------:|------------------:|----------------:|------------------:|-----------------:|------------------:|--------------------:|--------------------:|--------------------:|--------------------:|--------------------:|------------------:|------------------:|--------------------:|----------------:|----------------------:|----------------------:|----------------------:|----------------------:|----------------------:|----------------------:|---------------------:|----------------------:|----------------------:|----------------------:|----------------------:|----------------------:|----------------------:|----------------------:|----------------------:|----------------------:|----------------------:|--------------------:|---------------------:|----------------------:|----------------------:|----------------------:|---------------:|---------------:|---------------:|---------------:|---------------:|---------------:|---------------:|--------------------:|--------------------:|-------------------:|------------------:|---------------:|---------------:|---------------:|---------------:|---------------:|---------------:|---------------:|---------------:|---------------:|-----------------:|-----------------:|-----------------:|-----------------:|------------------:|------------------:|------------------:|------------------:|-----------------:|---------------:|---------------:|---------------:|---------------:|---------------:|---------------:|-----------------:|-----------------:|-----------------:|---------------:|---------------:|--------------:|------------------------:|------------------------:|-----------------------:|-----------------------:|-----------------------:|------------------------:|
| 0 | 7 | 1710 | 2 | 548 | 208500 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 |
| 2 | 7 | 1786 | 2 | 608 | 223500 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 |
| 4 | 8 | 2198 | 3 | 836 | 250000 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 |
| 6 | 8 | 1694 | 2 | 636 | 307000 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 |
| 10 | 5 | 1040 | 1 | 384 | 129500 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 |
### Reduksi Dimensi dengan PCA
Teknik reduksi (pengurangan) dimensi adalah prosedur yang mengurangi jumlah fitur dengan tetap mempertahankan informasi pada data. Teknik pengurangan dimensi yang digunakan pada proyek ini adalah PCA. PCA adalah teknik untuk mereduksi dimensi, mengekstraksi fitur, dan mentransformasi data dari “n-dimensional space” ke dalam sistem berkoordinat baru dengan dimensi m, di mana m lebih kecil dari n.
PCA bekerja menggunakan metode aljabar linier dengan mengasumsikan bahwa sekumpulan data pada arah dengan varians terbesar merupakan yang paling penting (utama). PCA umumnya digunakan ketika variabel dalam data memiliki korelasi yang tinggi. Korelasi tinggi ini menunjukkan data yang berulang atau redundant. Karena hal inilah, teknik PCA digunakan untuk mereduksi variabel asli menjadi sejumlah kecil variabel baru yang tidak berkorelasi linier, disebut komponen utama (PC). Komponen utama ini dapat menangkap sebagian besar varians dalam variabel asli. Sehingga, saat teknik PCA diterapkan pada data, PCA hanya akan menggunakan komponen utama dan mengabaikan sisanya.
Sebelum dilakukan proses PCA, dilakukan proses analisis fitur numerik menggunakan pairplot. Dari hasil pairplot terdapat beberapa fitur yang akan dilakukan proses reduksi. Seperti terlihat pada Gambar 7, Fitur GrLivArea dan GarageArea memiliki korelasi yang cukup tinggi. Hal ini terjadi karena beberapa fitur tersebut mengandung informasi yang sama yaitu area/luas. Selanjutnya aplikasikan class [PCA](https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html) dari library scikit learn ke dalam kode program untuk melakukan pengurangan dimensi pada fitur tersebut.

Gambar 7. Diagram pairplot hasil proses analisis fitur numerik
Setelah dilakukan proses PCA, maka akan terdapat fitur baru bernama 'dimension' yang merupakan pengurangan dimensi dari fitur 'GrLivArea' dan 'GarageArea' seperti terlihat pada Tabel 6.
Tabel 6. Dataset hasil dari proses PCA
| | OverallQual | GarageCars | SalePrice | MSZoning_FV | MSZoning_RH | MSZoning_RL | MSZoning_RM | Street_Grvl | Street_Pave | LotShape_IR1 | LotShape_IR2 | LotShape_IR3 | LotShape_Reg | LandContour_Bnk | LandContour_HLS | LandContour_Low | LandContour_Lvl | LotConfig_Corner | LotConfig_CulDSac | LotConfig_FR2 | LotConfig_FR3 | LotConfig_Inside | LandSlope_Gtl | LandSlope_Mod | Neighborhood_Blmngtn | Neighborhood_BrkSide | Neighborhood_ClearCr | Neighborhood_CollgCr | Neighborhood_Crawfor | Neighborhood_Edwards | Neighborhood_Gilbert | Neighborhood_IDOTRR | Neighborhood_MeadowV | Neighborhood_Mitchel | Neighborhood_NAmes | Neighborhood_NPkVill | Neighborhood_NWAmes | Neighborhood_NoRidge | Neighborhood_NridgHt | Neighborhood_OldTown | Neighborhood_SWISU | Neighborhood_Sawyer | Neighborhood_SawyerW | Neighborhood_Somerst | Neighborhood_Stone