python实现masked_mape
时间: 2024-02-01 18:03:30 浏览: 24
`masked_mape`是一种评估预测误差的指标,可以用来评估回归模型的性能。它的计算公式如下:
$$\text{masked_mape} = \frac{100\%}{n} \sum_{i=1}^n \frac{|y_i - \hat{y}_i|}{\max(|y_i|, \epsilon)}\cdot I_{y_i \neq 0}$$
其中,$y_i$表示真实值,$\hat{y}_i$表示预测值,$n$表示样本数量,$\epsilon$是一个非常小的数,用于避免分母为0,$I_{y_i \neq 0}$是一个指示函数,当$y_i \neq 0$时取值为1,否则取值为0。
下面是一个Python实现的代码:
```python
import numpy as np
def masked_mape(y_true, y_pred, epsilon=1e-10):
mask = np.not_equal(y_true, 0)
masked_error = np.abs((y_true - y_pred) / np.maximum(np.abs(y_true), epsilon))
masked_error = np.multiply(masked_error, mask)
return np.mean(masked_error) * 100
```
这个函数接受两个参数:真实值`y_true`和预测值`y_pred`,并且可以指定一个很小的数`epsilon`。它会先根据真实值是否为0生成一个掩码,然后计算每个样本的误差,并在计算误差之前将掩码应用到真实值和预测值中。最后,它将所有样本的误差求平均并乘以100,以得到百分比误差。