对称的平均绝对误差(Symmetric Mean Absolute Error, SMAPE)是一种衡量回归模型预测精度的指标,它考虑了预测值和实际值的相对大小,因此对异常值不如传统的平均绝对误差(MAE)敏感。
SMAPE的计算公式如下: [ \text{SMAPE} = \frac{1}{n} \sum_{i=1}^{n} \frac{|F_i - A_i|}{(|F_i| + |A_i|)/2} \times 100% ] 其中,( F_i ) 是预测值,( A_i ) 是实际值,( n ) 是样本数量。
SMAPE是一种相对误差度量,适用于回归模型的评估。
以下是在Python中计算SMAPE的示例代码:
def smape(actual, forecast):
"""
计算对称的平均绝对误差(SMAPE)
参数:
actual (list or numpy array): 实际值
forecast (list or numpy array): 预测值
返回:
float: SMAPE值
"""
actual, forecast = np.array(actual), np.array(forecast)
return 100 / len(actual) * np.sum(2 * np.abs(forecast - actual) / (np.abs(actual) + np.abs(forecast)))
# 示例数据
actual_values = [10, 20, 30, 40, 50]
forecast_values = [12, 18, 28, 42, 48]
# 计算SMAPE
smape_value = smape(actual_values, forecast_values)
print(f"SMAPE: {smape_value:.2f}%")
def smape(actual, forecast):
actual, forecast = np.array(actual), np.array(forecast)
epsilon = 1e-10 # 添加一个小的常数以避免除零错误
return 100 / len(actual) * np.sum(2 * np.abs(forecast - actual) / (np.abs(actual) + np.abs(forecast) + epsilon))
通过上述方法,可以有效地计算对称的平均绝对误差,并处理可能遇到的问题。
领取专属 10元无门槛券
手把手带您无忧上云