首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在python中找到对称的平均绝对误差?

对称的平均绝对误差(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考虑了预测值和实际值的相对大小,因此对异常值的敏感性较低。
  • 易于解释:SMAPE以百分比形式表示,便于直观理解。

类型

SMAPE是一种相对误差度量,适用于回归模型的评估。

应用场景

  • 时间序列预测:如股票价格预测、天气预报等。
  • 销售预测:用于评估销售预测模型的准确性。
  • 资源分配:在资源有限的情况下,评估不同方案的预测精度。

示例代码

以下是在Python中计算SMAPE的示例代码:

代码语言:txt
复制
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}%")

参考链接

常见问题及解决方法

  1. 数据类型不匹配:确保实际值和预测值的数据类型一致,最好是数值型数据。
  2. 除零错误:在实际值或预测值为零时,SMAPE的计算会出现除零错误。可以通过添加一个小的常数来避免这种情况。
代码语言:txt
复制
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))

通过上述方法,可以有效地计算对称的平均绝对误差,并处理可能遇到的问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

超强,必会的机器学习评估指标

学习何时使用每个指标、优点和缺点以及如何在 Python 中实现它们。1 分类指标1.1 分类结果 在深入研究分类指标之前,我们必须了解以下概念:真正例 (TP):模型正确预测正类的情况。...2 回归指标2.1 平均绝对误差(MAE)平均绝对误差(MAE)是用来计算预测值和实际值之间差距绝对值的平均量。简单来说,MAE的计算公式如下:N是数据点的数量。y_pred是预测值。...与目标变量相同的单位:与平均绝对误差 (MAE) 相比,受异常值的影响更大。...不对称:高估小实际值的误差,低估大实际值的误差。...回归任务:结合使用如MAE这样的绝对误差指标和MAPE这样的相对误差指标,可以从不同角度评估模型的表现。

17400

机器学习中的 7 大损失函数实战总结(附Python演练)

译者 | VK 来源 | Analytics Vidhya 【导读】:本文为大家介绍了Python机器学习算法的7个损失函数的详细指南,希望对大家有所帮助。...概述 学习什么是损失函数以及它们如何在机器学习算法中工作 损失函数实际上是我们经常使用的技术的核心 本文介绍了多种损失函数与它们的工作原理以及如何使用Python对它们进行编程 介绍 想象一下-你已经在给定的数据集上训练了机器学习模型...因此,如果我们的数据容易出现许多的异常值,则不应使用这个它。 2.绝对误差损失 每个训练样本的绝对误差是预测值和实际值之间的距离,与符号无关。绝对误差也称为L1 Loss: ?...正如我之前提到的,成本是这些绝对误差的平均值(MAE)。 与MSE相比,MAE成本对异常值更加健壮。但是,在数学方程中处理绝对或模数运算符并不容易。我们可以认为这是MAE的缺点。...为简化起见,我们将仅使用两个输入特征(X_1和X_2),即"最差区域(worst area)"和"平均对称性(mean symmetry)"用于分类。Y是二值的,为0(恶性)或1(良性)。

85211
  • 如何在Keras中创建自定义损失函数?

    损失计算是基于预测值和实际值之间的差异来做的。如果预测值与实际值相差甚远,损失函数将得到一个非常大的数值。 Keras 是一个创建神经网络的库,它是开源的,用 Python 语言编写。...backend 是一个 Keras 库,用于执行计算,如张量积、卷积和其他类似的活动。...下面是两个最常用的: 均方误差 均方误差(MSE)测量误差平方的平均值。它是预测值和实际值之间的平均平方差。...平均绝对误差 平均绝对误差(MAE)是两个连续变量之间差的度量,通常用 x 和 y 表示。平均绝对误差是绝对误差 e=y-x 的平均值,其中 y 是预测值,x 是实际值。...你可以查看下图中的模型训练的结果: epoch=100 的 Keras 模型训练 结语 ---- 在本文中,我们了解了什么是自定义损失函数,以及如何在 Keras 模型中定义一个损失函数。

    4.5K20

    损失函数的“噪音免疫力”

    最重要的一个结论就是:MAE损失,即平均绝对误差,是噪音鲁棒的,而我们最常用的交叉熵则容易受到噪音的影响。 ?...、非对称噪音: 噪音:在这里指的是标签错误的样本。...定义2——损失函数的对称性: 我们设模型的损失函数为,设分类问题的类别有类,则称这个损失函数是对称的,当它满足下面的公式: 二、重大发现:有对称性的损失函数,具有一定的抗噪能力 作者通过推导以及实验,发现拥有对称属性的损失函数...甚至,当噪音时对称噪音时,该损失函数理论上是完全抗噪的。 1.理论推导: 下面我们来推导一下: 首先假设我们面对的是对称噪音,噪音比为....其实不是,常见的MAE(mean absolute error,平均绝对误差),就是一个典型的拥有对称性的损失函数。

    1.2K10

    中山大学李华山、王彪课题组开发 SEN 机器学习模型,高精度预测材料性能

    了解晶体对称性有助于简化分析,更好地理解材料属性,并提高材料性能的计算效率。更重要的是,晶体对称性还可以直接影响材料的电荷分布、光学性质、磁性质等物理特性。...6,027 个晶体材料 研究人员基于化学环境的概念和图模型的表示方法提取了晶体材料的特征,以目标原子截断半径内的周围原子和键来定义其化学环境,并从用于材料分析的开源 Python 数据库——Materials...进而,通过在材料的化学环境矩阵上进行对称运算,可以将不同的对称图案推广到晶体胶囊中。 最后,在属性预测方面,SEN 模型通过基于 MLP 的映射函数预测目标材料性质。...SEN 模型高精度预测材料属性 结论一:SEN 模型准确感知原子相互作用信息 为了验证特征提取模块的有效性,研究人员训练了 SEN 预测晶体材料带隙的能力,直到平均绝对误差 (MAE) 低于 0.15...这一特征清除过程减轻了过拟合问题,并加强了从材料特征到属性的映射。 论文显示,SEN 模型预测带隙和形成能的平均绝对误差分别比常见机器学习模型低约 22.9% 和 38.3%。

    34810

    房价会崩盘吗?教你用 Keras 预测房价!(附代码)

    如果您在这些问题(如线性回归或随机森林)中使用标准机器学习方法,那么通常该模型会过拟合具有最高值的样本,以便减少诸如平均绝对误差等度量。...本文将展示如何在使用 Keras 时编写 R 中的自定义损失函数,并展示如何使用不同的方法对不同类型的数据集有利。...下面的图片是我将要用做文章预览封面的,它显示了根据波士顿房价数据集训练的四种不同 Keras 模型的培训历史。每个模型使用不同的损失函数,但是在相同的性能指标上评估,即平均绝对误差。...该函数计算预测值与实际值之间的差值,然后将结果平方 (使所有的值均为正),最后计算平均值。注意,该函数使用张量进行计算,而不是 Python 原语。当在 R 中定义自定义损失函数时将使用相同的方法。...我使用了 100 个批次并且每个批次大小为 5,按照 20%的比例将分割出来的数据作为验证集。在模型训练完训练集之后,模型的性能通过测试数据集上的平均绝对误差来评估。 ?

    2K20

    GPT4做数据分析时间序列预测之八相当棒2023.6.2

    请用python对时间序列预测结果准确性的一些检查判定指标,判断这些预测结果,看看哪个预测结果好,并给出代码 3、 为了评估这些预测方法的准确性,我们可以使用一些常见的时间序列预测评估指标,如均方误差...(MSE)、均方根误差(RMSE)和平均绝对误差(MAE)。...以下是读取Excel数据并计算各种预测方法的MSE、RMSE和MAE的代码: ```python import pandas as pd import numpy as np # 读取Excel数据...) ** 2) 均方根误差 = np.sqrt(均方误差) 平均绝对误差 = np.mean(np.abs(实际销售额 - 预测值)) 评估指标[方法] = {"MSE": 均方误差..., "RMSE": 均方根误差, "MAE": 平均绝对误差} # 创建新的Excel文件 工作簿 = Workbook() 工作表 = 工作簿.active # 将原始数据和计算结果写入新的Excel

    30220

    概率论--上a分位点

    这意味着Z_a是使得右侧面积为a的标准正态分布曲线上的点。 此外,上a分位点具有对称性,即正态分布的上a分位点与下(1-a)分位点在分布曲线上关于均值对称。...具体实现可以使用Python中的np.percentile (a, q)函数,其中参数a是需要进行计算的数据列名,参数q是取分位点的百分比(0-100之间的数字),并且可以通过设置interpolation...总结来说,上α分位点的计算步骤包括数据排序、计算位置数、向下取整以及提取分位点。 寻找 如何在不同类型的概率分布中找到上a分位点? 在不同类型的概率分布中找到上α分位点的方法取决于具体的分布类型。...这些分位数可以用于估计非抽样统计中的参数,如中位数、众数等。 延伸 在统计假设检验中,如何确定上a分位点的显著性水平?...例如,在评估某种健康干预措施时,研究者不仅关注整体平均效果,还希望了解该干预对处于特征分布不同位置的人群的具体影响。

    29410

    重要的数据分析方法:时间序列分析

    时间序列分析是一种重要的数据分析方法,用于处理随时间变化的数据。在Python数据分析中,有许多强大的工具和技术可用于进行时间序列分析。...本文将详细介绍Python数据分析中时间序列分析的高级技术点,包括时间序列预处理、模型建立、预测和评估等。图片1....1.2 数据平稳化数据平稳化是使时间序列具有恒定的统计特性,如均值和方差。可以使用差分或变换方法对非平稳时间序列进行处理,如一阶差分、对数变换等。...它衡量了预测值与真实值之间的平均误差。4.2 平均绝对误差(MAE)平均绝对误差是预测误差的绝对值的平均值。它衡量了预测值与真实值之间的平均绝对偏差。...希望本文对您了解Python数据分析中时间序列分析的高级技术点有所帮助。

    77130

    个性化大脑连接组指纹:它们在认知中的重要性

    这一步是将83个ROI分别作为种子,得到mxm的连接矩阵C,其中的元素是i和j之间的加权无向网络连接。因为C的元素是i和j之间平均的,所以C是主对角线对称矩阵。        ...更具体地说,与使用简单特征的人员识别模型相比,如WM区域到区域的连通性或区域中心度,使用我们的连接体动态特征的模型的分类性能平均比使用核心性、通信性或首次平均通过时间特征的模型高26%。...平均绝对误差为7.7分(SD =7.1)(图10;幼儿ELC),由LOOCV程序创建的141个预测模型的平均相关系数为0.70 (R2 =0.49, SD =0.16)。        ...在随机连接体上重复LOOCV程序,平均绝对误差为22.1分(SD=11.8),平均相关系数为0.14 (R2 =0.02, SD =0.08)。...同样,对随机连接体重复LOOCV程序,平均绝对误差为24.3分(SD=0.6),平均相关系数为0.10 (R2 =0.01, SD =0.05)。

    69320

    机器学习中的 7 大损失函数实战总结(附Python演练)

    相应的成本函数是这些平方误差的平均值(MSE)。...因此,如果我们的数据容易出现许多的异常值,则不应使用这个它。 2.绝对误差损失 每个训练样本的绝对误差是预测值和实际值之间的距离,与符号无关。绝对误差也称为L1 Loss: ?...正如我之前提到的,成本是这些绝对误差的平均值(MAE)。 与MSE相比,MAE成本对异常值更加健壮。但是,在数学方程中处理绝对或模数运算符并不容易。我们可以认为这是MAE的缺点。...为简化起见,我们将仅使用两个输入特征(X_1和X_2),即"最差区域(worst area)"和"平均对称性(mean symmetry)"用于分类。Y是二值的,为0(恶性)或1(良性)。...请注意,发散函数不对称。即: ? 这就是为什么KL散度不能用作距离度量的原因。 我将描述使用KL散度作为损失函数而不进行数学计算的基本方法。

    1.2K20

    70个NumPy练习:在Python下一举搞定机器学习矩阵运算

    难度:1 问题:将python numpy数组a中打印的元素数量限制为最多6个。 输入: 输出: 答案: 24.如何在不截断的情况下打印完整的numpy数组?...答案: 45.如何在numpy数组中找到最频繁出现的值? 难度:1 问题:找到iris数据集中最常见的花瓣长度值(第3列)。 输入: 答案: 46.如何找到首次出现的值大于给定值的位置?...难度:3 问题:针对给定的二维numpy数组计算每行的min-max。 答案: 58.如何在numpy数组中找到重复的记录?...难度:3 问题:在给定的numpy数组中找到重复的条目(从第2个起),并将它们标记为True。第一次出现应该是False。 输出: 答案: 59.如何找到numpy中的分组平均值?...输入: 答案: 63.如何在一维数组中找到所有局部最大值(或峰值)? 难度:4 问题:在一维numpy数组a中查找所有峰值。峰值是两侧较小值包围的点。

    20.7K42

    使用Keras在训练深度学习模型时监控性能指标

    这使我们可以在模型训练的过程中实时捕捉模型的性能变化,为训练模型提供了很大的便利。 在本教程中,我会告诉你如何在使用Keras进行深度学习时添加内置指标以及自定义指标并监控这些指标。...., metrics=['mse']) 列出的具体指标可以是Keras函数的名称(如mean_squared_error)或这些函数的字符串别名(如' mse ')。...均方误差:mean_squared_error,MSE或mse 平均绝对误差:mean_absolute_error,MAE,mae 平均绝对误差百分比:mean_absolute_percentage_error...对二分类问题,计算在所有预测值上的平均正确率:binary_accuracy,acc 对多分类问题,计算再所有预测值上的平均正确率:categorical_accuracy,acc 在稀疏情况下,多分类问题预测值的平均正确率...那么对应的就是tensorflow.python.framework.ops.Tensor)。

    8K100

    Python数据分析与实战挖掘

    相似但更为丰富 使用时如果使用中文无法正常显示,需要作图前手动指定默认字体为中文,如SimHei Pandas python下最强大的数据分析和探索工具。...、聚类、抽样) Python主要数据预处理函数 《贵阳大数据培训》 interpolate 一维、高维插值,如拉格朗日、样条插值等 Scipy unique 去除重复 Pandas/Numpy isnull...平均值修正 取前后两个正常值的平均 不处理 判断其原因,若无问题直接使用进行挖掘 数据集成:将多个数据源合并存在一个一致的数据存储中,要考虑实体识别问题和属性冗余问题,从而将数据在最低层上加以转换、提炼和集成...、聚类、抽样) Python主要数据预处理函数 interpolate 一维、高维插值,如拉格朗日、样条插值等 Scipy unique 去除重复 Pandas/Numpy isnull 判断是否为空...之后进行一些评估如score等 误差评价:绝对误差、相对误差、平均绝对误差、均方误差、均方根误差、平均绝对百分误差、Kappa统计、识别准确度、识别精确率、反馈率、ROC曲线、混淆矩阵 聚类分析 常用方法

    3.7K60

    电子游戏销售之回归模型与数据可视化

    电子游戏销售之回归模型与数据可视化 0、写在前面 该篇文章的任务包括以下3个方面 检测与处理缺失值 建立回归模型 数据可视化 实验环境 Python版本:Python3.9 Numpy版本:Python1.22.3...回归模型评价 根据平均绝对误差、均方误差、中值绝对误差、可解释方差值、R²值等评价指标来评估建立的线性回归模型是否合适。...print('video_games数据线性回归模型1的平均误差为', mean_absolute_error(video_games_target_test1,video_games_target_test_pred1...)) print('video_games数据线性回归模型1的中值绝对误差为', median_absolute_error(video_games_target_test1,video_games_target_test_pred1...) 平均方差、均方误差、中值绝对误差均接近于0,而可解释方差值、R2可以看出建立的线性回归模型拟合效果良好,但可以继续优化。

    47320

    循序渐进提升Kaggle竞赛模型精确度,以美国好事达保险公司理赔为例

    通常情况下,获胜者只会写一个他们所做的事情的简单概述,而不会透露很多,所以用何种方法可用的提高模型精确度仍是一个谜。 这篇博文介绍了如何在Kaggle竞赛中提高模型精确度。...但是我们不能将Boxcox变换用在“损失”(Loss)变量上,因为目前在Python里,没有撤销Boxcox的功能。...因此,我们无法做到:在预测之后将“损失” (Loss)转换回去,再计算平均绝对误差(mean absolute error)。随后,我们将使用对数(log)来转换“损失”(Loss)变量。...我们可以拟合一个如下所示的线性回归: 如上所示,测试得分远大于训练得分。这意味着训练集过拟合。关于这个估计需要说明的一点是:我们正在使用平均绝对误差,这里这个值是负数是因为sklearn使其成为负值。...在这个模型中,我得到的交叉验证分数是1115。 因此,可比较不同的模型: 2.7 叠加模型(Stacking Models) 还记得我们的初始平均绝对误差是1300吗?

    2.6K60
    领券