MultipleLinearRegression_hand_engraved

Avatar of 潘泰宇.
Avatar of 潘泰宇.

MultipleLinearRegression_hand_engraved

Software QA Engineer
Taichung City, Taiwan

# MultipleLinearRegression_hand_engraved

GitHub ← 詳細程式碼


# 簡介


本專案為練習用手刻方式完成的多元線性回歸模型,包括成本函數、梯度函數和梯度下降優化等演算法。

使用原始資料中的年齡 (age)、性別 (sex)、飲酒習慣 (drink) 和教育程度 (education) 作為特徵預測工作時數。


在梯度下降迭代的過程中,訓練過程中的權重 (w_hist)、截距 (b_hist) 和成本 (c_hist) 變化亦會被記錄下來,可在訓練結束後查看。


優化器 : 梯度下降(Gradient Descent)


成本函數: 均方誤差(Mean Squared Error,MSE)

  

梯度函數:

取成本函數的切線斜率,對特定方向的權重(w1、w2、w3...,b)進行偏微分,即可得該方向之切線斜率(w1_gradient)。

每次迭代過程中,權重更新方式為:w1 = w1 - w1_gradient * learning_rate,b = b - b_gradient * learning_rate。



# 模型訓練


1. 訓練資料劃分: 使用 train_test_split 函式將資料分為訓練集和測試集,設定測試集比例為 25%。

2. 特徵標準化 : 使用 StandardScaler 來標準化特徵,確保模型訓練的穩定性。

3. 梯度下降優化 : 使用梯度下降法,進行模型訓練,最終獲得最佳的權重 (w_final) 和截距 (b_final)。

4. 模型預測 : 使用最佳的權重和截距對測試集進行預測,獲得預測結果 (y_pred)。

  


# 預設超參數:


1. w = np.array([1, 2, 3, 4])

2. b = 0

3. run_iter = 10000

4. learning_rate = 0.003



# 程式碼檔案


1. Multiple_LinearRegression.py : 這是主要的 Python 程式碼檔案,包含了資料的預處理、模型的訓練、梯度下降的實作以及預測的過程。

2. tscs2020q1.csv : 這是用來訓練和測試模型的資料集。



# 資料預處理


1. 選擇特徵 : 從原始資料中選取了年齡 (age)、性別 (sex)、飲酒習慣 (drink) 和教育程度 (education) 作為預測工作時數的特徵。

2. 處理缺失值 : 將帶有遺漏值的資料列刪除。

3. 特徵轉換 : 將教育程度轉換為類別型態:國中以下(0)、高中以上(1)、大學(2)、碩士以上(3)。

4. 資料過濾 : 年齡大於等於 997 和工作時數大於等於 900 的資料,此資料集中為遺漏值將其整筆刪除。



# 使用方法


1. 安裝相依套件 : 確保你的環境中已經安裝了以下套件:

  - NumPy

  - Pandas

  - Matplotlib

  - Scikit-learn


2. 執行程式碼 : 在終端機或命令提示字元中,執行 Multiple_LinearRegression.py 檔案。


3. 檢視結果 : 程式會輸出模型訓練過程中的一些訊息,最終會顯示模型在測試集上的預測效果。此外,也可以查看 w_hist、b_hist 和 c_hist,這些變數分別紀錄了權重、截距和成本在訓練過程中的變化。



本專案為練習用手刻方式完成的多元線性回歸模型,包括成本函數、梯度函數和梯度下降等演算法。
Avatar of the user.
Please login to comment.

Published: Oct 23rd 2023
28
3
0

Tools

python
Python

hand-engraved
python
linearregression

Share