当前位置:   article > 正文

27 种确定性预测评估指标(Python实现)_python 误差百分比

python 误差百分比

在时间序列预测中,评价指标的多样性为模型性能的评估带来多角度的参考意义。该篇推文列举了当前已知的27种确定性预测评估指标及其Python的实现,其中Python的评估指标函数实现基于numpy库(调用方法:import numpy as np)。

01 误差

  1. def _error(actual: np.ndarray, predicted: np.ndarray):
  2.     """ Simple error """
  3.     return actual - predicted

02 误差百分比

  1. def _percentage_error(actual: np.ndarray, predicted: np.ndarray):
  2.     """ Percentage error """
  3.     return (actual - predicted) / actual

03 均方误差 MSE

  1. def mse(actual: np.ndarray, predicted: np.ndarray):
  2.     """ Mean Squared Error """
  3.     return np.mean(np.square(_error(actual, predicted)))

04 均方根误差 RMSE

  1. def rmse(actual: np.ndarray, predicted: np.ndarray):
  2.     """ Root Mean Squared Error """
  3.     return np.sqrt(mse(actual, predicted))

05 标准化均方根误差 NRMSE

  1. def nrmse(actual: np.ndarray, predicted: np.ndarray):
  2.     """ Normalized Root Mean Squared Error """
  3.     return rmse(actual, predicted) / (actual.max() - actual.min())

06 平均误差 ME

  1. def me(actual: np.ndarray, predicted: np.ndarray):
  2.     """ Mean Error """
  3.     return np.mean(_error(actual, predicted))

07 平均绝对误差 MAE

  1. def mae(actual: np.ndarray, predicted: np.ndarray):
  2.     """ Mean Absolute Error """
  3.     return np.mean(np.abs(_error(actual, predicted)))

08 中位数绝对误差 MedAE

  1. def mdae(actual: np.ndarray, predicted: np.ndarray):
  2.     """ Median Absolute Error """
  3.     return np.median(np.abs(_error(actual, predicted)))

09 平均百分比误差 MPE

  1. def mpe(actual: np.ndarray, predicted: np.ndarray):
  2.     """ Mean Percentage Error """
  3.     return np.mean(_percentage_error(actual, predicted))

10 平均绝对百分比误差 MAPE

  1. def mape(actual: np.ndarray, predicted: np.ndarray):
  2.     """
  3.     Mean Absolute Percentage Error
  4.     Properties:
  5.         + Easy to interpret
  6.         + Scale independent
  7.         - Biased, not symmetric
  8.         - Undefined when actual[t] == 0
  9.     Note: result is NOT multiplied by 100
  10.     """
  11.     return np.mean(np.abs(_percentage_error(actual, predicted)))

11 中位数绝对误差百分比 MedAPE

  1. def mdape(actual: np.ndarray, predicted: np.ndarray):
  2.     """
  3.     Median Absolute Percentage Error
  4.     Note: result is NOT multiplied by 100
  5.     """
  6.     return np.median(np.abs(_percentage_error(actual, predicted)))

12 对称平均绝对误差百分比 SMAPE

  1. def smape(actual: np.ndarray, predicted: np.ndarray):
  2.     """
  3.     Symmetric Mean Absolute Percentage Error
  4.     Note: result is NOT multiplied by 100
  5.     """
  6.     return np.mean(2.0 * np.abs(actual - predicted) / ((np.abs(actual) + np.abs(predicted)) + EPSILON))

13 对称中位数绝对误差百分比 SMDAPE

  1. def smdape(actual: np.ndarray, predicted: np.ndarray):
  2.     """
  3.     Symmetric Median Absolute Percentage Error
  4.     Note: result is NOT multiplied by 100
  5.     """
  6.     return np.median(2.0 * np.abs(actual - predicted) / (np.abs(actual) + np.abs(predicted)))

14 平均反正切绝对百分比误差 MAAPE

  1. def maape(actual: np.ndarray, predicted: np.ndarray):
  2.     """
  3.     Mean Arctangent Absolute Percentage Error
  4.     Note: result is NOT multiplied by 100
  5.     """
  6.     return np.mean(np.arctan(np.abs((actual - predicted) / actual))

15 平均绝对比例误差 MASE

  1. def mase(actual: np.ndarray, predicted: np.ndarray, seasonality: int = 1):
  2.     """
  3.     Mean Absolute Scaled Error
  4.     Baseline (benchmark) is computed with naive forecasting (shifted by @seasonality)
  5.     """
  6.     return mae(actual, predicted) / mae(actual[seasonality:], _naive_forecasting(actual, seasonality))

16 标准化绝对误差 NAE

  1. def std_ae(actual: np.ndarray, predicted: np.ndarray):
  2.     """ Normalized Absolute Error """
  3.     __mae = mae(actual, predicted)
  4.     return np.sqrt(np.sum(np.square(_error(actual, predicted) - __mae))/(len(actual) - 1))

17 标准化绝对百分比误差 NAPE

  1. def std_ape(actual: np.ndarray, predicted: np.ndarray):
  2.     """ Normalized Absolute Percentage Error """
  3.     __mape = mape(actual, predicted)
  4.     return np.sqrt(np.sum(np.square(_percentage_error(actual, predicted) - __mape))/(len(actual) - 1))

18 均方根误差百分比 RMSPE

  1. def rmspe(actual: np.ndarray, predicted: np.ndarray):
  2.     """
  3.     Root Mean Squared Percentage Error
  4.     Note: result is NOT multiplied by 100
  5.     """
  6.     return np.sqrt(np.mean(np.square(_percentage_error(actual, predicted))))

19 中位数方根误差百分比 RMedSPE

  1. def rmdspe(actual: np.ndarray, predicted: np.ndarray):
  2.     """
  3.     Root Median Squared Percentage Error
  4.     Note: result is NOT multiplied by 100
  5.     """
  6.     return np.sqrt(np.median(np.square(_percentage_error(actual, predicted))))

20 均方根比例误差 RMSSE

  1. def rmsse(actual: np.ndarray, predicted: np.ndarray, seasonality: int = 1):
  2.     """ Root Mean Squared Scaled Error """
  3.     q = np.abs(_error(actual, predicted)) / mae(actual[seasonality:], _naive_forecasting(actual, seasonality))
  4.     return np.sqrt(np.mean(np.square(q)))

21 积分标准方根误差 INRSE

  1. def inrse(actual: np.ndarray, predicted: np.ndarray):
  2.     """ Integral Normalized Root Squared Error """
  3.     return np.sqrt(np.sum(np.square(_error(actual, predicted))) / np.sum(np.square(actual - np.mean(actual))))

22 相对方根误差 RRSE

  1. def rrse(actual: np.ndarray, predicted: np.ndarray):
  2.     """ Root Relative Squared Error """
  3.     return np.sqrt(np.sum(np.square(actual - predicted)) / np.sum(np.square(actual - np.mean(actual))))

23 平均相对误差 MRE

  1. def mre(actual: np.ndarray, predicted: np.ndarray, benchmark: np.ndarray = None):
  2.     """ Mean Relative Error """
  3.     return np.mean(_relative_error(actual, predicted, benchmark))

24 相对绝对值误差 RAE

  1. def rae(actual: np.ndarray, predicted: np.ndarray):
  2.     """ Relative Absolute Error (aka Approximation Error) """
  3.     return np.sum(np.abs(actual - predicted)) / (np.sum(np.abs(actual - np.mean(actual))) + EPSILON)

25 平均相对绝对值误差 MRAE

  1. def mrae(actual: np.ndarray, predicted: np.ndarray, benchmark: np.ndarray = None):
  2.     """ Mean Relative Absolute Error """
  3.     return np.mean(np.abs(_relative_error(actual, predicted, benchmark)))

26 中位数相对绝对值误差 MedAE

  1. def mdrae(actual: np.ndarray, predicted: np.ndarray, benchmark: np.ndarray = None):
  2.     """ Median Relative Absolute Error """
  3.     return np.median(np.abs(_relative_error(actual, predicted, benchmark)))

27 平均方向精度 MDA

  1. def mda(actual: np.ndarray, predicted: np.ndarray):
  2.     """ Mean Directional Accuracy """
  3.     return np.mean((np.sign(actual[1:] - actual[:-1]) == np.sign(predicted[1:] - predicted[:-1])).astype(int))

以上就是本次分享的所有内容,如果你觉得文章还不错,欢迎关注公众号:Python编程学习圈,每日干货分享,发送“J”还可领取大量学习资料,内容覆盖Python电子书、教程、数据库编程、Django,爬虫,云计算等等。或是前往编程学习网,了解更多编程技术知识。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/367778
推荐阅读
相关标签
  

闽ICP备14008679号