【scikit-learn】sklearn.metrics.mean_absolute_percentage_error() 函数:回归模型评估指标 平均绝对百分比误差(MAPE)

sklearn.metrics.mean_absolute_percentage_error

mean_absolute_percentage_error(MAPE,平均绝对百分比误差)是 sklearn.metrics 提供的一个 回归模型评估指标,用于计算 预测值相对于真实值的平均绝对百分比误差


1. mean_absolute_percentage_error 计算公式

M A P E = 1 n ∑ i = 1 n ∣ y i − y ^ i y i ∣ × 100 % MAPE = \frac{1}{n} \sum_{i=1}^{n} \left| \frac{y_i - \hat{y}_i}{y_i} \right| \times 100\% MAPE=n1i=1n yiyiy^i ×100%
其中:

  • n n n 是样本数
  • y i y_i yi 是真实值
  • y ^ i \hat{y}_i y^i 是预测值
  • ∣ y i − y ^ i y i ∣ \left| \frac{y_i - \hat{y}_i}{y_i} \right| yiyiy^i 是预测误差的相对百分比

解释

  • MAPE 衡量误差相对于真实值的比例,以百分比形式表示
  • MAPE 越小,表示模型预测误差越小
  • 如果某个 y i y_i yi 真实值为 0,则 MAPE 无法计算,因此适用于所有 y i ≠ 0 y_i \neq 0 yi=0 的情况

2. mean_absolute_percentage_error 代码示例

from sklearn.metrics import mean_absolute_percentage_error

# 真实值和预测值
y_true = [100, 200, 300, 400]
y_pred = [90, 210, 310, 390]

# 计算 MAPE
mape = mean_absolute_percentage_error(y_true, y_pred)
print(f"MAPE: {mape:.2%}")

输出

MAPE: 3.75%

解释

  • 计算每个样本的误差:
    • ∣ 100 − 90 100 ∣ = 0.10 \left| \frac{100 - 90}{100} \right| = 0.10 10010090 =0.10(10%)
    • ∣ 200 − 210 200 ∣ = 0.05 \left| \frac{200 - 210}{200} \right| = 0.05 200200210 =0.05(5%)
    • ∣ 300 − 310 300 ∣ = 0.0333 \left| \frac{300 - 310}{300} \right| = 0.0333 300300310 =0.0333(3.33%)
    • ∣ 400 − 390 400 ∣ = 0.025 \left| \frac{400 - 390}{400} \right| = 0.025 400400390 =0.025(2.5%)
  • 计算平均值:
    M A P E = 10 % + 5 % + 3.33 % + 2.5 % 4 = 3.75 % MAPE = \frac{10\% + 5\% + 3.33\% + 2.5\%}{4} = 3.75\% MAPE=410%+5%+3.33%+2.5%=3.75%

3. mean_absolute_percentage_error 的参数

mean_absolute_percentage_error(y_true, y_pred, sample_weight=None)
参数说明
y_true真实值
y_pred预测值
sample_weight样本权重

4. mean_absolute_percentage_error 适用场景

  • 回归任务(如销售预测、市场趋势预测)
  • 衡量预测误差的相对大小(适用于不同尺度的变量)
  • 适用于所有真实值 y i ≠ 0 y_i \neq 0 yi=0,否则可能会导致计算问题

5. mean_absolute_percentage_error vs. 其他误差指标

指标计算公式适用场景
mean_absolute_error(MAE) 1 n ∑ ∣ y i − y ^ i ∣ \frac{1}{n} \sum |y_i - \hat{y}_i| n1yiy^i衡量误差的绝对大小,对离群值不敏感
mean_squared_error(MSE) 1 n ∑ ( y i − y ^ i ) 2 \frac{1}{n} \sum (y_i - \hat{y}_i)^2 n1(yiy^i)2强调较大误差,对离群值敏感
root_mean_squared_error(RMSE) M S E \sqrt{MSE} MSE 与 MSE 相似,但单位与目标变量相同
r2_score解释方差比例衡量模型的拟合程度
mean_absolute_percentage_error(MAPE) 1 n ∑ ∣ y i − y ^ i y i ∣ \frac{1}{n} \sum \left| \frac{y_i - \hat{y}_i}{y_i} \right| n1 yiyiy^i 衡量误差相对于真实值的比例,不适用于真实值接近 0 的情况

示例:

from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score

mae = mean_absolute_error(y_true, y_pred)
mse = mean_squared_error(y_true, y_pred)
rmse = mean_squared_error(y_true, y_pred, squared=False)
r2 = r2_score(y_true, y_pred)

print(f"MAE: {mae:.2f}")
print(f"MSE: {mse:.2f}")
print(f"RMSE: {rmse:.2f}")
print(f"R²: {r2:.2f}")

6. 结论

  • mean_absolute_percentage_error 计算 预测值相对于真实值的平均绝对百分比误差,适用于 回归任务
  • 适用于 衡量误差的相对大小,但 不适用于真实值可能为 0 的情况
  • 可与 MAE、MSE、RMSE、R² 结合使用,以更全面评估模型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

彬彬侠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值