在机器学习领域,评估预测模型的性能是非常重要的一环。解释方差回归评分函数是一种衡量模型预测准确性的工具。它通过比较模型预测值与实际值之间的方差,来评估模型的解释能力。最佳可能的评分是1.0,数值越低表示模型的预测性能越差。
在特殊情况下,如果实际值y_true
是常数,那么解释方差评分将不是有限值:它可能是NaN(完美预测)或-Inf(不完美的预测)。为了防止这些非有限值影响更高层次的实验,比如网格搜索交叉验证,这些情况默认会被替换为1.0(完美预测)或0.0(不完美预测)。如果设置force_finite
为False,评分将回退到原始的R^2定义。
解释方差评分与R^2评分相似,但有一个显著的区别是它不考虑预测中的系统性偏差。通常情况下,R^2评分更受青睐。
参数说明:
y_true: array-like of shape (n_samples,) or (n_samples, n_outputs)
实际的目标值。
y_pred: array-like of shape (n_samples,) or (n_samples, n_outputs)
预测的目标值。
sample_weight: array-like of shape (n_samples,), default=None
样本权重。
multioutput: {'raw_values', 'uniform_average', 'variance_weighted'} or array-like of shape (n_outputs,), default='uniform_average'
定义多输出评分的聚合方式。
force_finite: bool, default=True
如果设置为True,将替换由于数据为常数导致的NaN和-Inf评分。
返回值:
score: float or ndarray of floats
解释方差评分,或者是ndarray,如果'multioutput'设置为'raw_values'。
需要注意的是,这不是一个对称函数。以下是一些使用示例:
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