Anda di halaman 1dari 13

LAPORAN EKSPERIMEN

Pengantar Penambangan Data dengan Python

Eksplorasi dan Penyiapan Dataset


house_price_data_2.csv

Dibuat oleh:

NPM/Nama:
6181901022/Dwi Lena Irawati

Tanggal:

12 September 2022

Jurusan Informatika
Universitas Katolik Parahyangan
I. Tujuan Eksperimen
Untuk menentukan prediksi harga rumah dari data yang telah disediakan dengan cara
melakukan eksplorasi data dan pembersihan data terlebih dahulu agar hasil yang dicapai lebih
akurat.

II. Deskripsi Dataset


Dataset ‘house_price_data_2’ menunjukan harga rumah dengan karakeristik yang dimiliki setiap rumah.
Nama dataset : ‘house_price_data_2
Jumlah baris/record: 21616
Jumlah Atribut : 21
Ukuran FIle : 2.305 KB
Field Type

Id int64

Date object

Price float64

Bedrooms int64

Bathrooms float64

sqft_living int64

sqrt_lot int64

floors float64

waterfronts int64

view int64

condition int64

grade int64
sqft_above int64
sqft_basement int64
yr_built int64
yr_renovated int64
zipcode int64
lat float64
long float64
sqft_living15 int64
sqft_lot15 int64

Dari data diatas terdapat beberapa kesalahan, seperti bathrooms dan floors yang memiliki tipe
data float karena atribut bathrooms memiliki arti banyak kamar mandi yang ada di rumah dan
floors adalah banyak lantai pada rumah.

III. Metoda Eksperimen


Untuk melakukan eksperimen ini terdapat 2 tahapan. Pertama akan melakukan eksplorasi data untuk
mengetahui atribut data, hubungan antara atribut dan menemukan kesalahan pada nilai data. Tahapan
selanjutnya dilakukan penyiapan data set seperti membersihkan data set dari kesalahan yang telah
ditemukan sebelumnya.
● Eksplorasi Data
Berikut ini tahapan dari eksplorasi data:
1. Mengeksplorasi atribut beserta tipe datanya.
2. Mencari nilai minimum, maksimum, rata-rata, median, modus.
3. Mencari pada record nilai 0, null, atau nilai negatif.
4. Melakukan visualisasi dengan cara mencari distribusi nilai untuk setiap atribut
dengan menggunakan grafik seperti histogram.
● Penyiapan Data
Berikut ini tahapan dari penyiapan data.
1. Memilih atribut yang akan digunakan.
2. Menghapus record yang memiliki nilai yang salah
3. Mengecek kembali jumlah record setelah dilakukan pembersihan
4. Mengecek nilai minimum dan maksimum dari atribut yang telah dibersihkan.
5. Membuat visualisasi dari data yang telah dibersihkan.

IV. Hasil Eksperimen dan Analisisnya

Untuk melakukan eksplorasi, melakukan pencarian distribusi nilai untuk setiap atribut dengan
menggunakan histogram. didapat hasil histogram dari setiap atribut sebagai berikut:
Dari histogram diatas dapat dilihat beberapa atribut yang memiliki distribusi mendekati normal.
4.1. Eksplorasi Nilai Tiap Kolom (Numerik)

Berikut ini hasil dari ekplorasi nilai dari setiap atribut seperti nilai rata-rata, nilai tengah dan nilai
tengah, nilai minimum, nilai maksimum, nilai 0, null, dan negatif.
Atribut 0 Null Nilai Nilai Modus Median Mean
Minimu Maksimu
m m

Price - - 10.0 7700000.0 45000.0 540129.974

Bedrooms 13 - 0 33 3 3.0 3.371

Bathrooms 11 - 0 33 2.5 2.25 2.116

sqft_living - - 1 13540 1300 1910.0 2079.745

sqrt_lot - - 2 1651359 500 7617.5 15105.665

floors - - 1.0 3.5 1.0 1.5 1.494

waterfronts 21453 - 0 1 0 0.0 0.0075

view 19492 - 0 4 0 0.0 0.234

condition - - 1 5 3 3.0 3.409

grade - - 1 13 7 7.0 7.657

sqft_above - - 290 9410 1300 1560.0 1788.288

sqft_basemen 13127 - 0 4820 0 0.0 291.506


t

yr_built - - 1900 2015 2014 1975 1975.999

yr_renovated 20702 - 0 2015 0 0.0 84.396

zipcode - - 98001 98199 98103 98065 98077.943

lat - - 47.1559 47.7776 47.572 47.571 47.580


long - - -122.519 -121.315 -122.23 -122.230 -122.214
0

sqft_living15 - - 399 6210 1540 1840 1986.501

sqft_lot15 - - -3456 871200 5000 7620 12767.127

Terdapat beberapa atribut yang memiliki kesalahan seperti :


● Pada atribut price memiliki nilai minimum 10. Sehingga tidak masuk akal harga rumah hanya
seharga 10$.
● Pada atribut Bathroom dan floor memiliki tipe data float sehingga beberapa nilai bernilai
pecahan. Tidak masuk akal untuk jumlah kamar mandi dan lantai bernilai pecahan.
● Pada atribut bedroom dan bathroom memiliki nilai minimum 0. Sehingga tidak masuk akal
untuk rumah yang tidak memiliki kamar mandi atau kamar tidur.
● Pada atribut sqft_living terdapat luas rumah 1 meter. Sehingga tidak mungkin luas
rumah hanya 1 meter.
● Pada atribut sqrt_lot terdapat luas tanah 2 meter. Sehingga tidak mungkin luas tanah
hanya 2 meter.
● Pada atribut sqft_lot15 terdapat rumah yang jarak dengan tetangga bernilai negatif. Sehingga
tidak mungkin jarak tetangga bernilai negatif.

4.2. Penyiapan Data

Pada tahapan penyiapan data, akan dilakukan pembersihan data. Pertama dilakukan penghapusan
atribut yang tidak akan digunakan sebagai atribut prediktor pada pembuatan model regresi. Atribut
yang diasumsikan bukan atribut prediktor adalah :
● Atribut date
● Atribut zipcode

Setelah dilakukan penghapusan atribut yang bukan atribut prediktor, akan dilakukan pembersihan dari
nilai yang tidak masuk akal pada atribut dengan cara melakukan pembulatan pada tipe data float atau
menghapus record seperti di bawah ini :
● Atribut price
Menghilangkan record dengan nilai price <=10
df2 = df2[(df2.price>10)]
setelah dilakukan pembersihan, dilakukan pengecekan kembali nilai minimal dan maksimal
dari atribut price. Hal ini dilakukan untuk memastikan tidak ada record yang salah.
Nilai min = 78000.0
Nilai max = 7700000.0
● Atribut bedroom
Menghilangkan record dengan nilai bedrooms <=0
df2 = df2[(df2.bedrooms>0)]
setelah dilakukan pembersihan, dilakukan pengecekan kembali nilai minimal dan maksimal
dari atribut bedroom. Hal ini dilakukan untuk memastikan tidak ada record yang salah.
Nilai min = 1
Nilai max = 33
● Atribut bathroom
Mengganti tipe data bathrooms dari float menjadi integer agar tidak ada record yang bernilai
pecahan.
data_types_dict = {'bathrooms': np.int64}
df2 = df2.astype(data_types_dict

Menghilangkan record dengan nilai bathroom <=1


df2 = df2[(df2.bathrooms>0)]
setelah dilakukan pembersihan, dilakukan pengecekan kembali nilai minimal dan maksimal
dari atribut bathroom. Hal ini dilakukan untuk memastikan tidak ada record yang salah.
Nilai min = 1
Nilai max = 8

● Atribut sqft_lot15
Menghilangkan record dengan nilai sqft_lot15 <=1
df2 = df2[(df2.sqft_lot15>0)]
setelah dilakukan pembersihan, dilakukan pengecekan kembali nilai minimal dan maksimal
dari atribut bathroom. Hal ini dilakukan untuk memastikan tidak ada record yang salah.
Nilai min = 651
Nilai max = 871200
● Atribut Floors
Mengganti tipe data floors dari float menjadi integer agar tidak ada record yang bernilai
pecahan.
data_types_dict = {'floors': np.int64}
df2 = df2.astype(data_types_dict)
setelah dilakukan pembersihan, dilakukan pengecekan kembali nilai minimal dan maksimal
dari atribut bathroom. Hal ini dilakukan untuk memastikan tidak ada record yang salah.
Nilai min = 1
Nilai max = 3
Setelah dilakukan pembersihan didapati hasil akhir didapati jumlah atribut sebesar 19 atribut dan
jumlah record sebesar 21523 record. Berikut ini histogram dari atribut yang telah dilakukan
pembersihan:
4.3. Eksplorasi Hubungan Nilai-nilai Kolom dengan Kolom price

Pada tahapan ini, akan dilakukan eksplorasi data hubungan dari 2 nilai atribut dengan menggunakan
visualisasi seperti scatter plot. Dari eksperimen 4.2, akan dipilih atribut yang berpotensi sebagai
atribut prediktor penentuan harga rumah.

Berikut atribut yang berpotensi untuk menjadi atribut prediktor harga rumah berdasarkan scatter plot
antara lain :
● Atribut sqft_living
● Atribut sqft_above
● Atribut sqft_basement
● Atribut sqft_living
Berdasarkan scatter plot dapat disimpulkan atribut yang berpotensi menjadi atribut prediktor adalah
atribut Atribut sqft_living, Atribut sqft_above, Atribut sqft_basement, Atribut sqft_living karena
dapat dilihat pada scatter plot datanya mengalami kenaikan sehingga dapat disimpulkan atribut
sqft_living, Atribut sqft_above, Atribut sqft_basement, Atribut sqft_living memiliki hubungan dengan
atribut price.

V. Kesimpulan

Berdasarkan scatter plot pada 4.3 dapat disimpulkan bahwa terdapat beberapa atribut yang memiliki
hubungan positif yaitu jika sumbu x membesar maka sumbu y juga akan membesar. Meskipun
demikian belum dapat disimpulkan bahwa nilai pada atribut prediktor yang menentukan harga rumah.
Dari tahapan scatter plot harus dianalisa lebih jauh dengan cara menguji korelasi untuk mengetahui
hubungan antar atribut prediktor dengan atribut harga. Jika nilai dari korelasi tersebut bernilai positif
dan mendekati 1, maka atribut price dan atribut prediktor memiliki hubungan searah, begitu pula
sebaliknya, jika nilai korelasi tersebut bernilai negatif dan mendekati 1, maka atribut price dan atribut
prediktor memiliki hubungan namun tidak searah.

Lampiran

import pandas as pd
from google.colab import files
upload=files.upload()

df = pd.read_csv('house_price_data_2.csv')
print(df.dtypes)
print(df.shape)

# ringkasan data
df.describe()

# Eksplorasi dgn visualisasi

import matplotlib.pyplot as plt


import numpy as np

# Distribusi nilai tiap atribut

#Histogram 'price'
count, bin_edges = np.histogram(df['price'])
df['price'].plot(kind = 'hist', xticks = bin_edges)
plt.title('Histogram untuk price')
plt.ylabel('Frekuensi')
plt.xlabel('price')
plt.show()

#dilakukan berulang kali untuk setiap atribut

#cleaning data
import matplotlib.pyplot as plt
import pylab as pl
import numpy as np
from sklearn.tree import DecisionTreeClassifier
df2
=df[['id','price','bedrooms','bathrooms','sqft_living','sqft_lot','floors','w
aterfront','view','condition','grade','sqft_above','sqft_basement','yr_built'
,'yr_renovated','lat','long','sqft_living15','sqft_lot15

#price
df2 = df2[(df2.price>10)]
print(df2.price.min())
print(df2.price.max())
count, bin_edges = np.histogram(df['price'])
df2['price'].plot(kind = 'hist', xticks = bin_edges)
plt.title('Histogram untuk price')
plt.ylabel('Frekuensi')
plt.xlabel('price')
plt.show()
#bathrooms
minn=df.bathrooms.min()
df2 = df2[(df2.bathrooms>0)]
print(df2.bathrooms.min())
print(df2.bathrooms.max())
data_types_dict = {'bathrooms': np.int64}
df2 = df2.astype(data_types_dict)

df2.bathrooms
count, bin_edges = np.histogram(df['bathrooms'])
df2['bathrooms'].plot(kind = 'hist', xticks = bin_edges)
plt.title('Histogram untuk bathrooms')
plt.ylabel('Frekuensi')
plt.xlabel('bathrooms')
plt.show()

#bedrooms
minn=df.bedrooms.min()
df2 = df2[(df2.bedrooms>0)]
print(df2.bedrooms.min())
print(df2.bedrooms.max())
count, bin_edges = np.histogram(df['bedrooms'])
df2['bedrooms'].plot(kind = 'hist', xticks = bin_edges)
plt.title('Histogram untuk bedrooms')
plt.ylabel('Frekuensi')
plt.xlabel('bedrooms')
plt.show()

#sqft_lot15
minn=df.sqft_lot15.min()
df2 = df2[(df2.sqft_lot15>0)]
print(df2.sqft_lot15.min())
print(df2.sqft_lot15.max())
count, bin_edges = np.histogram(df['sqft_lot15'])
df2['sqft_lot15'].plot(kind = 'hist', xticks = bin_edges)
plt.title('Histogram untuk sqft_lot15')
plt.ylabel('Frekuensi')
plt.xlabel('sqft_lot15')
plt.show()

#floors
data_types_dict = {'floors': np.int64}
df2 = df2.astype(data_types_dict)
print(df2.floors.min())
print(df2.floors.max())
df2.floors

count, bin_edges = np.histogram(df['floors'])


df2['floors'].plot(kind = 'hist', xticks = bin_edges)
plt.title('Histogram untuk floors')
plt.ylabel('Frekuensi')
plt.xlabel('floors')
plt.show()

cnt = df.count
cnt2=df2.count
print(cnt)
print(cnt2)

#membuat scatter plot

plt.scatter(df2.bedrooms, df2.price, color='blue')


plt.xlabel("bedrooms")
plt.ylabel("price")
plt.show()

dilakukan berulang kali untuk semua atribut prediktor

Anda mungkin juga menyukai