首先,SMAPE(Symmetric Mean Absolute Percentage Error)是一种衡量预测模型误差的指标。它可以测量预测值误差的百分比,因此它非常适合于评估时间序列预测模型。下面是使用Python计算SMAPE的步骤:
步骤一:导入必要的库
在使用Python计算SMAPE之前,我们需要确保我们安装并导入了必要的库。其中,numpy库和pandas库是必须的。
import numpy as np
import pandas as pd
步骤二:定义函数
在Python中,定义一个函数来计算SMAPE非常容易。以下是计算SMAPE的函数:
def smape(actual, predicted):
"""
计算SMAPE(Symmetric Mean Absolute Percentage Error)。
参数:
actual: 实际值
predicted: 预测值
返回:
SMAPE值
"""
dividend = np.abs(np.array(actual) - np.array(predicted))
denominator = np.array(actual) + np.array(predicted)
return 2 * np.mean(np.divide(dividend, denominator, out=np.zeros_like(dividend), where=denominator!=0))
这个函数接受两个参数,一个是实际值,另一个是预测值。它将首先计算真实值与预测值之间的差异,并将其除以真实值和预测值的总和。然后返回该值的平均值,乘以2。
步骤三:测试函数
为了测试我们的SMAPE函数,我们需要创建一些测试用例。以下是两个示例:
# 测试用例1
actual = [1, 2, 3, 4, 5]
predicted = [1, 2, 3, 4, 5]
print("SMAPE值:", smape(actual, predicted))
# 测试用例2
actual = [1, 2, 3, 4, 5]
predicted = [2, 3, 4, 5, 6]
print("SMAPE值:", smape(actual, predicted))
在测试用例1中,实际值和预测值完全相同。因此,预测误差为0,SMAPE值为0。在测试用例2中,我们添加了常数2到所有预测值中。因此,预测误差为20%,SMAPE值为20。
请注意,SMAPE值的范围是0到200,值越低表示模型预测效果越好。
这就是用Python计算SMAPE的完整攻略,其中包含了两个示例说明。