前面兩篇文章筆者介紹了如何建模線性回歸(包括多變數與多項式回歸)、如何通過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
1i=
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...