如何用Python计算SMAPE

yizhihongxing

首先,SMAPE (Symmetric Mean Absolute Percentage Error) 是一个用来度量预测值和实际值之间差异的衡量指标,它具有对称性,可以避免向上和向下预测偏差的影响。下面我会从以下几个方面详细讲解如何用Python计算SMAPE:

  1. SMAPE 的公式
  2. Python的代码实现

1. SMAPE的公式

SMAPE指标计算公式如下:
$$SMAPE = \frac{100\%}{n}\sum_{t=1}^{n}\frac{\left|F_t-A_t\right|}{\left|F_t\right|+\left|A_t\right|}\times 2$$

其中,$F_t$ 为模型预测值,$A_t$ 为实际值,$n$ 为总样本数。

2. Python的代码实现

Python实现SMAPE指标的代码如下:

def smape(pred, actual):
    """
    计算SMAPE指标
    pred: 预测值,格式为List或者numpy数组
    actual: 真实值,格式为List或者numpy数组
    """
    pred, actual = np.array(pred), np.array(actual)
    numerator = np.abs(pred-actual)
    denominator = np.abs(pred)+np.abs(actual)
    smape_val = 2*np.mean(np.divide(numerator, denominator, out=np.zeros_like(numerator), where=denominator!=0))
    return smape_val*100

其中,需要用到numpy库中的数组操作,具体实现逻辑为先将输入的预测值和真实值转化为numpy数组格式,然后采用numpy中的数组操作求得分子和分母,最后根据SMAPE的计算公式求得SMAPE指标的值。

下面给出两个计算SMAPE的例子:

示例1

假设预测值为[2, 3, 4, 5, 6], 真实值为[1, 2, 3, 4, 5],输入以下代码:

pred = [2, 3, 4, 5, 6]
actual = [1, 2, 3, 4, 5]
smape_val = smape(pred, actual)
print("SMAPE值为: {:.2f}%".format(smape_val))

输出:

SMAPE值为: 22.38%

示例2

假设预测值为[10, 20, 30, 40, 50], 真实值为[5, 15, 25, 35, 45],输入以下代码:

pred = [10, 20, 30, 40, 50]
actual = [5, 15, 25, 35, 45]
smape_val = smape(pred, actual)
print("SMAPE值为: {:.2f}%".format(smape_val))

输出:

SMAPE值为: 27.14%

以上两个示例说明了计算SMAPE指标的过程,可以看出SMAPE的值与预测值和实际值之间的偏差大小有关,值越大说明两者之间的差异越大。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何用Python计算SMAPE - Python技术站

(0)
上一篇 2023年3月25日
下一篇 2023年3月25日

相关文章

  • Python文件及目录处理的方法

    若要处理Python中的文件及目录,可以使用Python内置的os模块提供的函数。下面详细讲解Python文件及目录处理的方法的完整攻略。 文件操作 创建文件 在Python中,使用open()函数可以创建一个文件。可以使用该函数中的mode参数来指定文件的操作模式,常用的模式有: r:只读模式 w:可写模式,如果文件存在,则清空文件内容,如果文件不存在,则…

    python 2023年6月2日
    00
  • Python绘制圣诞树+落叶+雪花+背景音乐+浪漫弹窗 五合一版圣诞树

    下面是详细的Python绘制圣诞树+落叶+雪花+背景音乐+浪漫弹窗的攻略: 一、准备工作 首先,我们需要安装pygame库和pyaudio库。 可以使用以下命令来安装: pip install pygame pip install pyaudio 在绘制圣诞树时,我们还需要利用Python的turtle库。turtle是Python标准库之一,不需要额外安装…

    python 2023年5月18日
    00
  • python如何判断IP地址合法性

    下面是 Python 如何判断 IP 地址合法性的完整攻略: 1. 判断 IP 地址是否合法 IP 地址合法的定义为:一个有效的 IP 地址由四个数字组成,每个数字之间用点号(.)隔开,每个数字都在 0 到 255 之间。 判断 IP 地址是否合法可以使用正则表达式进行校验。具体实现步骤如下: 导入 re 模块:用于使用正则表达式进行匹配。 编写正则表达式:…

    python 2023年6月3日
    00
  • Python中用startswith()函数判断字符串开头的教程

    下面是关于Python中用startswith()函数判断字符串开头的完整攻略。 标题:Python 中用 startswith() 函数判断字符串开头 一、什么是startswith()函数 startswith() 函数是Python字符串中的一种内置函数,用于检查字符串是否以特定字符或子字符串开头。 二、startswith()函数的语法 下面是sta…

    python 2023年6月5日
    00
  • Python catplot函数自定义颜色的方法

    当我们用Python的Seaborn库中的catplot函数绘制柱状图时,如果想要自定义绘图元素的颜色,可以通过如下两种方法实现。 方法一:通过palette参数自定义颜色 使用Seaborn的catplot函数绘制柱状图时,可以通过palette参数来自定义绘图元素的颜色。该参数可以接受一个颜色列表或一个颜色映射对象,并会根据每个绘图元素所对应的类别自动选…

    python 2023年5月18日
    00
  • Pandas数据分析之批量拆分/合并Excel

    下面是《Pandas数据分析之批量拆分/合并Excel》的完整实例教程。 1. 教程背景 在实际的工作中,我们经常需要对Excel表格进行批量拆分或合并操作。这些操作如果手动完成往往比较繁琐,而使用Pandas库可以方便地实现这些操作。本篇教程将介绍如何使用Pandas库对Excel表格进行批量拆分和合并。 2. 批量拆分Excel 假设我们有一个包含多个工…

    python 2023年5月13日
    00
  • 简单的抓取淘宝图片的Python爬虫

    下面我会介绍一下“简单的抓取淘宝图片的Python爬虫”的完整攻略。 攻略概述 抓取淘宝商品图片需要用到 Python 爬虫技术。爬虫的实现流程一般为: 根据淘宝商品链接,获取商品页面 HTML 源代码。 从 HTML 源代码中提取出图片链接。 根据图片链接,请求图片并保存到本地。 实现步骤 步骤1:获取商品页面 HTML 源代码 使用 requests 库…

    python 2023年5月14日
    00
  • Windows下Python2与Python3两个版本共存的方法详解

    Windows下Python2与Python3两个版本共存的方法详解 背景 有些Python开发者需要同时使用Python2和Python3两个版本,但是默认情况下在Windows上只能安装一个Python版本。该文将详细讲解如何在Windows系统上同时安装Python2和Python3。 方法 首先,下载Python2版本的安装包和Python3版本的安…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部