Python编译SMAE和MAPE
时间: 2023-11-05 15:09:04 浏览: 67
SMAE(Symmetric Mean Absolute Error)和 MAPE(Mean Absolute Percentage Error)都是常用的衡量预测模型误差的指标。下面是Python计算这两个指标的代码示例:
```python
import numpy as np
def smae(y_true, y_pred):
return np.mean(np.abs(y_true - y_pred) / (np.abs(y_true) + np.abs(y_pred)))
def mape(y_true, y_pred):
return np.mean(np.abs((y_true - y_pred) / y_true))
```
其中,`y_true`为真实值,`y_pred`为预测值。这两个函数都使用了numpy库中的函数进行计算。可以通过调用这两个函数来计算对应的指标。
相关问题
Python计算SMAE和MAPE函数库
以下是Python计算SMAE和MAPE的函数库:
```python
import numpy as np
def smape(y_true, y_pred):
"""
计算Symmetric Mean Absolute Percentage Error (SMAPE)
:param y_true: 实际值
:param y_pred: 预测值
:return: SMAPE分数
"""
num = np.abs(np.array(y_true) - np.array(y_pred))
den = np.array(y_true) + np.array(y_pred)
return np.mean(2.0 * num / (den + 1e-7)) * 100.0
def mape(y_true, y_pred):
"""
计算Mean Absolute Percentage Error (MAPE)
:param y_true: 实际值
:param y_pred: 预测值
:return: MAPE分数
"""
num = np.abs(np.array(y_true) - np.array(y_pred))
den = np.array(y_true)
return np.mean(num / (den + 1e-7)) * 100.0
```
其中,`y_true`和`y_pred`分别是实际值和预测值,可以是列表、数组等可迭代对象。函数返回的是SMAPE和MAPE的分数,均为百分比形式。需要注意的是,由于分母中可能存在0值,因此在计算过程中加上了一个很小的数`1e-7`来避免除0错误。
Python代码计算SMAE和MAPE
下面是Python代码计算SMAE和MAPE的例子:
```python
import numpy as np
def smae(y_true, y_pred):
"""
计算SMAE
"""
return np.mean(np.abs(y_true - y_pred) / (np.abs(y_true) + np.abs(y_pred)))
def mape(y_true, y_pred):
"""
计算MAPE
"""
return np.mean(np.abs((y_true - y_pred) / y_true))
# 示例
y_true = np.array([3, 0, 2, 7, 1])
y_pred = np.array([4, 2, 2, 8, 0])
smae = smae(y_true, y_pred)
mape = mape(y_true, y_pred)
print("SMAE:", smae)
print("MAPE:", mape)
```
输出结果:
```
SMAE: 0.26666666666666666
MAPE: 0.37333333333333335
```
其中,`y_true`表示真实值,`y_pred`表示预测值。`smae`为计算出的SMAE值,`mape`为计算出的MAPE值。
阅读全文