機器學習100天——實現簡單線性迴歸(第二天)
layout: article
title: 機器學習100天——實現簡單線性迴歸(第二天)
mathjax: true
---
線性迴歸演算法的作用是使用單一特徵來預測響應值。是一種根據自變數X預測因變數Y的方法。假設兩個變數是線性相關的,那麼我們要找到一個線性函式,根據特徵或自變數X來精確預測響應值Y。
如何找到最佳擬合線
在這個迴歸模型中,我們嘗試通過尋找最佳擬合線來最小化預測的誤差——根據線性迴歸預測的結果誤差最小。我們嘗試最小化觀察值和預測值之間的長度,長度越小,誤差就越小,反之亦然。
我們將使用一個根據學生花費在學習上的小時數預測他們分數的百分比的例子學習如何使用線性迴歸模型。請看下圖:

線性迴歸模型為:
$ y = b_0 + b_1x_1$
將上圖中的自變數和因變數代入到上面的模型中,則變為:
$ Score = b_0 + b_1 * hours $
線性迴歸其實就是解一元一次方程,求出截距和斜率。
下面介紹使用Python實現線性迴歸演算法的步驟。
步驟1:資料預處理
- 匯入相關庫
- 匯入資料集
- 檢查缺失資料
- 劃分資料集
- 使用簡單線性迴歸模型進行特徵縮放
步驟2:通過訓練集來訓練簡單線性迴歸模型
為了使用模型來訓練資料集,我們將使用來自sklern.liner_model庫的LinearRegression類,然後建立一個LinearRegression類物件regressor,最後使用該物件的fit()方法對資料集進行訓練。
步驟3:預測結果
現在我們將預測來自訓練集的觀察結果。我們將把輸出儲存在向量Y_pred中。我們使用前一步中訓練的迴歸模型regressor的LinearGression類的預測方法來對結果進行預測。
步驟4:預測結果視覺化
使用matplotlib.pyplot庫對我們的訓練結果和測試結果做散點圖,以檢視我們的模型預測效果。
具體實現程式碼如下:
第一步:資料預處理
import pandas as pd import numpy as np import matplotlib.pyplot as plt dataset = pd.read_csv('studentscores.csv') X = dataset.iloc[ : ,: 1 ].values Y = dataset.iloc[ : , 1 ].values from sklearn.model_selection import train_test_split X_train, X_test, Y_train, Y_test = train_test_split( X, Y, test_size = 1/4, random_state = 0)
第二步:通過訓練集來訓練簡單線性迴歸模型
from sklearn.linear_model import LinearRegression regressor = LinearRegression() regressor = regressor.fit(X_train, Y_train)
第三步:預測結果
Y_pred = regressor.predict(X_test)
第四步:視覺化
訓練結果視覺化:
plt.scatter(X_train , Y_train, color = 'red') plt.plot(X_train , regressor.predict(X_train), color ='blue') plt.show()
測試結果視覺化:
plt.scatter(X_test , Y_test, color = 'red') plt.plot(X_test , regressor.predict(X_test), color ='blue') plt.show()
測試資料請加本人的微信公眾號獲取。