Modul 07 Simple Linear Regression
Modul 07 Simple Linear Regression
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()
[31]: horsepower 0
price 0
dtype: int64
2
1.0.5 Exploratory Data Analysis (EDA)
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).
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).
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()
• Setelah kita tahu tentang karakteristik data kita, bisa dilanjutkan ke tahap modelling
1.0.6 Modelling
[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)
[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
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]: array([[21267.01855996]])
[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!