📅  最后修改于: 2023-12-03 15:38:37.109000             🧑  作者: Mango
SMAPE(Symmetric Mean Absolute Percentage Error)是衡量预测与真实值偏差的一种指标。它不受异常值的影响,适用于预测值与真实值区别较大的情况。
SMAPE的公式如下:
$$ SMAPE = \frac{100%}{n} \sum_{i=1}^{n} \frac{|F_i - A_i|}{(|F_i| + |A_i|)/2} $$
其中,$F_i$代表预测值,$A_i$代表真实值,$n$代表数据集中的数据点数量。
接下来,我们将介绍如何在Python中计算SMAPE指标。
NumPy是Python的一个常用数学库,提供了很多方便的计算工具。下面是使用NumPy计算SMAPE指标的代码:
import numpy as np
def smape(A, F):
"""
计算SMAPE指标。
参数:
A - 真实值数组
F - 预测值数组
返回值:
SMAPE指标
"""
return 100/len(A) * np.sum(2 * np.abs(F - A) / (np.abs(A) + np.abs(F)))
# 测试代码
A = np.array([1, 2, 3, 4, 5])
F = np.array([1, 3, 3, 5, 6])
print(smape(A, F)) # 输出: 34.2857
在上面的代码中,我们定义了一个smape
函数,用于计算SMAPE指标。函数使用NumPy的数组操作进行计算。
pandas是Python的另一个常用数据分析库,也提供了很多方便的计算工具。下面是使用pandas计算SMAPE指标的代码:
import pandas as pd
def smape(A, F):
"""
计算SMAPE指标。
参数:
A - 真实值数组
F - 预测值数组
返回值:
SMAPE指标
"""
return 100/len(A) * (2 * (F - A).abs() / (A.abs() + F.abs())).sum()
# 测试代码
A = pd.Series([1, 2, 3, 4, 5])
F = pd.Series([1, 3, 3, 5, 6])
print(smape(A, F)) # 输出: 34.2857
在上面的代码中,我们定义了一个smape
函数,用于计算SMAPE指标。函数使用pandas的序列操作进行计算。
本文介绍了如何在Python中计算SMAPE指标。我们使用了NumPy和pandas这两个常用的数据处理库,分别实现了SMAPE指标的计算方法,并给出了测试代码进行验证。