explained_variance_score#

sklearn.metrics.explained_variance_score(y_true, y_pred, *, sample_weight=None, multioutput='uniform_average', force_finite=True)[原始碼]#

解釋變異數迴歸評分函數。

最佳可能分數為 1.0,較低的值表示較差。

y_true 為常數的特殊情況下,解釋變異數分數不是有限的:它是 NaN(完美預測)或 -Inf(不完美預測)。為了防止此類非有限數字污染更高層次的實驗,例如網格搜尋交叉驗證,預設情況下,這些情況會分別替換為 1.0(完美預測)或 0.0(不完美預測)。如果 force_finite 設定為 False,則此分數會回退到原始的 \(R^2\) 定義。

注意

解釋變異數分數與 R^2 分數 相似,但顯著的差異在於它不考慮預測中的系統性偏移。大多數情況下,應該優先選擇 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,),預設為 ‘uniform_average’

定義多個輸出分數的聚合方式。類陣列值定義用於平均分數的權重。

‘raw_values’

在多輸出輸入的情況下,返回完整的分數集。

‘uniform_average’

所有輸出的分數以均勻權重平均。

‘variance_weighted’

所有輸出的分數會被平均,並根據每個個別輸出的變異數加權。

force_finitebool,預設為 True

指示是否應將恆定資料導致的 NaN-Inf 分數替換為實數的旗標(如果預測完美,則為 1.0,否則為 0.0)。預設值為 True,這是一個方便的超參數搜尋程序(例如,網格搜尋交叉驗證)設定。

在 1.1 版中新增。

返回:
score浮點數或浮點數的 ndarray

解釋變異數,如果 ‘multioutput’ 為 ‘raw_values’,則為 ndarray。

另請參閱

r2_score

相似的指標,但會考慮預測中的系統性偏移。

注意

這不是一個對稱函數。

範例

>>> from sklearn.metrics import explained_variance_score
>>> y_true = [3, -0.5, 2, 7]
>>> y_pred = [2.5, 0.0, 2, 8]
>>> explained_variance_score(y_true, y_pred)
0.957...
>>> y_true = [[0.5, 1], [-1, 1], [7, -6]]
>>> y_pred = [[0, 2], [-1, 2], [8, -5]]
>>> explained_variance_score(y_true, y_pred, multioutput='uniform_average')
0.983...
>>> y_true = [-2, -2, -2]
>>> y_pred = [-2, -2, -2]
>>> explained_variance_score(y_true, y_pred)
1.0
>>> explained_variance_score(y_true, y_pred, force_finite=False)
nan
>>> y_true = [-2, -2, -2]
>>> y_pred = [-2, -2, -2 + 1e-8]
>>> explained_variance_score(y_true, y_pred)
0.0
>>> explained_variance_score(y_true, y_pred, force_finite=False)
-inf