explained_variance_score#
- sklearn.metrics.explained_variance_score(y_true, y_pred, *, sample_weight=None, multioutput='uniform_average', force_finite=True)[source]#
解释方差回归分数函数。
最佳得分可能为 1.0,值越低越差。
在
y_true为常数的特殊情况下,explained variance score 不是有限的:它要么是NaN(完美预测),要么是-Inf(不完美预测)。为了防止此类非有限数污染网格搜索交叉验证等更高级别的实验,默认情况下,这些情况分别替换为 1.0(完美预测)或 0.0(不完美预测)。如果将force_finite设置为False,则此分数将回退到原始 \(R^2\) 定义。注意
Explained Variance score 与
R^2 score相似,但前者不考虑预测中的系统偏移(例如线性模型中的截距,即不同的截距给出相同的 Explained Variance score)。通常应首选R^2 score。在用户指南中阅读更多内容。
- 参数:
- y_true形状为 (n_samples,) 或 (n_samples, n_outputs) 的类数组对象
真实(正确)的目标值。
- y_pred形状为 (n_samples,) 或 (n_samples, n_outputs) 的类数组对象
估计的目标值。
- sample_weightshape 为 (n_samples,) 的 array-like, default=None
样本权重。
- multioutput{‘raw_values’, ‘uniform_average’, ‘variance_weighted’} 或形状为 (n_outputs,) 的 array-like,默认为 ‘uniform_average’
定义多个输出分数的聚合方式。Array-like 值定义用于平均分数的权重。
- ‘raw_values’
在多输出输入的情况下返回一组完整的分数。
- ‘uniform_average’
所有输出的分数以均匀权重平均。
- ‘variance_weighted’
所有输出的分数都被平均,并按每个单独输出的方差加权。
- force_finitebool, default=True
标志,指示是否应将由常数数据导致的
NaN和-Inf分数替换为实数(如果预测完美则为1.0,否则为0.0)。默认为True,这是用于超参数搜索过程(例如网格搜索交叉验证)的便捷设置。版本 1.1 中新增。
- 返回:
- scorefloat 或 ndarray of floats
explained variance 或 ndarray(如果 ‘multioutput’ 为 ‘raw_values’)。
另请参阅
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