簡體   English   中英

sklearn 給出了意外的 r2 分數

[英]sklearn gives unexpected r2 score

我已經建立了一個linear regression模型,我想根據我的輸出計算r2分數。 然而結果真的出乎意料:

正如您在下面看到的, yy hat之間的pearson相關性是正的,這意味着r2分數至少應該是正的。 但是我從sklearn得到的結果是否定的。 怎么來的? 提前致謝!


import numpy as np
from sklearn.metrics import r2_score
from scipy.stats import pearsonr

y = np.array([ 5.2       ,  1.144     ,  3.3       ,  5.59741373,  1.438     ,       7.562     ,  2.7       ,  0.22706035,  2.204     ,  2.396     ,
        4.314     , 12.51420331, 10.8       , 10.638     ,  5.101     ,
        3.861     ,  3.2       ,  3.8       ,  7.072     , -0.4597798 ,
       -0.9       ,  0.3       , -3.54      , -0.4       , -3.        ,
        0.7       ,  1.3       ,  1.5       ,  6.        ,  2.8       ,
        2.        ,  3.122     ])

y_hat = np.array([ 1.25131326,  2.64864629,  1.56201996,  4.26699994,  2.21499358,
        0.59113701,  2.40848854,  0.14954989,  0.45800824,  2.82399621,
        2.48736001,  2.78476975,  1.36378354,  3.4889863 ,  2.4226333 ,
        2.63939523,  4.15008518,  2.61525276,  2.29859288, -1.4358969 ,
       -3.67752652, -3.73173215, -2.67027158,  0.35012302,  3.91349371,
        5.11971861,  5.96586311,  3.36520449,  0.5204047 ,  1.584193  ,
       -0.05781178,  1.75957967])

pearsonr(y, y_hat) # This gives around 0.299
r2_score(y, y_hat) # This gives -0.18478241562914666

我想我知道這里發生了什么。 基本上我天真地認為正相關會導致正 r 平方,但事實並非如此。 通過計算 y_hat 與 y 和 y_avg 與 y 的均方誤差,我意識到 y_hat 確實是比總是只預測平均值更糟糕的估計量。

http://www.fairlynerdy.com/what-is-r-squared/

從上面的鏈接看這張圖,你可以看到,即使兩個系列在同一個方向上移動,截距造成的距離也會讓 MSE 測量的性能非常糟糕在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM