📜  如何在Python中计算 SMAPE?(1)

📅  最后修改于: 2023-12-03 15:38:37.109000             🧑  作者: Mango

如何在Python中计算SMAPE?

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计算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计算SMAPE

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指标的计算方法,并给出了测试代码进行验证。