Python:编写一个函数来快速计算MAPE

2024-06-16 16:01:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我准备了一个如下所示的数据框:

+------------+--------+-----------+
| Date       | Actual | Predicted |
+------------+--------+-----------+
| 2020-01-01 | XX     | XX        |
+------------+--------+-----------+
| 2020-01-02 | XX     | XX        |
+------------+--------+-----------+
| 2020-01-03 | XX     | XX        |
+------------+--------+-----------+
| 2020-01-04 | XX     | XX        |
+------------+--------+-----------+
| 2020-01-05 | XX     | XX        |
+------------+--------+-----------+
| 2020-01-06 | XX     | XX        |
+------------+--------+-----------+
| ...        | ...    | ...       |
+------------+--------+-----------+

MAPE=[∑(|实际-预测|/实际)]/*100/N
(此处还提供了公式:https://ibf.org/knowledge/glossary/mape-mean-absolute-percentage-error-174

N是行数

现在我正在做一项非常手工的工作,通过添加一个额外的列来计算|实际-预测|,另一个列来计算(|实际-预测|/Actual),然后将该列相加,乘以100,然后除以行数

我想知道是否有一种更优雅的方法可以帮助我实现MAPE计算过程的自动化

我设想输入是dataframe,两个列名“actual”和“predicted”,输出是Computed MAPE

非常感谢你的帮助


Tags: 数据httpsorgdatemean公式xxknowledge
1条回答
网友
1楼 · 发布于 2024-06-16 16:01:47

你确实会这样做。但是,您可以将您的业务链:

df['MAPE'] = ((df.Actual-df.Predicted).abs()
                 .div(df.Actual)
                 .cumsum()
                 /np.arange(1,len(df)+1)
             )

测试数据和输出:

   Actual  Predicted      MAPE
0      10          5  0.500000
1      11          6  0.477273
2      12          7  0.457071
3      13          8  0.438957
4      14          9  0.422594

相关问题 更多 >