0% menganggap dokumen ini bermanfaat (0 suara)
42 tayangan

Modul 07 Simple Linear Regression

Modul ini membahas regresi linier tunggal untuk memprediksi harga mobil berdasarkan spesifikasi horsepower. Data berisi 200 mobil dengan 2 fitur yaitu horsepower dan harga. Analisis data menunjukkan hubungan positif yang kuat antara kedua variabel. Model regresi dibangun menggunakan 80% data latih dan diuji menggunakan 20% sisa data. Hasil prediksi menunjukkan bahwa semakin besar nilai horsepower, semakin mahal harga mobil yang dihasilkan,

Diunggah oleh

Muhammad Zulham
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
42 tayangan

Modul 07 Simple Linear Regression

Modul ini membahas regresi linier tunggal untuk memprediksi harga mobil berdasarkan spesifikasi horsepower. Data berisi 200 mobil dengan 2 fitur yaitu horsepower dan harga. Analisis data menunjukkan hubungan positif yang kuat antara kedua variabel. Model regresi dibangun menggunakan 80% data latih dan diuji menggunakan 20% sisa data. Hasil prediksi menunjukkan bahwa semakin besar nilai horsepower, semakin mahal harga mobil yang dihasilkan,

Diunggah oleh

Muhammad Zulham
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 7

Modul 07 Simple Linear Regression

June 12, 2022

1 Simple Linear Regression


• Pada tutorial kali ini, kita akan menggunakan sebuah dataset yang memiliki 2 features, yaitu
horsepower dan price dari sebuah mobil
• Tujuan dari tutorial ini adalah memprediksi harga mobil jika mobil tersebut mempunyai
horsepower sebesar 100, 150, dan 200
• Hipotesis awal : mobil dengan horsepower lebih tinggi harganya lebih mahal jika dibandingkan
dengan yang horsepowernya lebih rendah.

1.0.1 Load library

[1]: import pandas as pd


import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split

1.0.2 Load datasets


[2]: #Nama dataframe kita adalah df yang berisi data dari data.csv
#Hanya menggunakan kolom horsepower dan price
df = pd.read_csv('data.csv', usecols=['horsepower', 'price'])

1.0.3 Sneak peak data

[3]: #Melihat 5 baris teratas dari data


#Independent variabel(x) adalah horsepower
#Dependent variabel(y) adalah price
df.head()

[3]: horsepower price


0 111.0 13495.0
1 111.0 16500.0
2 154.0 16500.0
3 102.0 13950.0
4 115.0 17450.0

1
[4]: #Mengetahui jumlah kolom dan baris dari data
#Data kita mempunya 2 kolom dengan 200 baris
df.shape

[4]: (200, 2)

[6]: #Melihat informasi data kita mulai dari jumlah data, tipe data, memory yang␣
,→digunakan dll.

df.info()

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 200 entries, 0 to 199
Data columns (total 2 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 horsepower 200 non-null float64
1 price 200 non-null float64
dtypes: float64(2)
memory usage: 3.2 KB

[7]: #Melihat statistical description dari data mulai dari mean, kuartil, standard␣
,→deviation dll

df.describe()

[7]: horsepower price


count 200.000000 200.000000
mean 103.320000 13230.375000
std 37.468615 7960.155239
min 48.000000 5118.000000
25% 70.000000 7775.000000
50% 95.000000 10320.000000
75% 116.000000 16500.750000
max 262.000000 45400.000000

1.0.4 Handling Missing Values

[31]: #Mencari dan menangani missing values


#Ternyata data kita tidak ada missing values
df.isnull().sum()

[31]: horsepower 0
price 0
dtype: int64

2
1.0.5 Exploratory Data Analysis (EDA)

[8]: #Univariate analysis horsepower


#Melihat distribusi dari horsepower
f = plt.figure(figsize=(12,4))

f.add_subplot(1,2,1)
df['horsepower'].plot(kind='kde')

f.add_subplot(1,2,2)
plt.boxplot(df['horsepower'])
plt.show()

• Dapat dilihat bahwa density dari horsepower paling tinggi di nilai 100.
• Distribusinya hampir mirip dengan distribusi normal namun persebaran data kurang merata
(memiliki standard deviasi yang tinggi).

[69]: #Univariate analysis price


#Melihat distribusi dari price
f = plt.figure(figsize=(12,4))

f.add_subplot(1,2,1)
df['price'].plot(kind='kde', c='g')

f.add_subplot(1,2,2)
plt.boxplot(df['price'])
plt.show()

3
• Density dari price paling tinggi di nilai 10000.
• Distribusinya hampir mirip dengan distribusi normal namun persebaran data kurang merata
(memiliki standard deviasi yang tinggi).

[34]: #Bivariate analysis horsepower dan price


#Menggunakan scatter plot
plt.scatter(df['horsepower'], df['price'])
plt.xlabel('Horsepower')
plt.ylabel('Price')
plt.title('Scatter Plot Horsepower vs Price')
plt.show()

4
• Dari scatter plot dapat dilihat bahwa data memiliki korelasi positif yang cukup signifikan.
• Hal ini berarti dengan bertambahnya nilai dari horsepower maka nilai price pun akan bertam-
bah
[35]: #Mengetahui nilai korelasi dari horsepower dan price
#Nilai korelasinya adalah 0.81 termasuk kategori sangat tinggi
df.corr()

[35]: horsepower price


horsepower 1.000000 0.811097
price 0.811097 1.000000

• Setelah kita tahu tentang karakteristik data kita, bisa dilanjutkan ke tahap modelling

1.0.6 Modelling

[36]: #Recall data kita


df.head()

[36]: horsepower price


0 111.0 13495.0
1 111.0 16500.0
2 154.0 16500.0
3 102.0 13950.0
4 115.0 17450.0

[9]: #Pertama, buat variabel x dan y


x = df['horsepower'].values.reshape(-1,1)
y = df['price'].values.reshape(-1,1)

[10]: #Kedua, kita split data kita menjadi training and testing dengan porsi 80:20
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2)

[11]: #Ketiga, kita bikin object linear regresi


lin_reg = LinearRegression()

[13]: #Keempat, train the model menggunakan training data yang sudah displit
lin_reg.fit(x_train, y_train)

[13]: LinearRegression()

[14]: #Kelima, cari tau nilai slope/koefisien (m) dan intercept (b)
print(lin_reg.coef_)
print(lin_reg.intercept_)

[[171.93277579]]
[-4522.89780842]

5
• dari nilai m dan b diatas, kalau dimasukan ke dalam rumus menjadi: Y = 164.73x - 3903.39
[15]: #Keenam, kita cari tahu accuracy score dari model kita menggunakan testing data␣
,→yang sudah displit

lin_reg.score(x_test, y_test)

[15]: 0.769360504968589

• Model kita mendapatkan accuracy score sebesar 78.68%


[16]: #Ketujuh, visualisasi aktual vs prediksi menggunakan data testing
#Garis merah merupakan garis regresi dari persamaan yang kita dapat tadi
y_prediksi = lin_reg.predict(x_test)
plt.scatter(x_test, y_test)
plt.plot(x_test, y_prediksi, c='r')
plt.xlabel('Horsepower')
plt.ylabel('Price')
plt.title('Plot Horsepower vs Price')

[16]: Text(0.5, 1.0, 'Plot Horsepower vs Price')

1.0.7 Prediction
• Yuk kita prediksi harga mobil ketika memiliki horsepower 100, 150, dan 200

6
[17]: #Prediksi harga mobil dengan horsepower 100
lin_reg.predict([[100]])

[17]: array([[12670.3797705]])

[18]: #Prediksi harga mobil dengan horsepower 150


lin_reg.predict([[150]])

[18]: array([[21267.01855996]])

[74]: #Prediksi harga mobil dengan horsepower 200


lin_reg.predict([[200]])

[74]: array([[29044.0245815]])

• dengan melihat prediksi harga diatas, didapatkan bahwa hipotesis awal kita memang benar
yaitu mobil dengan Horsepower 200 memiliki harga yang lebih mahal daripada yang lain!

Anda mungkin juga menyukai