iT邦幫忙

0

[Machine Learning A-Z [2026] ] 學習筆記 Day5 Simple Linear Regression 實作

  • 分享至 

  • xImage
  •  

其實就只是在打基礎、simple linear regression在真實世界的運用應該是很少的。
BTW,因為這篇也是先前預寫的、所以還是會有比較詳細的程式碼、下一篇實作開始會刻意的減少~

首先大概快速看一下資料,資料是年資跟年薪
https://ithelp.ithome.com.tw/upload/images/20260807/201834777XTsBi4PS0.png

接著我們要用年資來預測年薪,所以就先老動作
匯入library

import numpy as py
import pandas as pd
import metaplotlib.pyplot as plt

匯入資料

dataset = pd.csv.read(salary.csv)
#接著切割出X(自變數)跟Y(依變數)
X = dataset.iloc[:,:-1].value
y = dataset.iloc[:,-1].value

檢查空值
肉眼檢查是沒有拉、不過無腦直接做資料補齊的動作也可以

from sklearn.impute import SimpleImputer
#後頭為了著作權不全寫

編譯類別資料
應該有點肌肉記憶了吧、使用columntransformer跟onehotencoder
要做feature scaling嗎? 原則上是不用拉、當然要做也不是不行,我認為對結果應該是沒有影響

資料分組
一樣使用train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 0)
#涵式跟參數都有提字卡提示、所以不用記全部,大概記一個名稱就好、我也沒有那麼會記參數

modelling: linear regression
走好久終於走到這一步、下個實作我肯定不會再寫一次不重複前面的步驟了

from sklearn.linear_model import LinearRegression
regressor = LinearRegression()
regressor.fit(X_train,y_train)

拿模型來預測

y_pred = regressor.predict(X_test)

不過其實到這個部分我有點疑惑,因為X_test預測出來的Y 跟 Y_test應該是有蠻大的落差,實際去運算的結果也是,所以只能說這個模型應該沒有很好用吧(X)

y_pred = regressor.predict(X_test)
gap = y_pred - y_test
plt.bar(np.arange(len(gap)), gap)
plt.show()

以上是我視覺化的成果,gap真的蠻大的耶
https://ithelp.ithome.com.tw/upload/images/20260807/20183477tEMJy9xnb9.png

講師是將結果這樣呈現
https://ithelp.ithome.com.tw/upload/images/20260807/20183477kFxqR2tjOr.png
紅點跟斜線的落差,就是預測跟真實的落差。
其實跟我上圖的bar是一樣的意思、不過用這方式看感覺差距好小,用bar 看差距完全不能接受。這也是一種資料呈現的差異。至於這樣的結果好不好,模型適切度....似乎不在本章討論範圍。

複習一下本章學到的新知
sklearn.linear_model,除了simple regression,還有其他多種regression方法可以選。simpleregression有fit,predict方法,想要單獨看intercept跟coefficient的話,可以呼叫 intercept_ 跟 coef_~

plt 就是畫圖的技巧,基本上我是每次畫每次忘,因此決定以後需要時、去copy改一改參數就好。


圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言