r2_score#
- sklearn.metrics.r2_score(y_true, y_pred, *, sample_weight=None, multioutput='uniform_average', force_finite=True)[原始碼]#
\(R^2\)(決定係數)迴歸評分函數。
最佳可能分數為 1.0,且可能為負值(因為模型可能任意變差)。在真實 y 為非恆定的情況下,一個總是預測平均 y 而忽略輸入特徵的恆定模型將獲得 \(R^2\) 分數 0.0。
在
y_true
為常數的特殊情況下,\(R^2\) 分數不是有限的:它可能是NaN
(完美預測)或-Inf
(不完美預測)。為了防止這種非有限數字污染更高層級的實驗(如網格搜尋交叉驗證),預設情況下,這些情況會分別替換為 1.0(完美預測)或 0.0(不完美預測)。您可以將force_finite
設定為False
來防止此修復發生。注意:當預測殘差的平均值為零時,\(R^2\) 分數與
解釋變異 分數
相同。在 使用者指南 中閱讀更多資訊。
- 參數:
- y_true形狀為 (n_samples,) 或 (n_samples, n_outputs) 的類陣列
真實(正確)目標值。
- y_pred形狀為 (n_samples,) 或 (n_samples, n_outputs) 的類陣列
估計的目標值。
- sample_weight形狀為 (n_samples,) 的類陣列,預設值為 None
樣本權重。
- multioutput{'raw_values'、'uniform_average'、'variance_weighted'},形狀為 (n_outputs,) 的類陣列或 None,預設值為 'uniform_average'
定義多個輸出分數的聚合方式。類陣列值定義用於平均分數的權重。預設值為 “uniform_average”。
- ‘raw_values’
在多輸出輸入的情況下,傳回完整的分數集。
- ‘uniform_average’
所有輸出的分數都以統一權重進行平均。
- ‘variance_weighted’
所有輸出的分數都進行平均,並按每個個別輸出的變異數加權。
在 0.19 版本中變更:多輸出的預設值為 ‘uniform_average’。
- force_finitebool,預設值為 True
旗標指示是否應將由恆定資料產生的
NaN
和-Inf
分數替換為實數(如果預測完美,則為1.0
,否則為0.0
)。預設值為True
,這是超參數搜尋程序(例如,網格搜尋交叉驗證)的方便設定。在 1.1 版本中新增。
- 傳回值:
- z浮點數或浮點數的 ndarray
如果 ‘multioutput’ 為 ‘raw_values’,則為 \(R^2\) 分數或分數的 ndarray。
備註
這不是對稱函數。
與大多數其他分數不同,\(R^2\) 分數可能為負值(它實際上不一定是數量 R 的平方)。
此度量對於單個樣本來說沒有明確定義,如果 n_samples 小於 2,將傳回 NaN 值。
參考文獻
[1]範例
>>> from sklearn.metrics import r2_score >>> y_true = [3, -0.5, 2, 7] >>> y_pred = [2.5, 0.0, 2, 8] >>> r2_score(y_true, y_pred) 0.948... >>> y_true = [[0.5, 1], [-1, 1], [7, -6]] >>> y_pred = [[0, 2], [-1, 2], [8, -5]] >>> r2_score(y_true, y_pred, ... multioutput='variance_weighted') 0.938... >>> y_true = [1, 2, 3] >>> y_pred = [1, 2, 3] >>> r2_score(y_true, y_pred) 1.0 >>> y_true = [1, 2, 3] >>> y_pred = [2, 2, 2] >>> r2_score(y_true, y_pred) 0.0 >>> y_true = [1, 2, 3] >>> y_pred = [3, 2, 1] >>> r2_score(y_true, y_pred) -3.0 >>> y_true = [-2, -2, -2] >>> y_pred = [-2, -2, -2] >>> r2_score(y_true, y_pred) 1.0 >>> r2_score(y_true, y_pred, force_finite=False) nan >>> y_true = [-2, -2, -2] >>> y_pred = [-2, -2, -2 + 1e-8] >>> r2_score(y_true, y_pred) 0.0 >>> r2_score(y_true, y_pred, force_finite=False) -inf