时间序列预测模型实战案例(六)深入理解机器学习ARIMA包括差分和相关性分析

ARIMA模型——平稳时间序列分析 介绍了ARIMA,并举了一个最简单的例子进行分析,后续会继续更新相关内容 阅读详情
AI摘要

本文介绍利用Python实现ARIMA模型进行时间序列预测的实战案例。以客服接线量数据为对象,先对数据进行预处理,包括一阶和二阶差分操作,再通过自相关和偏自相关图选参数,接着拟合模型、预测并评估,最后可视化展示结果,还提及其他时间序列预测模型。

简介

ARIMA模型是一种广泛应用的时间序列预测模型,它结合了自回归(AR)和移动平均(MA)的概念,具有较好的灵活性和准确性。

本章将介绍一个实战案例,利用Python编程语言实现了ARIMA模型并进行预测。通过这个案例,我们将深入了解ARIMA模型的构建过程和关键步骤,并学习如何使用Python中的相关库来进行模型训练和预测。

在案例中,我们将使用一组客服的接线量数据作为实验对象。通过分析这些数据,我们将探索数据的特征和规律,进行平稳性检验和差分操作,然后通过自相关和偏自相关图来选择合适的ARIMA模型参数。接下来,我们将用选定的参数拟合ARIMA模型,并进行模型评估和预测结果分析。

下图为预测未知数据的对比图->

 

数据收集和准备

下面是模型所用数据集的部分截图

PS:需要注意的是ARIMA是单变量预测的模型,我们只用的了其中的特征列"Volume"来进行预测,其它两列是用来校验Volume列的标记值。

d9947ff4562343dfaa5fcb007fda7782.png

​

完整项目代码 

import pandas as pd
import matplotlib.pyplot as plt
from pmdarima.arima import auto_arima
from math import sqrt
from sklearn.metrics import mean_squared_error
import statsmodels.tsa.api as smt
import statsmodels.api as sm
import numpy as np

firstDate = '2017-10-29'

def loadData(filterDate):
    """
    加载指定日期之后的数据,只加载第一天之后的数据,第一天可以指定
    :param filterDate:
    :return:
    """
    if filterDate < firstDate:
        filterDate = firstDate
    hp_all = pd.read_csv("hp.csv", index_col=['Date'], parse_dates=['Date'])
    hp_all = hp_all[filterDate:]
    return hp_all


def plotData(series):
    """
    对于输入数据进行折线图显示
    :param series:
    :return:
    """
    plt.rcParams['font.sans-serif'] = ['SimHei']
    plt.rcParams['axes.unicode_minus'] = False
    plt.figure(figsize=(15, 7))
    plt.plot(series)
    plt.title('原始数据')
    plt.grid(True)
    # plt.show()


def plotAllData(filterDate):
    """
    对指定日期之后的数据进行展示,初步处理是将数据中的空值替换为0
    :param filterDate:
    :return:
    """
    hp_all = loadData(filterDate)
    plotData(hp_all['Volume'].fillna(0, inplace=False))


def preProcessData(filterDate):
    """
    对指定日期之后的数据进行预处理,预处理方式将标记的数据使用周围数据的平均值替换
    :param filterDate:
    :return: hp 处理后的数据,其中标记的数据使用平滑值来代替;
    hp_rolling 窗口为17的平滑值,平滑方法是平均值;
    hp_raw 处理后的数据,标记的数据使用0来替换
    """
    hp_all = loadData(filterDate)
    hp = hp_all['Volume'].copy(deep=True)
    hp_all.loc[hp_all['IsNoted'] == 1, 'Volume'] = np.nan
    hp_raw = hp_all[['Volume']].fillna(0, inplace=False)
    hp_rolling = hp_all['Volume'].rolling(window=22, min_periods=1, center=True).mean()
    hp[hp_all['IsNoted'] == 1] = hp_rolling[hp_all['IsNoted'] == 1]
    return hp, hp_rolling, hp_raw


def plotProcessedData(filterDate):
    """
    对原始数据,平滑数据和处理后的数据进行展示
    :param filterDate:
    :return:
    """
    hp, hp_rolling, hp_raw = preProcessData(filterDate)
    plt.rcParams['font.sans-serif'] = ['SimHei']
    plt.rcParams['axes.unicode_minus'] = False
    plt.figure(figsize=(15, 7))
    plt.plot(hp_raw, label='Raw Data')
    # plt.plot(hp_rolling, label='Rolling Data')
    # plt.scatter(hp.index, hp, label='Processed Data', c='red', marker='v', s=5)
    plt.plot(hp, label='Processed Data')
    # plt.title('数据处理:原始数据,平滑数据,处理后的数据')
    plt.title('数据处理:原始数据,处理后的数据')
    plt.grid(True)
    plt.legend(loc='best')
    # plt.show()


def train(filterDate, div_para):
    hp, hp_rolling, hp_raw = preProcessData(filterDate)
    train_ds = hp[:int(div_para * len(hp))]
    test_ds = hp[int(div_para * len(hp)):]

    plt.rcParams['font.sans-serif'] = ['SimHei']
    plt.rcParams['axes.unicode_minus'] = False
    # plt.figure(figsize=(15, 7))
    # plt.title('训练数据和测试数据')
    # train_ds.plot()
    # test_ds.plot()

    model = auto_arima(train_ds, trace=True, error_action='ignore', suppress_warnings=True, seasonal=True,m=7,
                       stationary=False)
    model.fit(train_ds)
    forcast = model.predict(n_periods=len(test_ds))
    forcast = pd.DataFrame(forcast, index=test_ds.index, columns=['Prediction'])
    rms = sqrt(mean_squared_error(test_ds, forcast))
    plt.rcParams['font.sans-serif'] = ['SimHei']
    plt.rcParams['axes.unicode_minus'] = False
    plt.figure(figsize=(15, 7))
    # plt.figure('Forecast')
    plt.title('预测结果,参数:训练开始日期:{0},共{1}天,所占百分比:{2},评估均方根误差:{3}'.format(filterDate, len(train_ds), div_para, rms))
    plt.plot(train_ds, label='Train')
    plt.plot(test_ds, label='Test')
    plt.plot(forcast, label='Prediction')
    plt.legend()
    plt.show()


def tsplot(y, lags=None, figsize=(12, 7), style='bmh'):
    """
        Plot time series, its ACF and PACF, calculate Dickey–Fuller test

        y - timeseries
        lags - how many lags to include in ACF, PACF calculation
    """
    if not isinstance(y, pd.Series):
        y = pd.Series(y)

    with plt.style.context(style):
        fig = plt.figure(figsize=figsize)
        layout = (2, 2)
        ts_ax = plt.subplot2grid(layout, (0, 0), colspan=2)
        acf_ax = plt.subplot2grid(layout, (1, 0))
        pacf_ax = plt.subplot2grid(layout, (1, 1))

        y.plot(ax=ts_ax)
        p_value = sm.tsa.stattools.adfuller(y)[1]
        ts_ax.set_title('Time Series Analysis Plots\n Dickey-Fuller: p={0:.5f}'.format(p_value))
        smt.graphics.plot_acf(y, lags=lags, ax=acf_ax)
        smt.graphics.plot_pacf(y, lags=lags, ax=pacf_ax)
        plt.tight_layout()




if __name__ == '__main__':
    """
    "ARIMA",
    """

    startDate = '2015-01-15'
    # startDate = firstDate
    # hp_all = loadData(startDate)
    hp, hp_rolling, hp_raw = preProcessData(startDate)
    plotAllData(startDate)
    plotProcessedData(startDate)

    #  是否进行差分操作可视化
    tsplot_bool = False
    if tsplot_bool:
        ads = hp_raw
        # tsplot(ads.Ads, lags=60)
        ads_diff = ads.Volume - ads.Volume.shift(24)
        # tsplot(ads_diff[24:], lags=60)
        ads_diff = ads_diff - ads_diff.shift(1)
        tsplot(ads_diff[24 + 1:], lags=60)

    print("test")
    # 模型拟合以及预测
    startDate = firstDate
    train(startDate, 0.98)

数据预处理

在数据导入之前我们先对数据进行一些预处理操作,其中有注释大家可以进行理解。

def loadData(filterDate):
    """
    加载指定日期之后的数据,只加载第一天之后的数据,第一天可以指定
    :param filterDate:
    :return:
    """
    if filterDate < firstDate:
        filterDate = firstDate
    hp_all = pd.read_csv("hp.csv", index_col=['Date'], parse_dates=['Date'])
    hp_all = hp_all[filterDate:]
    return hp_all


def preProcessData(filterDate):
    """
    对指定日期之后的数据进行预处理,预处理方式将标记的数据使用周围数据的平均值替换
    :param filterDate:
    :return: hp 处理后的数据,其中标记的数据使用平滑值来代替;
    hp_rolling 窗口为17的平滑值,平滑方法是平均值;
    hp_raw 处理后的数据,标记的数据使用0来替换
    """
    hp_all = loadData(filterDate)
    hp = hp_all['Volume'].copy(deep=True)
    hp_all.loc[hp_all['IsNoted'] == 1, 'Volume'] = np.nan
    hp_raw = hp_all[['Volume']].fillna(0, inplace=False)
    hp_rolling = hp_all['Volume'].rolling(window=22, min_periods=1, center=True).mean()
    hp[hp_all['IsNoted'] == 1] = hp_rolling[hp_all['IsNoted'] == 1]
    return hp, hp_rolling, hp_raw

我们可以对比一下经过处理和未经过处理的数据图像进行一个对比,全是蓝色的为原始图像,带部分黄色的为处理后的图像。

b05abfa85c004d88927206e495d7ecc2.png

171d4c119c5e41f5a759314eebb7b93a.png

一阶差分和二阶差分操作

我们输入数据之后,可以对数据进行一些检验操作,当处理时间序列数据时,差分是一种常见的操作,用于平稳化非平稳时间序列。平稳时间序列的特征是在时间上具有恒定的均值和方差,且自相关性不随时间变化。而非平稳时间序列则可能在均值、方差或自相关性上存在时间相关的变化。。

在开始差分分析之前我们先来简单介绍一下差分操作来让大家对差分有一列简单的理解以及差分操作能够起到什么效果。

当我们对一个时间序列进行差分操作时,一阶差分是指计算当前观测值与前一个观测值之间的差异。二阶差分则是两次进行一阶差分操作,即计算一阶差分序列的差异。

一阶差分的定义如下:
对于一个时间序列 {x₁, x₂, x₃, ..., xn},一阶差分序列为 {y₁, y₂, y₃, ..., yn-1},其中 yi = xi+1 - xi。

二阶差分的定义如下:
对于一阶差分序列 {y₁, y₂, y₃, ..., yn-1},二阶差分序列为 {z₁, z₂, z₃, ..., yn-2},其中 zi = yi+1 - yi。

通过一阶差分操作,我们可以得到一个新的序列,其每个元素表示该时间步与上一时间步之间的差

差分操作的目的是减少或去除时间序列中的趋势和季节性组成部分,使其更接近平稳时间序列。通过计算当前观测值与先前观测值之间的差异,可以得到一阶差分、二阶差分等。差分操作的效果是消除或减弱时间序列中的趋势和季节性特征,使得序列更趋于平稳。

差分操作的一些常见应用包括:
- 消除时间序列的线性趋势。通过一阶差分可以消除时间序列中的线性趋势,使之更接近平稳时间序列。
- 去除季节性变化。通过对具有季节性的时间序列进行适当的季节差分,可以消除季节性变化,以便更好地分析和建模。
- 改善模型的拟合和预测。对平稳时间序列进行差分操作后,更容易建立准确的模型,并进行更可靠的预测。

在时间序列分析中,差分操作通常与自相关函数(ACF)和偏自相关函数(PACF)分析一起使用,以帮助确定适合的差分阶数和建立合适的模型,这个我会在下面讲到。

当我们对差分有一个详细理解之后,我们来看如何利用python进行差分操作以及,进行差分之后的效果图。

一阶差分,这里的图像可以和上面的处理后的数据图像进行对比。

26003510c24645479faf61cb8a421cab.png

以上的图像就是经过了一阶差分后的图像,可以看出和原始图像相比来说变得更加平稳,如果你看不出来,我们来看二阶差分的图像如下,将会更加明显。

eca26e10e8444dd69d2daacff651eb06.png 我们从二阶差分的图像来看,差分的效果会更加明显。以上就是介绍了一阶差分和二阶差分对于数据的影响以及作用。

自相关和偏自相关图

 当我们对数据进行二阶差分之后,我们就可以来进行自相关和偏相关的分析,以及解决数据滞后性的操作。同样在开始自相关和偏向关分析之前,我们来解释一下自相关和偏向关的定义以及其能够在数据中起到的作用。

自相关函数(ACF)表示一个时间序列与其自身滞后版本之间的相关性。它可以帮助我们确定时间序列是否具有任何明显的自相关模式。通过绘制ACF图表,我们可以观察时间序列在不同滞后阶数下的相关性,并判断是否存在显著的滞后。

偏自相关函数(PACF)则是在考虑了其他滞后阶数的影响后,衡量两个时间序列之间的相关性。PACF提供了直接的滞后阶数(lag)与时间序列之间的部分相关性。通过绘制PACF图表,我们可以识别时间序列的主要滞后阶数,以及建立合适的自回归模型的候选滞后阶数。

ACF和PACF分析可以帮助我们确定适合的差分阶数和建立合适的时间序列模型,本文用到的自回归综合移动平均模型(ARIMA)。通过分析和解释ACF和PACF的图表,我们可以了解时间序列的特征,选择适当的滞后阶数(前面提到过),并构建具有良好拟合和预测性能的模型。下面就是自相关和偏向关的数据分析图。

b39fc5920df747b0b43221e767633459.png

这两个图我们该如何看?

ACF图(左图)的分析:

  1. 纵轴表示相关性的取值范围,通常在-1到1之间。横轴表示滞后阶数(lag)。
  2. 通过观察ACF图中的峰值和曲线趋势,可以判断时间序列是否存在自相关模式。
    • 峰值表示在特定滞后阶数上有显著的相关性。较大的正峰值表明正相关,较大的负峰值表明负相关。
    • 曲线趋势展示了相关性的衰减速度。如果曲线在某个滞后阶数后快速趋近于零,表示相关性衰减得很快,可能可以通过AR模型建模。

PACF图(右图)的分析:

  1. 纵轴表示相关性的取值范围,通常在-1到1之间。横轴表示滞后阶数(lag)。
  2. PACF图是在考虑其他滞后阶数的影响后,衡量两个时间序列之间的部分相关性。
    • 正相关性表示在该滞后阶数上有显著相关性,负相关性也类似。
    • PACF图可以帮助确定适合的滞后阶数,用于构建AR模型的合适候选阶数。

 经过分析我们可以看出数据当中存在明显的周期性以及滞后性,以此我们来选定我们后期训练ARIMA模型的参数(滞后系数等)

ARIMA模型拟合

当我们经过差分操作和相关性分析之后我们就可以进行模型拟合的操作来进行模型的训练操作了,

使用`官方的pyramid-arima`库(也被称为`pmdarima`)中的`auto_arima`函数来拟合一个ARIMA模型,这个函数会自动选择最优的ARIMA模型参数。

在这段代码中,首先使用`auto_arima`函数创建了一个模型。`trace=True`表示在模型训练过程中将打印一些诊断信息,`error_action='ignore'`表示如果在模型训练过程中出现错误,将会忽略它们,`suppress_warnings=True`表示将会抑制所有警告,`seasonal=True`表示模型会考虑季节性因素,`m=7`表示季节性周期为7(例如,如果数据是每天的,那么7就表示一周的周期),`stationary=False`表示原始序列不是平稳的,需要进行差分等操作。

然后,使用`fit`方法将模型拟合到训练数据`train_ds`上。

    model = auto_arima(train_ds, trace=True, error_action='ignore', suppress_warnings=True, seasonal=True, m=7,
                       stationary=False)
    model.fit(train_ds)

预测与模型评估

使用predict方法预测测试数据集test_ds的未来值。n_periods=len(test_ds)参数表示预测的期数,这里设为测试数据集的长度。

然后,您将预测结果转换为一个Pandas DataFrame,以便于后续的操作。

最后,计算了预测结果和真实测试数据之间的均方根误差(Root Mean Squared Error,RMSE)。这是一种常用的预测性能度量,表示预测值和真实值之间的平均平方误差的平方根。在`mean_squared_error(test_ds, forcast)`中,`test_ds`是真实的测试数据,`forcast`是预测结果。

  forcast = model.predict(n_periods=len(test_ds))
    forcast = pd.DataFrame(forcast, index=test_ds.index, columns=['Prediction'])
    rms = sqrt(mean_squared_error(test_ds, forcast))

预测结果可视化

    plt.rcParams['font.sans-serif'] = ['SimHei']
    plt.rcParams['axes.unicode_minus'] = False
    plt.figure(figsize=(15, 7))
    # plt.figure('Forecast')
    plt.title('预测结果,参数:训练开始日期:{0},共{1}天,所占百分比:{2},评估均方根误差:{3}'.format(filterDate, len(train_ds), div_para, rms))
    plt.plot(train_ds, label='Train')
    plt.plot(test_ds, label='Test')
    plt.plot(forcast, label='Prediction')
    plt.legend()
    plt.show()

经过可视化分析操作我们得到ARIMA模型的预测结果,我们可以看出预测结果,其中用于评估的MSE为924。 

c9d7f0be6a654ba3abf4b0490d8f66fa.png

总结

ARIMA模型是一种广泛应用的时间序列预测模型,它结合了自回归(AR)和移动平均(MA)的概念,具有较好的灵活性和准确性。在本篇博客中,我们将深入探讨ARIMA模型的实战应用,并通过Python进行模型的实现和分析。

我们的实战案例基于一组客服接线量的数据。首先,我们对数据进行了详细的探索性分析,以揭示其内在的时间序列特性。对于非平稳的数据,我们使用差分操作使其平稳,以便进行后续的建模和预测。

在模型参数的选择上,我们使用了自相关图(ACF)和偏自相关图(PACF)来帮助确定ARIMA模型的参数。这两个工具可以帮助我们理解数据的自相关性,从而选择最合适的AR和MA参数。

在确定了模型参数后,我们使用Python的statsmodels库实现了ARIMA模型,并进行了训练和预测。。

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

时间序列预测模型实战案例(五)基于双向LSTM横向搭配单向LSTM进行回归问题解决

时间序列预测模型实战案例(四)(Xgboost)(Python)(机器学习)图解机制原理实现时间序列预测和分类(附一键运行代码资源下载和代码讲解)

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

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

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

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

数理统计在数学建模中的核心作用:从数据理解到模型评估 数理统计是数据分析与科学决策的基石,它提供了一套从数据中提取信息、进行推断的理论框架。其核心原理在于通过抽样、估计和假设检验,量化不确定性并揭示数据背后的规律。在技术价值上,统计方法为模型构建提供了严谨的假设检验与评估标准,是确保模型有效性和可靠性的关键。在应用场景中,无论是商业预测、科学研究还是工程优化,扎实的统计基础都能帮助从业者避免常见陷阱,例如在数据预处理阶段忽视异常值,或在模型评估时过度依赖单一指标。本文聚焦于数学建模全流程,深入探讨了如何将描述性统计、推断性统计等关键方法,系统性地应用于问题定义 阅读详情

相关推荐

第69步 时间序列建模实战:ARIMA建模(R)

第69步 时间序列建模实战:ARIMA建模(R)

Jet4505的博客 2965

Python时间序列分析--ARIMA模型实战案例

Python时间序列分析--ARIMA模型实战案例

unique_sir的博客 1万+

第71步 时间序列建模实战:ARIMA建模(Python)

第71步 时间序列建模实战:ARIMA建模(Python)

Jet4505的博客 1191

利用ARIMA模型进行时间序列分析(Python_Statsmodels包)

文章目录1. import 基础库2. 定义数据3. 时间序列的差分 d4. 选择合适的 p, q4.1 检查自相关图(ACF)和偏自相关图(PACF)4.2 模型选择4.3 检验残差序列4.4 观察是否符合正态分布4.5 残差序列Ljung-Box检验,也叫Q检验5. 预测 1. import 基础库 import pandas as pd import numpy as np from scipy import stats import matplotlib.pyplot as plt import

酒酿小圆子呀~ 1万+

基于机器学习的手机类目商品价格预测与波动分析

基于机器学习的手机类目商品价格预测与波动分析,已经成为电商行业的重要实践,未来将呈现以下发展趋势:7.1模型复杂度提升随着大数据和计算能力的不断发展,未来价格预测和波动分析模型将更加复杂,能够捕捉更细致的价格动态特征。深度学习、强化学习等新兴技术将被广泛应用。7.2跨领域融合价格预测和波动分析不仅局限于手机类目,未来将扩展到更多细分行业,并与供应链管理、用户画像等领域深度融合,为企业提供全方位的决策支持。7.3实时性和可解释性提升。

AI天才研究院 2421

【信息科学与工程学】【数据中心】第二十四篇 数据中心DaaS场景及算法

Flink, Kafka Streams, 时序数据库。Flink, Kafka Streams, 流处理引擎。Presto, ClickHouse, 查询加速引擎。Presto, ClickHouse, 查询加速引擎。延迟<50ms,可用性>99.99%,QPS>10K。REST API, GraphQL, API网关。Tableau, Power BI, 自助BI。Tableau, Power BI, 可视化库。Spark, Hadoop, 分布式计算框架。Spark, Hadoop, 分布式计算。

weixin_49199313的博客 1076

时间序列预测实战(九)PyTorch实现LSTM-ARIMA融合移动平均进行长期预测

本文带来的是利用传统时间序列预测模型ARIMA(注意:ARIMA模型不属于机器学习)和利用PyTorch实现深度学习模型LSTM进行融合进行预测,主要思想是->先利用ARIMA先和移动平均结合处理数据的线性部分(例如趋势和季节性),同时利用LSTM捕捉更复杂的非线性模式和长期依赖关系。本文内容包括->讲解LSTM和ARIMA的基本原理、融合的主要思想和依据、模型实战所用数据集介绍 、模型的参数讲解、模型的训练、结果展示、结果分析、以及如何训练你个人数据集。代码地址->适用对象->想要进行长期预测(模型的长期

Snu77的博客 1万+

【信息科学与工程学】【管理科学】第三十篇 公司治理及公司工作内容08 信息安全与IT类

确定功能单位、系统边界、影响类型。2.

weixin_49199313的博客 477

时间序列预测专栏目录 | 深度学习、机器学习、融合模型、创新模型实战案例(附代码+数据集+原理介绍)

给大家推荐一下我的时间序列预测专栏,本专栏平均质量分98分,而且本专栏目前免费阅读,其中涉及机器学习、深度学习、融合模型、个人创新模型、数据分析等一系列有关时间序列的专栏,其中的实战的案例不仅有简单的模型类似于机器学习的ARIMA、Xgboost也有复杂的类似于深度学习的TPA-LSTM,还有个人创新的模型堆叠CNN-GRU-LSTM,同时本专栏的实战案例后期会持续的进行更新,复现各种最新的时间序列预测模型。时间序列预测的初学者、时间序列预测的工作者、数据分析的初学者。

Snu77的博客 1万+

【信息科学与工程学】【通信工程】第十八篇 企业网、园区网、数据中心、广域网各类业务网络02

模型类别基本假设网络表示耦合函数渗透方程临界条件物理意义一对一依赖​每个交通节点与一个通信节点相互依赖双层网络:交通层G_T=(V_T,E_T),通信层G_C=(V_C,E_C),层间一一对应边E_I依赖函数:RT​=fT​(RC​,p),RC​=fC​(RT​,p)自洽方程: RT​=p[1−GT​0(1−RT​)][1−GC​0(1−RC​)] RC​=p[1−GC​0(1−RC​)][1−GT​0(1−RT​)]pc​=⟨kT2​⟩⟨kC2​⟩​1​ ⟨k²⟩=⟨k(k-1)⟩对称耦

weixin_49199313的博客 1143

通达信波段交易公式实战:如何用副图指标精准捕捉买卖点(附完整源码)

本文深入解析通达信波段交易副图指标的构建与应用,提供完整源码实现,帮助投资者精准捕捉买卖点。通过趋势强度度量、超买超卖判断及信号过滤机制,结合K线图分析,有效提升波段交易的成功率。

weixin_29306317的博客 610

预测模型实战指南:从时间序列到机器学习,构建数据驱动的决策框架

预测模型是数据科学和商业分析中的核心工具,它通过数学和算法揭示历史数据与未来趋势之间的映射关系。其基本原理是利用统计学习或机器学习方法,从已知数据中识别模式,从而对未知结果进行量化推断。这类模型的技术价值在于将决策从依赖主观经验转向客观、可复现的数据驱动范式,显著提升了决策的准确性和可解释性。在应用场景上,预测模型广泛应用于销售预测、需求规划、风险评估和趋势分析等领域。本文聚焦于预测类模型的工程实践,深入探讨了时间序列分析、因果推断模型以及以随机森林和XGBoost为代表的机器学习算法,旨在帮助读者掌握从问

weixin_30363981的博客 452

群晖NAS下docker安装MySql

本文将一步一步讲解如何在群晖NAS的docker中启用一个MySQL容器 , 算是初学者对问题解决的一个记录.

qq_46375248的博客 5978

【预测未来 】MATLAB实现RF随机森林多变量时间序列预测未来-预测新数据

时间序列预测是诸多领域的核心问题,从金融市场预测到气候变化模拟,都依赖于准确预测未来趋势的能力。多变量时间序列预测,即同时考虑多个相关变量对目标变量的影响,更是提高预测精度、捕捉复杂系统动态的关键。本文将深入探讨利用MATLAB平台实现随机森林(Random Forest, RF)算法进行多变量时间序列预测的方法,并重点阐述如何利用训练好的模型对新数据进行预测,从而实现对未来的预测。传统的单变量时间序列预测方法,例如ARIMA模型,在处理多变量、非线性关系时往往力不从心。

j_jinger的博客 1013

深入解析ffmpeg编码错误:avcodec_send_frame()返回-22的排查与修复

本文深入解析FFmpeg编码中avcodec_send_frame()返回-22(AVERROR(EINVAL))错误的根本原因与系统排查方法。核心问题通常在于编码器未正确打开或上下文传递错误。文章提供了从检查编码器查找、确认avcodec_open2()调用,到验证上下文传递的完整修复指南,并附有可运行的代码示例,帮助开发者快速定位并解决这一常见编码障碍。

weixin_28049429的博客 390

34、高效探索柔性蛋白质环构象空间的算法

本文介绍了一种高效探索柔性蛋白质环构象空间的算法,通过种子采样和变形采样两种技术,同时满足运动学闭合和避免空间位阻冲突的约束条件。种子采样能够在闭合无冲突构象空间中广泛生成构象,而变形采样则可以对“有趣”区域进行更密集的探索。实验结果表明,这两种方法在不同大小和受限程度的蛋白质环上均表现出色,运行时间在可接受范围内。相关算法已集成到工具包LoopTK中,可在https://simtk.org/home/looptk获取。

moon9的博客 128

数学建模竞赛核心题型解析:从优化、评价到数据挖掘的备赛指南

数学建模是将现实问题抽象为数学语言,通过算法求解以支持决策的核心方法。其基本原理在于利用数学工具描述系统机理或数据规律,技术价值体现在培养解决复杂实际问题的综合能力。在工程实践与科学研究中,数学建模广泛应用于资源调度、趋势预测、系统仿真与数据挖掘等场景。本文聚焦于高教杯数学建模竞赛,系统梳理了优化类、评价与预测类、机理分析类及数据挖掘类等经典赛题类型。通过剖析公交车调度、艾滋病疗法评价、SARS传播等历年真题,深入解读了线性规划、时间序列、微分方程及机器学习等关键技术的应用,为参赛者构建清晰的备赛知识框架与

congsikuai0611的博客 357

【嘉立创EDA】PCB金属包边设计快捷方法

本文使用嘉立创EDA,描述如何在PCB设计时,快速增加边框包边设计,特别是金属包边(伪)——这里标记(伪)是因为该这里的包边特指不含边缘壁。请参考本文时特别注意!本文将此过程记录,以供有需要的读者参考。

l64481000的博客 1746

利用ARIMA模型对时间序列进行分析的经典案例(详细代码)

因为之前在学数据分析课程的时候老师讲到时间序列这里,但只是简单的对这个经典的时间序列案例介绍了一下,并没有涉及对差分次数d的查找、找ARIMA模型的p、q值和模型检验 这三个步骤。 后来我搜寻了整个网络,终于结合各个文章的解释,对代码进行了重新的梳理,下面就是详细的整个代码过程(如果问题,欢迎提出来指正!????): # -*- coding: utf-8 -*- # 用 ARIMA 进行时间序列预测 ...

小白的编码屋 4万+

深度探索:VS2022 牵手 DeepSeek,开启开发新征程

通过将 VS2022 与 DeepSeek 接入,我们成功开启了智能开发的新征程。从前期的硬件准备、软件环境搭建,到实战环节的一步步配置与整合,再到全面的测试与验证,每一个步骤都充满挑战,但也带来了满满的收获。在实际应用中,VS2022 与 DeepSeek 的结合展现出了强大的优势,为开发者带来了更高的效率和更出色的代码质量。无论是代码自动补全、智能代码审查,还是自然语言交互编程,都让开发过程变得更加智能、便捷,极大地提升了开发体验。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 3524

python实现带符号的二进制数转换十进制数 (附完整源码)

python实现带符号的二进制数转换十进制数 (附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 556

时间序列研(part12)--习题

学习笔记,仅供参考,有错必究 文章目录时间序列习题ARIMA模型案例分析案例1:中国人口时间序列模型案例2: 中国粮食产量序列(yty_tyt​)的MA模型案例3: 日本人口时间序列模型 时间序列习题 ARIMA模型案例分析 案例分析将涉及如下若干内容: ( 1 )对数据的统计分析; ( 2 )模型的选择和估计过程; ( 3 ) 3 个检验标准; ( 4 )怎样写表达式; ( 5 )模型参数的经济含义解释; ( 6 )预测(动态、静态、结构非结构) 案例1:中国人口时间序列模型 下面通过对人口序

小山羊的学习日志 1417

字节最新开源模型 DA3(Depth Anything 3)使用教程(一)从任意视角恢复视觉空间

本文介绍DepthAnything3(DA3)模型,一种能够从任意视觉输入中预测几何结构的创新解决方案。DA3采用Transformer骨干网络,通过统一的深度光线表示简化学习过程,支持单目/多视角深度估计、姿态估计和3D高斯预测等多项任务。模型系列包含基础版、度量级和单目专用版本,其中嵌套版本DA3NESTED-GIANT-LARGE表现最佳。代码库提供交互界面、CLI工具和多格式导出功能,支持模块化扩展。实验表明DA3在各项任务上超越现有模型,所有训练数据均来自公开学术数据集。

2506_90492529的博客 2549
上一篇: 利用恒源云在云端租用GPU服务器训练YOLOv8模型(包括Linux系统命令讲解)
下一篇: 结合自身经历展望未来一二线城市IT行业哪个方向比较好就业
Snu77
Snu77 优质创作者: 人工智能技术领域 优质创作者: 人工智能技术领域
博客等级 码龄5年 11万+粉丝 934原创
评论 7
成就一亿技术人!
拼手气红包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、付费专栏及课程。

余额充值