線性回歸(模型的評估

2021-10-05 15:14:59 字數 3438 閱讀 8600

前面兩篇文章筆者介紹了如何建模線性回歸(包括多變數與多項式回歸)、如何通過sklearn搭建模型並求解。但是對於乙個求解出來的模型我們應該怎樣來對其進行評估呢?換句話說,你這個模型到底怎麼樣?

以最開始的房價**為例,現在假設你求解得到了圖中所示的兩個模型h1(

x)h_1(x)

h1​(x)

與h 2(

x)h_2(x)

h2​(x)

,那麼應該選哪乙個呢?亦或是在不能視覺化的情況下,應該來如何評估模型的好與壞呢?

在回歸任務(對連續值的**)中,常見的評估指標(metric)有:平均絕對誤差(mean absolute error,mae)、均方誤差(mean square error,mse)、均方根誤差(root mean square error,rmse)和平均絕對百分比誤差(mean absolute percentage error,mape),其中用得最為廣泛的就是mae和mse。下面依次來進行乙個大致的介紹,同時對於下面所有的計算公式:n

nn均表示樣本數量、y

iy_i

yi​均表示第i

ii個樣本的真實值、y^i

\hat_i

y^​i

​均表示第i

ii個樣本的**值。

m ae

=1n∑

i=1n

∣yi−

y^i∣

,∈[0

,+∞)

(1)\large \sum_^n |y_i - \hat_i|},\;\;\in[0,+\infty)\;\;\;(1)

mae=n1

​i=1

∑n​∣

yi​−

y^​i

​∣,∈

[0,+

∞)(1

)

def

mae(y, y_pre)

:return np.mean(np.

abs(y - y_pre)

)

mse

=1n∑

i=1n

(yi−

y^i)

2,∈[

0,+∞

)(2)

\large \sum_^n (y_i - \hat_i)^2,\;\;\in[0,+\infty)}\;\;\;(2)

mse=n1

​i=1

∑n​(

yi​−

y^​i

​)2,

∈[0,

+∞)(

2)​ 看到,有人肯定會說這不是線性回歸的目標函式嗎?不錯,公式(2)既可以作為目標函式也可以用作評 估指標。

def

mse(y, y_pre)

:return np.mean(

(y - y_pre)**2

)

rms

e=1n

∑i=1

n(yi

−y^i

)2,∈

[0,+

∞)(3

)\large \sum_^n (y_i - \hat_i)^2},\;\;\in[0,+\infty)}\;\;\;(3)

rmse=n

1​i=

1∑n​

(yi​

−y^​

i​)2

​,∈[

0,+∞

)(3)

def

rmse

(y, y_pre)

:return np.sqrt(mse(y, y_pre)

)

map

e=100%n∑

i=1n

∣yi−

y^iy

i∣,∈

[0,+

∞)(4

)\large \sum_^n \left|\frac_i}\right|},\;\;\in[0,+\infty)\;\;\;(4)

mape=n

100%

​i=1

∑n​∣

∣∣∣∣

​yi​

yi​−

y^​i

​​∣∣

∣∣∣​

,∈[0

,+∞)(4)

def

mape

(y, y_pre)

:return np.mean(np.

abs(

(y - y_pre)

/ y)

)

def

r2(y, y_pre)

: u = np.

sum(

(y - y_pre)**2

) v = np.

sum(

(y - np.mean(y_pre))**

2)return1-

(u / v)

def

load_data()

: data = load_boston(

) x = data.data

y = data.target

return x, y

deftrain

(x, y)

: model = linearregression(

) model.fit(x, y)

y_pre = model.predict(x)

print

("model score: "

, model.score(x, y)

)print

("mae: "

, mae(y, y_pre)

)print

("mse: "

, mse(y, y_pre)

)print

("mape: "

, mape(y, y_pre)

)print

("r^2: "

, r2(y, y_pre)

)if __name__ ==

'__main__'

: x, y = load_data(

) train(x, y)

#結果:

#model score: 0.7406426641094094

#mae: 3.270862810900317

#mse: 21.894831181729206

#mape: 0.16417298806489977

#r^2: 0.7406426641094093

評估回歸模型

與優化均方誤差相比,優化平均絕對誤差可能會導致不同的 最優模型 然而,與優化 r2 值相同,優化均方誤差將總是導致相同的 最優 模型。同樣,如果你選擇具有最佳 r2 分數 最高 的模型,它也將是具有最低均方誤差 mse 的模型。1 平均絕對誤差 mae 不利於使用梯度下降 當你要 的資料遵循偏斜分布...

線性回歸模型 線性回歸模型

回歸的思想和分類有所不一樣,分類輸出的結果為離散的值,回歸輸出的是乙個連續型的值。線性回歸的思想就是試圖找到乙個多元的線性函式 當輸入一組特徵 也就是變數x 的時候,模型輸出乙個 值y h x 我們要求這個 值盡可能的準確,那麼怎麼樣才能做到盡可能準確呢?其中 表示實際值,表示 值 其中 表示實際值...

python模型評估 薦線性回歸及模型的評估

線性回歸模型 以鳶尾花的花瓣長度與寬度為例,實現回歸 import numpy as np from sklearn.model selection import train test split from sklearn.linear model import linearregression f...