1. 程式人生 > >scikit-learn 線性迴歸模型的score函式,返回值是決定係數R^2

scikit-learn 線性迴歸模型的score函式,返回值是決定係數R^2

http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LinearRegression.html#sklearn.linear_model.LinearRegression

http://scikit-learn.org/stable/modules/generated/sklearn.metrics.r2_score.html#sklearn.metrics.r2_score

 

線性迴歸的score函式返回的是:對預測結果計算出的決定係數R^2

 

LinearRegression的score函式原始碼:

def score(self, X, y, sample_weight=None):
        """Returns the coefficient of determination R^2 of the prediction.
        The coefficient R^2 is defined as (1 - u/v), where u is the residual
        sum of squares ((y_true - y_pred) ** 2).sum() and v is the total
        sum of squares ((y_true - y_true.mean()) ** 2).sum().
        The best possible score is 1.0 and it can be negative (because the
        model can be arbitrarily worse). A constant model that always
        predicts the expected value of y, disregarding the input features,
        would get a R^2 score of 0.0.
        Parameters
        ----------
        X : array-like, shape = (n_samples, n_features)
            Test samples.
        y : array-like, shape = (n_samples) or (n_samples, n_outputs)
            True values for X.
        sample_weight : array-like, shape = [n_samples], optional
            Sample weights.
        Returns
        -------
        score : float
            R^2 of self.predict(X) wrt. y.
        """

        from .metrics import r2_score
        return r2_score(y, self.predict(X), sample_weight=sample_weight,
                        multioutput='variance_weighted')

 

決定係數R^2

決定係數(coefficient ofdetermination),有的教材上翻譯為判定係數,也稱為擬合優度

決定係數反應了y的波動有多少百分比能被x的波動所描述,即表徵依變數Y的變異中有多少百分比,可由控制的自變數X來解釋。

意義:擬合優度越大,說明x對y的解釋程度越高。自變數對因變數的解釋程度越高,自變數引起的變動佔總變動的百分比高。觀察點在迴歸直線附近越密集。

 

在對資料進行線性迴歸計算之後,我們能夠得出相應函式的係數, 那麼我們如何知道得出的這個係數對方程結果的影響有強呢?

所以我們用到了一種方法叫 coefficient of determination (決定係數) 來判斷 迴歸方程 擬合的程度

  • 由於SS_{res}是估計資料也就是迴歸資料與平均值的誤差
  • SS_{tot} 是真實資料與平均值的誤差
  • SS_{res}一般比SS_{tot}小,結果一般在0-1之間,SS_{tot} 在資料確定後始終是固定值,如果估計的越不準確,那麼SS_{res}就越大,那麼 R^{2}就越接近0,所以估計的越準確就越接近1

 

參考資料:

https://blog.csdn.net/grape875499765/article/details/78631435?locationNum=11&fps=1

https://blog.csdn.net/snowdroptulip/article/details/79022532