iT邦幫忙

2024 iThome 鐵人賽

DAY 8
0
AI/ ML & Data

菜就多練之我叫小賀逃離DS新手村系列 第 8

Day 8 如法炮製-勇於接受考驗的迴歸模型

  • 分享至 

  • xImage
  •  

迴歸模型評估🤖

回歸模型預測出的結果為連續型的數值,預測出來的結果與真實數值兩者越接近,即模型表現較佳。今天將詳細介紹迴歸模型的評估方式。


均方誤差(Mean Square Error, MSE)🐭

https://ithelp.ithome.com.tw/upload/images/20240812/20155713iMMHJ9Gv7f.jpg
MSE是實際值與預測值之間相差的平方和取平均。MSE對於outlier會比較敏感,因為outlier會被平方後放大而導致MSE較大。MSE越趨近於0,模型表現越好。


均方根誤差(Root Mean Squared Error, RMSE)🐮

https://ithelp.ithome.com.tw/upload/images/20240812/20155713yWPHnAOI4m.jpg
即MSE的平方根,因為有平方根所以outlier的影響程度會降低(但還是有影響),實務上我們會評估是否需要將outlier移除再計算。RMSE越趨近於0,模型表現越好。


平均絕對誤差(Mean Absolute Error, MAE)🐯

https://ithelp.ithome.com.tw/upload/images/20240812/20155713TLt8F7VNi8.jpg
MAE是實際值與預測值之間相差的絕對值和取平均。MAE對於outlier的接受度較高,因此,MAE在有outlier的情況下比MSE更好反映模型的預測誤差。MAE越趨近於0,模型表現越好。


平均絕對百分比誤差(Mean Absolute Percentage Error, MAPE)🐰

https://ithelp.ithome.com.tw/upload/images/20240812/20155713lEPzK4qCQT.jpg
MAPE表達了預測值跟實際值的相差佔實際值的平均百分比。若實際值趨近於0時,MAPE的計算會產生非常大的誤差或無法計算。MAPE越趨近於0,模型表現越好。


決定係數(Coefficient of determination, R²)🐲

https://ithelp.ithome.com.tw/upload/images/20240812/20155713EgkEwHtZhv.jpg
在R²的公式中,分母表示總變異量(Total Sum of Squares, SST),即觀察值與平均值的總變異,用來衡量數據集的總變異程度。分子表示殘差變異(Sum of Squared Errors),即觀察值與預測值之間的變異,用來衡量模型預測誤差的總和。R²是用來衡量模型解釋變異能力的指標,範圍從 0 到 1。R² 越接近 1,表示模型對數據的解釋能力越強。


實戰演練 🔥

程式碼如下:

import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score

# 生成假資料
np.random.seed(0)
X = 2 * np.random.rand(100, 1)
y = 4 + 3 * X + np.random.randn(100, 1)

# 切割數據為訓練集和測試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)

# 建立線性回歸模型
model = LinearRegression()
model.fit(X_train, y_train)

# 預測
y_pred = model.predict(X_test)

# 計算評估指標
mse = mean_squared_error(y_test, y_pred)
rmse = np.sqrt(mse)
mae = mean_absolute_error(y_test, y_pred)
mape = np.mean(np.abs((y_test - y_pred) / y_test)) * 100
r2 = r2_score(y_test, y_pred)

# 輸出結果
print(f'MSE: {mse:.2f}')
print(f'RMSE: {rmse:.2f}')
print(f'MAE: {mae:.2f}')
print(f'MAPE: {mape:.2f}%')
print(f'R^2: {r2:.2f}')

題外話 😂

最近用了一個IDE真的驚為天人,它就是Cursor
多說無益大家試過就知道它有多🐮🍺。


上一篇
Day 7 真金不怕火-經得起考驗才是好模型
下一篇
Day 9 發現新大陸-歡迎來到深度學習的世界
系列文
菜就多練之我叫小賀逃離DS新手村30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言