模型评价 - 判断数据模型拟合效果的三种方法
生活随笔
收集整理的這篇文章主要介紹了
模型评价 - 判断数据模型拟合效果的三种方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
數據建模的目的就是獲得從自變量映射到因變量的函數,在建模的探索過程中,不同的方式總會得出不同的函數模型,而這些函數大多是由一些參數構成的,比如 y = f( x;?w0, w1, w2, w3, ...)。
?
平方損失函數
為了選擇在某種方式下最好的參數值( w0, w1, w2, w3, ...的值),這個衡量方法一般是比較原始數據與模型的預測數據之間的平方差,平方差定義為:
[(y(原始)-y(預測))**2 ]?/ N = [(y(原始)- f( x; w0, w1, w2, w3, ...))**2 ] / N
這個數值越小,說明模型的預測值越接近原始值,也就代表模型越好。上述表達式也稱為平方損失函數。
?
絕對損失函數
平方損失是非常常見的選擇,其他的損失函數比較適合回歸,比如另一個常見的是絕對損失函數。
| y(原始)-y(預測)| ?/ N = | y(原始)- f( x; w0, w1, w2, w3, ...)|??/ N
?
準確率
用準確率判斷模型好壞比較適合分類問題,即因變量是固定的幾個值,比如自變量是0或1的二分類問題。準確率就是看模型分類的結果與原始數據中的分類結果相同的占比。
準確率 = S(模型與原始數據的分類結果一致) / S(該分類下的所有數據量)
下面是python代碼示例:
y32 = lr.predict(x3)#用檢驗集x3的數據通過模型進行預測,結果儲存在變量y32中。 print(u'模型的平均準確率(檢驗集)為:%s'% lr.score(x3, y3)) print(u'模型的平均準確率(檢驗集,y=0)為:%s'% (sum(y32[i] == 0 for i,v in enumerate(y3) if v == 0) / sum(1 for i,v in enumerate(y3) if v == 0))) print(u'模型的平均準確率(檢驗集,y=1)為:%s'% (sum(y32[i] == 1 for i,v in enumerate(y3) if v == 1) / sum(1 for i,v in enumerate(y3) if v == 1)))?
?
總結
以上是生活随笔為你收集整理的模型评价 - 判断数据模型拟合效果的三种方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PAT乙类1007之素数对猜想
- 下一篇: 此beta版本目前不接受任何新测试员_A