时间序列预测模型实战案例(二)(Holt-Winter)(Python)结合K-折交叉验证进行时间序列预测实现企业级预测精度(包括运行代码以及代码讲解)

【时间序列预测算法】——Holt-Winters算法介绍及代码实现 背景 一阶二阶三阶指数平滑方法拟合效果均较好,通过结合数据自然属性,数据自身、趋势变化、季节性,提出了这三个角度的衡量量,可以说,理解起来更自然、更亲切。 公式 一阶: sts_tst​是t时刻对xtx_txt​的估计值,这里只有一个参数α,是数据本身的平滑属性的体现。 二阶: 引入了时间趋势变量btb_tbt​,优化了一下一阶的公式。同时还可以预测t+m时刻的值: 三阶: 又引入了季节性周期描述变量ctc_tct​,优化了一下二阶的公式。同时还可以预测t+m时刻的值: NOTE:ct 阅读详情
AI摘要

本文详细介绍了Holt-Winters模型,包括其原理、参数解释,以及如何通过K-折交叉验证确定系数。作者展示了如何使用Python实现模型并提供代码示例,包括数据格式要求和模型训练过程,着重强调了模型在实际预测中的应用和预测精度分析。

目录

引言

数据格式

运行代码 

Holt-Winters模型主体

程序入口

参数讲解

开始训练

预测结果


 

引言

话不多说上来先上预测精度分析图,其中MAE的误差大概在0.11,以下数据均是预测未知数据,而不是训练数据的预测图。

8b50b51e7a674df9b35e6300dea52867.png

 

开始之前我们先来简单了解一下Holt-Winters模型

Holt-Winters模型,也称为三重指数平滑模型,是一种经典的时间序列预测模型,用于处理具有趋势和季节性的时间序列数据。

Holt-Winters模型基于指数平滑法,通过对历史数据进行加权平均来预测未来的值。它使用三个指数平滑系数来估计未来的趋势、季节性和平稳项,从而可以对未来的值进行预测。

Holt-Winters模型的三个指数平滑系数分别为:α、β和γ。其中,α表示对当前观测值的加权系数,β表示对趋势的加权系数,γ表示对季节性的加权系数。这些系数可以通过利用K-折交叉验证最小化平均绝对误差或平均平方误差来确定。

Holt-Winters模型大致可以分为三种类型:加法模型、乘法模型和季节性模型。加法模型适用于季节性变化的幅度相对稳定的情况,乘法模型适用于季节性变化的幅度随着趋势的变化而变化的情况,季节性模型则适用于季节性变化的周期相对稳定的情况。

本文主要选择一种模型来进行实现(季节性模型)同时利用K-折交叉验证法来确定其中三个平滑系数α、β和γ以验证最好的系数,从而达到最高的预测精度极限。

下面来接介绍一下什么是K-折交叉验证

K-折交叉验证(K-fold cross-validation)是一种常用的模型评估方法,用于评估机器学习模型的性能和泛化能力。它将原始数据集分成K个子集,称为“折叠”(fold),其中K-1个子集用于训练模型,1个子集用于测试模型。这个过程重复K次,每个子集都会轮流作为测试集,最终得到K个模型的性能评估结果,这些结果可以平均或加权平均得到模型的最终性能评估结果。

K-折交叉验证的优点是可以有效地利用数据集,减少因数据划分不合理而引入的偏差,提高模型的泛化能力。同时,K-折交叉验证可以避免过拟合和欠拟合等问题,提高模型的稳定性和可靠性。

数据格式

在正式开始之前需要先了解一下,holt-winter模型是单元变量预测模型,所以其只接受单个时间变量的时间序列预测,所以其数据只需要一列即可,就是你需要预测的数据我们这里拿官方的数据ETTh1来进行举例 

91d94e151ab94f2283d03552f0130893.png

数据是这种格式即可,当然你也可以只有OT一列数据也可以,但是你要确保你的数据要符合时间序列,因为你的顺序不能够打乱,因为我们需要时间date这一列主要是为了确保数据是有序的,当然如果你确定你的数据是有序的你也可以只读取进来一列数据即可!!! 

运行代码 

Holt-Winters模型主体

大家可以新建一个py文件将以下所有代码复制进去加上你的数据即可运行出结果!!

import pandas as pd
import numpy as np
from scipy.optimize import minimize  # 优化函数
from sklearn.metrics import mean_squared_error
from sklearn.model_selection import TimeSeriesSplit


class HoltWinters:
    def __init__(self, series, slen, alpha, beta, gamma, n_preds, scaling_factor=1.96):
        self.series = series
        self.slen = slen
        self.alpha = alpha
        self.beta = beta
        self.gamma = gamma
        self.n_preds = n_preds
        self.scaling_factor = scaling_factor

    def initial_trend(self):
        """
        初始化趋势,使用第一个原始数据周期内的数据
        依据现有的数据,除非输入的原始数据发生变化,否则为常数
        :return: 初始化的趋势
        """
        sum = 0.0
        for i in range(self.slen):
            sum += float(self.series[i + self.slen] - self.series[i]) / self.slen
        return sum / self.slen

    def initial_seasonal_components(self):
        """
        初始化季节性参数
        :return: 季节性对于当周期平均值的平均变化值
        """
        seasonals = {}
        season_averages = []
        # 现有数据的周期个数
        n_seasons = int(len(self.series) / self.slen)
        # let's calculate season averages
        # 最后一个周期会有稍微的影响,但影响不大
        # 每个周期平均值,从第一个周期开始,共有n个周期的数据
        for j in range(n_seasons):
            season_averages.append(sum(self.series[self.slen * j:self.slen * j + self.slen]) / float(self.slen))
        # let's calculate initial values
        # 周期中第i天的季节性增长(对比周期内的平均值)
        # 数据个数为一个周期的长度,index为一个周期内的第几个值,从0开始
        # 与原始数据相关,并不是一个固定值
        for i in range(self.slen):
            sum_of_vals_over_avg = 0.0
            for j in range(n_seasons):
                sum_of_vals_over_avg += self.series[self.slen * j + i] - season_averages[j]
            seasonals[i] = sum_of_vals_over_avg / n_seasons
        return seasonals

    def triple_exponential_smoothing(self):
        """
        三次指数平滑
        :return:
        """
        # 预测结果
        self.result = []
        # 平滑值
        self.Smooth = []
        # 季节性
        self.Season = []
        # 趋势性
        self.Trend = []
        # 预测标准差
        self.PredictedDeviation = []
        self.UpperBond = []
        self.LowerBond = []

        # 对于当周期的平均值,每一时刻的平均变化值,为初始值
        seasonals = self.initial_seasonal_components()

        for i in range(len(self.series) + self.n_preds):
            if i == 0:  # components initialization
                smooth = self.series[0]
                trend = self.initial_trend()
                self.result.append(self.series[0])
                self.Smooth.append(smooth)
                self.Trend.append(trend)
                self.Season.append(seasonals[i % self.slen])

                self.PredictedDeviation.append(0)

                self.UpperBond.append(self.result[0] +
                                      self.scaling_factor *
                                      self.PredictedDeviation[0])

                self.LowerBond.append(self.result[0] -
                                      self.scaling_factor *
                                      self.PredictedDeviation[0])
                continue

            if i >= len(self.series):  # predicting
                m = i - len(self.series) + 1
                self.result.append((smooth + m * trend) + seasonals[i % self.slen])
                # self.result.append(max(0,min(1, (smooth + m * trend) + seasonals[i % self.slen])))

                # when predicting we increase uncertainty on each step
                # 每一步增加预测的波动性
                self.PredictedDeviation.append(self.PredictedDeviation[-1] * 1.01)

            else:
                val = self.series[i]
                last_smooth, smooth = smooth, self.alpha * (val - seasonals[i % self.slen]) + (1 - self.alpha) * (
                        smooth + trend)
                trend = self.beta * (smooth - last_smooth) + (1 - self.beta) * trend
                seasonals[i % self.slen] = self.gamma * (val - smooth) + (1 - self.gamma) * seasonals[i % self.slen]
                self.result.append(smooth + trend + seasonals[i % self.slen])
                # self.result.append(max(0,min(1, smooth + trend + seasonals[i % self.slen])))

                # Deviation is calculated according to Brutlag algorithm.
                self.PredictedDeviation.append(self.gamma * np.abs(self.series[i] - self.result[i])
                                               + (1 - self.gamma) * self.PredictedDeviation[-1])

            self.UpperBond.append(self.result[-1] +
                                  self.scaling_factor *
                                  self.PredictedDeviation[-1])

            self.LowerBond.append(self.result[-1] -
                                  self.scaling_factor *
                                  self.PredictedDeviation[-1])

            self.Smooth.append(smooth)
            self.Trend.append(trend)
            self.Season.append(seasonals[i % self.slen])

def timeseriesCVscore(params, series, loss_function=mean_squared_error, slen=7):
    """
        Returns error on CV

        params - vector of parameters for optimization
        series - dataset with timeseries
        slen - season length for Holt-Winters model
    """
    # errors array
    errors = []

    values = series.values
    alpha, beta, gamma = params

    # set the number of folds for cross-validation
    # tscv = TimeSeriesSplit(n_splits=50, test_size=4)
    tscv = TimeSeriesSplit(n_splits=5, test_size=4)

    # iterating over folds, train model on each, forecast and calculate error
    for train, test in tscv.split(values):
        model = HoltWinters(series=values[train], slen=slen,
                            alpha=alpha, beta=beta, gamma=gamma, n_preds=len(test))
        model.triple_exponential_smoothing()

        predictions = model.result[-len(test):]
        actual = values[test]
        error = loss_function(predictions, actual)
        errors.append(error)

    return np.mean(np.array(errors))  # 返回了一个损失函数的平均值

以上的部分就是Holt-Winters的程序内部,其中有一些个人阅读时候的个人理解,大家可以在阅读时候进行一个参考,

程序入口

下面的代码就是程序的入口,我们复制粘贴到文件的最后面即可,下面我将介绍其中每一行的具体含义!!

if __name__ == '__main__':
    data = pd.read_csv('')
    # initializing model parameters alpha, beta and gamma
    cycle = '在这里输入你数据的周期'
    pre_len = '这里输入你要预测未来多久的数据'
    # Minimizing the loss function
    opt = minimize(timeseriesCVscore, x0=[0, 0, 0],
                   args=(data, mean_squared_error,),
                   method="TNC", bounds=((0, 1), (0, 1), (0, 1))
                   )
    # Take optimal values...
    alpha, beta, gamma = opt.x
    model = HoltWinters(data, slen=cycle,
                        alpha=alpha,
                        beta=beta,
                        gamma=gamma,
                        n_preds=pre_len, scaling_factor=2)
    model.triple_exponential_smoothing()
    print(model.result)

 

参数讲解

 首先data = pd.read_csv('')这一行很好理解就是读取你的数据,首先要求你的数据需要是csv格式的文件,然后读取来的数据要满足第二节所述的数据格式(如果你的文件是其他格式你也可以更换类似于read_excel()即可)

    data = pd.read_csv('')

当我们将数据读取进来之后,我们可以对数据进行一个按照时间排序的操作(如果你的数据只有目标值列而没有时间列则忽略掉本段代码) 这一段代码如果你们没有也可以运行如果需要排序则可以自己复制粘贴到对应位置即可

    data.sort_values(by=['date'], inplace=True)

之后的两行,这两行是一个是你数据拥有的周期性,因为holt-winter模型主要的参数还是你数据的一个周期来预测未来某一时段的数据,所有你要知道你数据所拥有的周期性,可以通过数据建模的方式或者根据你的经验来分析(如果大家不会可以评论区留言我可以给大家出用powerbi,matplotlib,excel来建模从而分析数据的教程)

    cycle = '在这里输入你数据的周期'
    pre_len = '这里输入你要预测未来多久的数据'

 这一段代码如果大家了解深度学习就可以理解为模型训练的一个过程,其中

timeseriesCVscore是一个K-折交叉验证的方法来求出损失值最小的方法,

x0就是Holt-Winters模型的三个参数α、β和γ我们初始时将其设置为0

args=(data,mean_squared_error) 其中data就是你们读取进来的数据, mean-squared_error就是一个军方损失函数,就是用前面的K-折交叉验证来求这一损失函数的最小值

method='TNC'就是模型训练的从而收敛的方法,其有很多选项如下大家可以多做实验从而得到一个最好损失结果,

- 'Nelder-Mead' :ref:`(see here) <optimize.minimize-neldermead>`
- 'Powell' :ref:`(see here) <optimize.minimize-powell>`
- 'CG' :ref:`(see here) <optimize.minimize-cg>`
- 'BFGS' :ref:`(see here) <optimize.minimize-bfgs>`
- 'Newton-CG' :ref:`(see here) <optimize.minimize-newtoncg>`
- 'L-BFGS-B' :ref:`(see here) <optimize.minimize-lbfgsb>`
- 'TNC' :ref:`(see here) <optimize.minimize-tnc>`
- 'COBYLA' :ref:`(see here) <optimize.minimize-cobyla>`
- 'SLSQP' :ref:`(see here) <optimize.minimize-slsqp>`
- 'trust-constr':ref:`(see here) <optimize.minimize-trustconstr>`
- 'dogleg' :ref:`(see here) <optimize.minimize-dogleg>`
- 'trust-ncg' :ref:`(see here) <optimize.minimize-trustncg>`
- 'trust-exact' :ref:`(see here) <optimize.minimize-trustexact>`
- 'trust-krylov' :ref:`(see here) <optimize.minimize-trustkrylov>`

每一个方法都不一样,不同的数据也可能适合不同的方法大家可以多尝试尝试, 

bounds就是限制α、β和γ的范围其通常都是位于0-1之间的一个数字,我们限制其一下不要让其超出范围!

    opt = minimize(timeseriesCVscore, x0=[0, 0, 0],
                   args=(data, mean_squared_error,),
                   method="TNC", bounds=((0, 1), (0, 1), (0, 1))
                   )

之后的代码就是将我们训练好的三个参数α、β和γ取出来

    alpha, beta, gamma = opt.x

 下面的代码就是正式到我们预测的部分了,其中的大部分参数我们都已经讲过了,除了其中的scaling_factor大家可以将其理解为一个平滑的参数,之后就是我们对输出结果作了一个三指数的平滑操作可以让数据更加平滑从而提高精度!!!

    model = HoltWinters(data, slen=cycle,
                        alpha=alpha,
                        beta=beta,
                        gamma=gamma,
                        n_preds=pre_len, scaling_factor=2)
    model.triple_exponential_smoothing()

最后我们打印一下结果即可

    print(model.result)

 

 

开始训练

将上述准备工作全部做完以后我们就可以运行我们的程序开始训练了!

运行你们保存代码的文件,控制台就会输出训练过程

5cc2e4dd2c9043c18e2c95d17f9933e5.png 我这里选用的method是L-BFGS-B这个对于我的数据而言我能拿到更高的精度,其控制台输出如上图所示,直到其最终收敛!

967318fc126f464e9946922ce66ed9fe.png

可以看到控制台收敛以后打印出了 α、β和γ三个参数,其中α=0.38537304、β=0和γ=0.89117814

α表示对当前观测值的加权系数,β表示对趋势的加权系数,γ表示对季节性的加权系数。

 


预测结果

32b0cdc960054ee98a7a1238a9f58e82.png

我将所有的结果输出下来并进行了保存到本地的csv文件中并用excel画出了如图可以看出预测值和真实值之间的误差还是有一定误差的!

1927a52b0fef4a6c97820ca6d9c4ffe0.png

这个图可以看出我们的误差MAE大部分都集中在0-0.1之间预测效果还是可以的!

到此Holt-Winters模型的使用就讲解完了!!!!!希望大家都能运行出一个好的结果! 

其它时间序列预测模型讲解

后期我会讲一些最新的预测模型包括transform, Informer,TPA-LSTM,ARIMA,XGBOOST,Holt-winter,移动平均法等等一系列关于时间序列预测的模型,包括深度学习和机器学习方向的模型我都会讲,你可以根据需求选取适合你自己的模型进行预测,如果有需要可以+个关注,包括本次模型我自己的代码和数据大家有需要我也会放出百度网盘下载链接!!

-----------------------------------------------------MTS-Mixers------------------------------------------------------------

【全网首发】(MTS-Mixers)(Python)(Pytorch)最新由华为发布的时间序列预测模型实战案例(一)(包括代码讲解)实现企业级预测精度包括官方代码BUG修复Transform模型

--------------------------------------------------------LSTM-----------------------------------------------------------------

 时间序列预测模型实战案例(三)(LSTM)(Python)(深度学习)时间序列预测(包括运行代码以及代码讲解)

如果大家有不懂的也可以评论区留言一些报错什么的大家可以讨论讨论看到我也会给大家解答如何解决!
 

 

时间序列分析之holtwinters和ARIMA 时间序列分析之holtwinters和ARIMA 时间序列是指按时间先后顺序排列的随机序列。所谓时间序列分析,就是根据有序随机变量或观测得到的有序数据之间相互依赖所包含的信息,用概率统计方法定量地建立一个合适的数学模型,并根据这个模型对相应序列所反映的过程或系统作出预报或进行控制。 时间序列分析之holtwinters和ARIMA 一概述 时间序列的平稳性 时间序列的组成 二时间序列的平滑处理 阅读详情

相关推荐

时间序列预测的“亲民神器”:Holt-Winters指数平滑法,手把手教你搞定趋势与季节!

Holt-Winters指数平滑法是一种高效的时间序列预测方法,能同时捕捉长期趋势和周期性波动。该模型通过水平项、趋势项和季节项三个核心要素分解数据,提供加法与乘法两种形式以适应不同波动特征。本文以奶茶店销量预测为例,演示了完整的Python实现流程:从模拟数据生成、模型参数设置到未来30天预测。通过四维可视化结果(原始数据拟合、残差分布、误差时序和季节成分),直观展示模型效果。该方法无需复杂调参,代码简洁,是业务场景中实用的预测工具,特别适合具有明显趋势和季节性的数据预测。

u010257409的博客 1283

趋势预测方法(五)Holt-Winters模型_时序递推预测

Holt-Winters模型 a基本原理: 该方法有点类似于SMA(移动平均)的思路,是对SMA的优化。主要因为SMA的参数数量过多时,计算时间慢,且计算复杂。Holt-Winters利用三次指数平滑法,将历史时序数据输入三个递推序列,再由三个序列的递推值来推算出预测数据的值。该模型的目的是训练出三次指数平滑法三个因数的最有效的取值,之后就可以继续预测了。 该方法可以有效的预测有线性趋势和周期波动的非平稳序列。 b模型原理: 简单指数平滑: 二次指数平滑: 三次指数平滑: 在二次指数

aaakirito的博客 1万+

一文搞懂Python时间序列预测(步骤,模板,python代码)

预测包括,数值拟合,线性回归,多元回归,时间序列,神经网络等等对于单变量的时间序列预测:模型有AR,MA,ARMA,ARIMA,综合来说用ARIMA即可表示全部。

weixin_56115549的博客 1万+

时间序列预测:Holt-Winters方法

霍尔特-温特(Holt-Winters)方法是一种时间序列分析和预报方法。该方法对含有线性趋势和周期波动的非平稳序列适用,利用指数平滑法(EMA)让模型参数不断适应非平稳序列的变化,并对未来趋势进行短期预报。Holt-Winters 方法在 Holt模型基础上引入了 Winters 周期项(也叫做季节项),可以用来处理月度数据(周期 12)、季度数据(周期 4)、星期数据(周期 7)等时间序列中的固定周期的波动行为。引入多个 Winters 项还可以处理多种周期并存的情况。

酒酿小圆子呀~ 6976

AD9361 Fast Lock实战:Python脚本自动生成Profile寄存器配置(附完整代码)

本文详细介绍了利用Python脚本实现AD9361 Fast Lock Profile寄存器自动化配置的实战方案。通过解析频率合成公式、VCO约束及查表机制,脚本能根据目标频率一键生成完整的16进制寄存器序列,大幅提升射频系统开发中多频点切换的效率和准确性,并支持CSV、JSON、C头文件等多种输出格式,便于与FPGA/嵌入式系统集成。

weixin_29194693的博客 475

流形优化: Manifold Optimization 的 全网最通俗版本详解 (一)

前言 之前忙于论文, 停更了很久。 接下来的一段时间,出于各种原因, 决定在优快云平台上做 最近在 混合波束成形 及 智能反射面 领域 非常常见的流形优化 (Manifold Optimization) 算法 的专题介绍。尽管目前已有了不少的中文博客, 但出于其各种弊端, 使得本篇的成文仍有其不可或缺的意义。 而如果要盘点最核心的意义, 就在于这篇是对读者的 数学能力 与 阅读理解能力 要求最低的 流形优化讲解了。 唯一参考的文献为 Manopt 工具包作者 Boumal 的 新书: An introd

B417科研笔记 2万+

Holt-Winters模型原理分析及代码实现(python)

引言最近实验室老师让我去预测景区内代步车辆的投放量,于是乎,本着“一心一意地输出年富力强的劳动力”这份初心,我就屁颠屁颠地去找资料,然后发现了Holt-Winters模型 , 感觉这个模型可以有,于是就去研究一番,并总结成这篇博客了。原理分析移动平均(The simple moving average (SMA))直观上,最简单的平滑时间序列的方法是实现一个无权重的移动平均,目前已知的方法是用窗口函

分享人工智能学习心得与实践经验,探讨应用场景,见证变革与进步 6万+

【Proteus仿真】用24C04与1602LCD设计的简易加密电子密码锁

【Proteus仿真】用24C04与1602LCD设计的简易加密电子密码锁

perseverance51博客 1122

时间序列分析实战(四):Holt-Winters建模及预测

针对时序进行Holt-Winters建模及预测,包括详细代码及分析。

jd1813346972的博客 3392

26、特洛伊木马:威胁与防范

本文详细介绍了多种常见的特洛伊木马,包括RegForm、ProMail和远程访问特洛伊木马(RATs),并分析了其工作原理与危害。重点讲解了著名RATs如Back Orifice、SubSeven和The Thing的技术特点,揭示了黑客编写特洛伊木马的常用语言与方法。同时,提供了有效的防范策略,如谨慎获取软件、使用回滚程序、杀毒软件、防火墙及反特洛伊木马程序,并通过流程图展示了防御机制。旨在帮助用户识别威胁并加强系统安全防护。

e3f4g5的博客 88

基于LSTM的股票价格预测系统,Django框架,Web的股票预测系统,训练+数据集+源码(无需安装环境版)

股票价格预测是投资领域的一个重点关注课题。由于股票价格受到诸多非线性因素的影响,得到精确的预测结果较为困难。使用 PyCharm 作为代码开发工具,通过下载好的股票金融数据,进行数据预处理,构建 LSTM 网络模型,训练模型并训练出最优模型,输出股票未来收盘价波动的走势,最后在训练好的模型上,设计股票模型应用系统,运行效率较高,对股票预测具有一定的积极意义。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 956

【机器学习(十)】时间序列—Holt-Winters方法—Sentosa_DSML社区版

相比传统代码方式,利用Sentosa_DSML社区版完成机器学习算法的流程更加高效和自动化,传统方式需要手动编写大量代码来处理数据清洗、特征工程、模型训练与评估,而在Sentosa_DSML社区版中,这些步骤可以通过可视化界面、预构建模块和自动化流程来简化,有效的降低了技术门槛,非专业开发者也能通过拖拽和配置的方式开发应用,减少了对专业开发人员的依赖。

weixin_45141860的博客 2151

STM32实战开发(128):智能位移检测 - 使用STM32实现位移检测

STM32作为一款功能强大的微控制器,由于其出色的处理能力、丰富的外设接口和低功耗特点,成为实现智能位移检测系统的理想选择。未来,可以通过结合更多传感器、多种数据处理算法以及云平台技术,进一步提升系统的智能化水平,优化位移测量的精度和稳定性。本篇博客将介绍如何使用STM32微控制器实现智能位移检测系统,涉及硬件设计、传感器选择、软件开发等多个方面,提供详细的设计步骤,并给出完整的代码示例,帮助开发者快速搭建智能位移检测系统。蜂鸣器连接到STM32的GPIO端口,当位移超过设定的阈值时,蜂鸣器发出警报。

2201_76125393的博客 901

时间序列模型之指数模型(Holt-Winters Model)

今天学习了一下时间序列模型中的指数平滑模型。 时间序列数据的常用模型包括:Holt-Winters Model以及著名的Arima Model。 时间序列模型一般包含3种components: Trend Component Seasonal Component Irregular Component 分别用来捕捉趋势、季节项和随记误差项。 进而可以想到两种对各种成分的组合方式,分别是相加模型和...

WenbinYao&YouweiHu 5626

星载SAR的各项指标解读(史上最全)

一、系统指标 系统指标主要指雷达系统的通用的指标,以及和卫星整星相关的指标,主要有一下几项: 工作频段: 雷达体制: 极化方式: 设计s

9276

yolov8知识蒸馏代码详解:支持logit和feature-based蒸馏

特别地,在COCO数据集上对MAP中的RetinaNet检测器(resnet50主干)获得了3.4%的性能提升,在Cityscapes数据集上, 针对mIoU指标,PSPNET(resnet-18 backbone)获得5.81%的性能提升。大部分的KD方法都是通过algin学生网络和教师网络的归一化的feature map, 最小化feature map上的激活值的差异。MGD是一种真正通用的基于特征feature的知识蒸馏方法,它可以用于各种任务,包括图像分类,目标检测,语义分割和实例分割。

@bangbang的博客 7286

时间序列预测模型实战案例(三)(LSTM)(Python)(深度学习)时间序列预测(包括运行代码以及代码讲解)

LSTM(Long Short-Term Memory)是一种常用的循环神经网络(RNN)模型,用于处理序列数据,具有记忆长短期的能力。在时间序列预测中,LSTM既可以多元预测机制又可以作为单元预测机制使用。LSTM的预测效果图其中MAE误差为0.15,ME误差为-0.03。,LSTM作为多元预测机制和单元预测机制的优点是可以处理序列数据中的长期依赖关系,从而可以捕捉到数据中的复杂模式和规律。它可以自适应地学习和调整模型参数,从而提高模型的预测性能和泛化能力。

Snu77的博客 9万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

【机器学习】时序预测Arima & HoltWinters算法及评估方法 整理

时序预测(Arima 和 HoltWinters)算法 及 评估方法 整理。spark 库里没有 Spark TimeSeries 时序预测算法,但是国外有人已经写好了相应的算法。https://github.com/sryza/spark-timeseries 时间序列分析 时间序列,就是按时间顺序排列的,随时间变化的数据序列。 生活中各领域各行业太多时间序列的数据了,销售额,顾客数,访问量...

CWS_chen 1万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

三次指数平滑法(Holt-Winters)

三次指数平滑法 https://blog.youkuaiyun.com/qq_32628233/article/details/51595479 ​​ 参数选择 ​α,ß,γ的值都位于[0,1]之间,可以多试验几次以达到最佳效果。 ​s,t,p初始值的选取对于算法整体的影响不是特别大,通常的取值为s0=x0,t0=x1-x0,累加时p=0,累乘时p=1. HoltWinters模型有三个可调参数,我们的目的就...

ShadowAJ 3万+

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

时序预测:LSTM、ARIMA、Holt-Winters、SARIMA模型的分析与比较

时序预测:LSTM、ARIMA、Holt-Winters、SARIMA模型的分析与比较

3216

Holt Winter 指数平滑模型

1 指数平滑法 移动平均模型在解决时间序列问题上简单有效,但它们的计算比较难,因为不能通过之前的计算结果推算出加权移动平均值。此外,移动平均法不能很好的处理数据集边缘的数据变化,也不能应用于现有数据集的范围之外。因此,移动平均法的预测效果相对较差。 指数平滑法(exponential smoothing)是一种简单的计算方案,可以有效的避免上述问题。按照模型参数的不同,指数平滑的形式可以分为一...

BigData_Mining的博客 1万+

时间序列模型发展历程(第三讲:指数平滑法 / Holt / Holt-Winters)

其中水平项(level)更新为:ℓt:你对“真实水平”的当前信念遗忘率📌时间在这里是什么?时间 = 你对世界的“信念更新过程”预测公式:状态更新:你现在应该能“看懂”这两条式子了:水平:对观测的修正趋势:对“变化速度”的修正📌时间在这里是什么?时间 = 水平 + 速度 的演化。

kkkkkkkkkasey的博客 1035

时间序列模型(五):时间序列案例_实现销售额预测

本文主要讲述了如何使用ARIMA和SARIMA模型对Perrin Freres香槟公司的销售数据进行时间序列预测。通过对1964年到1972年的数据进行分析,我们处理了缺失值,进行了单位根检验和差分,然后利用ACF和PACF确定模型参数。通过超参数搜索,我们选择了最优的模型进行预测。最后,我们保存了训练好的模型,并使用它进行未来的销售预测。

无敌小怪兽_Zz的博客 1万+

时间序列预测——霍尔特线性趋势法与Holt-Winters方法

霍尔特线性趋势法和Holt-Winters方法是两种常用的时间序列预测方法,分别适用于具有稳定线性趋势和明显季节性的数据。这两种方法都具有简单易懂、考虑趋势和季节性等优点,但在选择参数和处理异常值方面存在一定的局限性。

weixin_39753819的博客 6372

Holt-Winters模型分析及时间序列预测

文章目录数据特点异常检测预测器设计同比环比预测器基线预测器Holt-Winters预测器三次指数滑动平均算法报警模型中的预测器计算序列的周期性数据残差数据实时预测报警检测比较器的设计一些问题及完善空间 数据特点 订单量时间序列有两个明显的特征: 周期性。每天订单量的变化趋势都大致相同,早10点高峰和晚8点高峰订单量集中。 实时性。当天的订单量可能会受促销等因素影响,呈现整体的上涨或下降。 异常...

ShadowAJ 1万+

Python探索金融数据进行时间序列分析和预测

为了演示如何使用Python进行时间序列分析和预测,将使用微软公司的每日调整收盘价,这些数据由Yahoo Finance提供。库提供了一种简单的方法来下载特定代码的金融数据,开始和结束日期表示我们要下载的数据时间段,本文为2010年1月至2022年6月。现在已经下载了数据,然后探索一下数据以更好地了解它的结构和特征,可以使用Pandas来分析数据。上面的代码绘制了微软公司调整后的收盘价的ACF和PACF,滞后期最长为20。首先,我们将创建一个新的DataFrame,仅捕获我们分析所需的列。

csdn1561168266的博客 3483
上一篇: 时间序列预测模型实战案例(一)深度学习华为MTS-Mixers模型
下一篇: 时间序列预测模型实战案例(三)(LSTM)(Python)(深度学习)时间序列预测(包括运行代码以及代码讲解)
Snu77
Snu77 优质创作者: 人工智能技术领域 优质创作者: 人工智能技术领域
博客等级 码龄5年 11万+粉丝 934原创
评论 67
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Snu77

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值