其實就只是在打基礎、simple linear regression在真實世界的運用應該是很少的。
BTW,因為這篇也是先前預寫的、所以還是會有比較詳細的程式碼、下一篇實作開始會刻意的減少~
首先大概快速看一下資料,資料是年資跟年薪
接著我們要用年資來預測年薪,所以就先老動作
匯入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真的蠻大的耶
講師是將結果這樣呈現
紅點跟斜線的落差,就是預測跟真實的落差。
其實跟我上圖的bar是一樣的意思、不過用這方式看感覺差距好小,用bar 看差距完全不能接受。這也是一種資料呈現的差異。至於這樣的結果好不好,模型適切度....似乎不在本章討論範圍。
複習一下本章學到的新知
sklearn.linear_model,除了simple regression,還有其他多種regression方法可以選。simpleregression有fit,predict方法,想要單獨看intercept跟coefficient的話,可以呼叫 intercept_ 跟 coef_~
plt 就是畫圖的技巧,基本上我是每次畫每次忘,因此決定以後需要時、去copy改一改參數就好。