sklearn库regression metrics回归问题评价准则及API使用

在这里插入图片描述sklearn.metrics模块用一些损失函数、得分函数和效用函数度量回归问题的性能,这些函数有的可以处理多输出的情况:如mean_squared_error, mean_absolute_error, explained_variance_score和r2_score.

可以处理多输出情况的函数有一个multioutput关键字参数,该参数指定了对每个目标输出(each individual targe)的得分或者损失取平均的方式.该参数默认取值是uniform_average,即对每个目标输出取平均.如果该参数取值为一个n_outputs维向量,则根据该向量对每个目标输出取加权平均.如果该参数取值raw_values,则返回n_outputs维向量表示未做改动的得分或者损失.

r2_score和explained_variance_score对于multioutput参数,有个额外的取值variance_weighted,取该值时,每个样本的得分根据相应目标变量的方差加权.这一设置可以对未缩放的方差进行全局定量分析.如果目标变量具有不同的量级,则得分更注重对高方差变量的解释.

explained_variance_score(y_true, y_pred, sample_weight=None, multioutput=’uniform_average’)
Returns:score(float or ndarray of floats)
解释方差回归得分函数

解释方差回归得分函数最好的情况得分是1,得分越低评估结果越差

y ^ \hat{y} y^是被估计的目标输出, y y y是相应的真实目标输出, V a r Var Var是方差,即标准差的平方,则解释方差可如下估计
e x p l a i n e d _ v a r i a n c e ( y , y ^ ) = 1 − V a r { y − y ^ } V a r { y } explained\_variance(y,\hat{y})=1-\frac{Var\{y-\hat{y}\}}{Var\{y\}} explained_variance(y,y^)=1Var{y}Var{yy^}

y_true:样本真实的取值.取值为n_samples或(n_samples,n_outputs)维的数组

y_pred:模型估计的目标值.取值为n_samples或(n_samples,n_outputs)维的数组

sample_weight:样本权重.取值为n_samples维的数组,可选参数

multioutput:指定多输出情况下得分的聚合方式.“默认取值’uniform_average’——各输出维度得分的平均”;“‘raw_values’——分别返回各维度得分”;“‘variance-weighted’——各输出维度得分的加权平均,权重与各输出维度的方差相关”;‘n_outputs维数组,按该数组对各维度得分取加权平均’

score:解释方差;如果参数multioutput取值’raw_values’,返回值是数组.

from sklearn.metrics import explained_variance_score
y_true_s = [3, -0.5, 2, 7]
y_pred_s = [2.5, 0.0, 2, 8]
explained_variance_score(y_true_s, y_pred_s)
#Output:
#0.9571734475374732

y_true_m = [[0.5, 1], [-1, 1], [7, -6]]
y_pred_m = [[0, 2], [-1, 2], [8, -5]]
explained_variance_score(y_true_m, y_pred_m, multioutput='uniform_average')
#Output:
#0.9838709677419355
mean_absolute_error(y_true, y_pred, sample_weight=None, multioutput=’uniform_average’)
Returns:loss(float or ndarray of floats)
平均绝对误差回归损失

MAE的输出是非负浮点数,最优情况取值为0.0.

y ^ i \hat{y}_i y^i是第 i i i个样本的预测值, y i y_i yi是相应的真实值,则 n s a m p l e s n_{samples} nsamples个样本的平均绝对误差(MAE)定义为
M A E ( y , y ^ ) = 1 n s a m p l e s ∑ i = 0 n s a m p l e s − 1 ∣ y i − y ^ i ∣ \displaystyle MAE(y,\hat{y})=\frac{1}{n_{samples}}\sum\limits_{i=0}^{\displaystyle n_{samples}-1}|y_i-\hat{y}_i| MAE(y,y^)=nsamples1i=0nsamples1yiy^i

y_true:样本真实的取值.取值为n_samples或(n_samples,n_outputs)维的数组

y_pred:模型估计的目标值.取值为n_samples或(n_samples,n_outputs)维的数组

sample_weight:样本权重.取值为n_samples维的数组,可选参数

multioutput:指定多输出情况下的聚合方式.“默认取值’uniform_average’——各输出维度MAE的平均”;“‘raw_values’——分别返回各输出维度MAE”;‘n_outputs维数组,按该数组对各输出维度MAE取加权平均’

loss:“默认取值’uniform_average’——各输出维度MAE的平均”;“‘raw_values’——分别返回各输出维度MAE”;‘n_outputs维数组,按该数组对各输出维度MAE取加权平均’.

from sklearn.metrics import mean_absolute_error
y_true_s = [3, -0.5, 2, 7]
y_pred_s = [2.5, 0.0, 2, 8]
mean_absolute_error(y_true_s, y_pred_s)
#Output:
#0.5

y_true_m = [[0.5, 1], [-1, 1], [7, -6]]
y_pred_m = [[0, 2], [-1, 2], [8, -5]]
"默认取值'uniform_average',各维度MAE的平均:",mean_absolute_error(y_true_m, y_pred_m),\
"'raw_values',分别返回各维度MAE:",mean_absolute_error(y_true_m, y_pred_m, multioutput='raw_values'),\
"n_outputs维数组,按该数组对各维度MAE取加权平均:",mean_absolute_error(y_true_m, y_pred_m, multioutput=[0.3, 0.7])
#Output:
#("默认取值'uniform_average',各维度MAE的平均:",
# 0.75,
# "'raw_values',分别返回各维度MAE:",
# array([0.5, 1. ]),
# 'n_outputs维数组,按该数组对各维度MAE取加权平均:',
# 0.85)

mean_squared_error(y_true, y_pred, sample_weight=None, multioutput=’uniform_average’)
Returns:loss(float or ndarray of floats)
均方误差回归损失

MSE的输出是非负浮点数,最优情况取值为0.0,或与每个目标维度对应的相同维度数组

y ^ i \hat{y}_i y^i是第 i i i个样本的预测值, y i y_i yi是相应的真实值,则 n s a m p l e s n_{samples} nsamples个样本的均方误差(MSE)定义为
M S E ( y , y ^ ) = 1 n s a m p l e s ∑ i = 0 n s a m p l e s − 1 ( y i − y ^ i ) 2 \displaystyle MSE(y,\hat{y})=\frac{1}{n_{samples}}\sum\limits_{i=0}^{\displaystyle n_{samples}-1}(y_i-\hat{y}_i)^2 MSE(y,y^)=nsamples1i=0nsamples1(yiy^i)2

y_true:样本真实的取值.取值为n_samples或(n_samples,n_outputs)维的数组

y_pred:模型估计的目标值.取值为n_samples或(n_samples,n_outputs)维的数组

sample_weight:样本权重.取值为n_samples维的数组,可选参数

multioutput:指定多输出情况下的聚合方式.“默认取值’uniform_average’——各输出维度MSE的平均”;“‘raw_values’——分别返回各输出维度MSE”;‘n_outputs维数组,按该数组对各输出维度MSE取加权平均’

loss:“默认取值’uniform_average’——各输出维度MSE的平均”;“‘raw_values’——分别返回各输出维度MSE”;‘n_outputs维数组,按该数组对各输出维度MSE取加权平均’.

from sklearn.metrics import mean_squared_error
y_true_s = [3, -0.5, 2, 7]
y_pred_s = [2.5, 0.0, 2, 8]
mean_squared_error(y_true_s, y_pred_s)
#Output:
#0.375

y_true_m = [[0.5, 1],[-1, 1],[7, -6]]
y_pred_m = [[0, 2],[-1, 2],[8, -5]]
"默认取值'uniform_average',各维度MSE的平均:",mean_squared_error(y_true_m, y_pred_m),\
"'raw_values',分别返回各维度MSE:",mean_squared_error(y_true_m, y_pred_m, multioutput='raw_values'),\
"n_outputs维数组,按该数组对各维度MSE取加权平均:",mean_squared_error(y_true_m, y_pred_m, multioutput=[0.3, 0.7])
#Output:
#("默认取值'uniform_average',各维度MSE的平均:",
# 0.7083333333333334,
# "'raw_values',分别返回各维度MSE:",
# array([0.41666667, 1.        ]),
# 'n_outputs维数组,按该数组对各维度MSE取加权平均:',
# 0.825)
mean_squared_log_error(y_true, y_pred, sample_weight=None, multioutput=’uniform_average’)
Returns:loss(float or ndarray of floats)
均方对数误差回归损失

MSLE的输出是非负浮点数,最优情况取值为0.0,或与每个目标维度对应的相同维度数组

y ^ i \hat{y}_i y^i是第 i i i个样本的预测值, y i y_i yi是相应的真实值, l o g e ( x ) log_e(x) loge(x)表示 x x x的自然对数,则 n s a m p l e s n_{samples} nsamples个样本的均方对数误差(MSLE)定义为
M S L E ( y , y ^ ) = 1 n s a m p l e s ∑ i = 0 n s a m p l e s − 1 ( l o g e ( 1 + y i ) − l o g e ( 1 + y ^ i ) ) 2 \displaystyle MSLE(y,\hat{y})=\frac{1}{n_{samples}}\sum\limits_{i=0}^{\displaystyle n_{samples}-1} \Big(log_{e}(1+y_i)-log_{e}(1+\hat{y}_i)\Big)^2 MSLE(y,y^)=nsamples1i=0nsamples1(loge(1+yi)loge(1+y^i))2
这一评估准则用于目标呈指数增长的情况,如人口统计、商品在若干年内的平均销售情况等.注意,这一评估准则对under-predicted估计的惩罚更严格(相比于over_predicted估计).

y_true:样本真实的取值.取值为n_samples或(n_samples,n_outputs)维的数组

y_pred:模型估计的目标值.取值为n_samples或(n_samples,n_outputs)维的数组

sample_weight:样本权重.取值为n_samples维的数组,可选参数

multioutput:指定多输出情况下的聚合方式.“默认取值’uniform_average’——各输出维度MSLE的平均”;“‘raw_values’——分别返回各输出维度MSLE”;‘n_outputs维数组,按该数组对各输出维度MSLE取加权平均’

loss:“默认取值’uniform_average’——各输出维度MSLE的平均”;“‘raw_values’——分别返回各输出维度MSLE”;‘n_outputs维数组,按该数组对各输出维度MSLE取加权平均’.

from sklearn.metrics import mean_squared_log_error
y_true_s = [3, 5, 2.5, 7]
y_pred_s = [2.5, 5, 4, 8]
mean_squared_log_error(y_true_s, y_pred_s)
#Output:
#0.03973012298459379

y_true_m = [[0.5, 1], [1, 2], [7, 6]]
y_pred_m = [[0.5, 2], [1, 2.5], [8, 8]]
"默认取值'uniform_average',各维度MSLE的平均:",mean_squared_log_error(y_true_m, y_pred_m),\
"'raw_values',分别返回各维度MSLE:",mean_squared_log_error(y_true_m, y_pred_m, multioutput='raw_values'),\
"n_outputs维数组,按该数组对各维度MSLE取加权平均:",mean_squared_log_error(y_true_m, y_pred_m, multioutput=[0.3, 0.7])
#Output:
#("默认取值'uniform_average',各维度MSLE的平均:",
# 0.044199361889160536,
# "'raw_values',分别返回各维度MSLE:",
# array([0.00462428, 0.08377444]),
# 'n_outputs维数组,按该数组对各维度MSLE取加权平均:',
# 0.060029394179700345)
median_absolute_error(y_true, y_pred)
Returns:loss(float)
中位数绝对误差回归损失

中位数绝对误差回归损失对离群点是稳健的,取值是所有样本点的标签值与预测值差的绝对值取中位数

y ^ i \hat{y}_i y^i是第 i i i个样本的预测值, y i y_i yi是相应的真实值, l o g e ( x ) log_e(x) loge(x)表示 x x x的自然对数,则 n s a m p l e s n_{samples} nsamples个样本的中位数绝对误差估计(MedAE)定义为
M e d A E ( y , y ^ ) = m e d i a n ( ∣ y 1 − y ^ 1 ∣ , . . . , ∣ y n − y ^ n ∣ ) \displaystyle MedAE(y,\hat{y})=median(|y_1-\hat{y}_1|,...,|y_n-\hat{y}_n|) MedAE(y,y^)=median(y1y^1,...,yny^n)
中位数绝对误差不支持多输出的情况.

y_true:样本真实的取值.取值为n_samples维的数组

y_pred:模型估计的目标值.取值为n_samples维的数组

loss:正浮点数,最优情况取值为0.0.

from sklearn.metrics import median_absolute_error
y_true = [3, -0.5, 2, 7]
y_pred = [2.5, 0.0, 2, 8]
median_absolute_error(y_true, y_pred)
#Outpue:
#0.5
r2_score(y_true, y_pred, sample_weight=None, multioutput=’uniform_average’)
Returns:z(float or ndarray of floats)
$R^2$(判定系数)回归得分函数

R 2 R^2 R2(判定系数)回归得分函数度量了模型预测新样本的可能性,最优情况下取值1.0,较差情况可能取负值(因为模型可能很糟糕).常数模型给出的预测结果总是 y y y的均值,所以 R 2 = 0 R^2=0 R2=0

y ^ i \hat{y}_i y^i是第 i i i个样本的预测值, y i y_i yi是相应的真实值,则 n s a m p l e s n_{samples} nsamples个样本的 R 2 R^2 R2得分估计定义为
R 2 ( y , y ^ ) = 1 − ∑ i = 0 n s a m p l e s − 1 ( y i − y ^ i ) 2 ∑ i = 0 n s a m p l e s − 1 ( y i − y ˉ ) 2 \displaystyle R^2(y,\hat{y})=1-\frac{\sum\limits_{i=0}^{\displaystyle n_{samples}-1}(y_i-\hat{y}_i)^2}{\sum\limits_{i=0}^{\displaystyle n_{samples}-1}(y_i-\bar{y})^2} R2(y,y^)=1i=0nsamples1(yiyˉ)2i=0nsamples1(yiy^i)2
其中, y ˉ = 1 n s a m p l e s ∑ i = 0 n s a m p l e s − 1 y i \displaystyle\bar{y}=\frac{1}{n_{samples}}\sum\limits_{i=0}^{\displaystyle n_{samples}-1}y_i yˉ=nsamples1i=0nsamples1yi

y_true:样本真实的取值.取值为n_samples或(n_samples,n_outputs)维的数组

y_pred:模型估计的目标值.取值为n_samples或(n_samples,n_outputs)维的数组

sample_weight:样本权重.取值为n_samples维的数组,可选参数

multioutput:指定多输出情况下的聚合方式.“默认取值’uniform_average’——各输出维度 R 2 R^2 R2得分的平均”;“‘raw_values’——分别返回各输出维度 R 2 R^2 R2得分”;“‘variance-weighted’——按各输出维度的方差加权的 R 2 R^2 R2得分”;‘n_outputs维数组,按该数组对各输出维度 R 2 R^2 R2得分取加权平均’

z: R 2 R^2 R2得分;如果参数multioutput取值’raw_values’,返回值是数组.

from sklearn.metrics import r2_score
y_true_s = [3, -0.5, 2, 7]
y_pred_s = [2.5, 0.0, 2, 8]
r2_score(y_true_s, y_pred_s)  
#Output:
#0.9486081370449679

y_true_m = [[0.5, 1], [-1, 1], [7, -6]]
y_pred_m = [[0, 2], [-1, 2], [8, -5]]
"'variance-weighted'按各输出维度的方差加权的R^2得分:",r2_score(y_true_m, y_pred_m, multioutput='variance_weighted'),\
"默认取值'uniform_average',各维度R^2得分的平均:",r2_score(y_true_m, y_pred_m, multioutput='uniform_average'),\
"'raw_values',分别返回各维度R^2得分:",r2_score(y_true_m, y_pred_m, multioutput='raw_values'),\
"n_outputs维数组,按该数组对各维度R^2得分取加权平均:",r2_score(y_true_m, y_pred_m, multioutput=[0.3, 0.7])
#Output:
#("'variance-weighted'按各输出维度的方差加权的R^2得分:",
# 0.9382566585956417,
# "默认取值'uniform_average',各维度R^2得分的平均:",
# 0.9368005266622779,
# "'raw_values',分别返回各维度R^2得分:",
# array([0.96543779, 0.90816327]),
# 'n_outputs维数组,按该数组对各维度R^2得分取加权平均:',
# 0.9253456221198156)

扫码关注公众号:瑞行AI,欢迎交流AI算法、数据分析等技术,提供技术方案咨询和就业指导服务!
在这里插入图片描述

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值