千家信息网

如何使用python实现时间序列预测中的数据滑窗操作

发表于:2025-11-15 作者:千家信息网编辑
千家信息网最后更新 2025年11月15日,这篇文章主要为大家展示了"如何使用python实现时间序列预测中的数据滑窗操作",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"如何使用python实现时间序
千家信息网最后更新 2025年11月15日如何使用python实现时间序列预测中的数据滑窗操作

这篇文章主要为大家展示了"如何使用python实现时间序列预测中的数据滑窗操作",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"如何使用python实现时间序列预测中的数据滑窗操作"这篇文章吧。

撰写背景

面向数据分析的小白,水平有限,错误难免,欢迎指正。

什么是数据滑窗

进行机器学习时,一般都要涉及到划分训练集和测试集的步骤。特别地,在做数据预测时,一般把预测的依据(也就是历史数据)称作X,把需要预测的数据称为y。即首先把原始数据划分为train_X, train_y这两个训练数据集和test_X, test_y这两个测试数据集。

对于时间序列数据的预测,往往是建立由好几个历史数据预测下一时刻的未来数据,这时候为了充分利用全部数据,应该对原始数据集进行滑窗操作,如下图所示。

这里展示的是多个特征的时间序列,其中每一行数据均属于同一时刻。假设,我们要以H( humidity)、PT(pressure)、PE(power)三个特征为预测依据,取当前和上三个时刻共四个时刻的已知数据对下一时刻的PE(功率)进行预测,那么对于X数据集的滑窗就应该如上图所示,而对y数据集的滑窗应该如下图所示。

下面给出滑窗实例。

代码实现

滑窗函数

def sliding_window(DataSet, X_width, y_width, gap = 1, multi_vector = None, X_data = True):    '''    DataSet has to be as a DataFrame    '''    if X_data:        if multi_vector:            a,b = DataSet.shape        else:            a = DataSet.shape[0]            b = 1        c = (a-X_width-y_width-a%gap)/gap        X = np.reshape(DataSet.iloc[0:X_width,:].values,(1,X_width,b))        for i in range(len(DataSet) - X_width - y_width):            i += 1            if i > c:                break            j = i * gap            tmp = DataSet.iloc[j:j + X_width,:].values            tmp = np.reshape(tmp,(1,X_width,b))            X = np.concatenate([X,tmp],0)        return X    else:        if multi_vector:            print('y_data-error:expect 1D ,given %dD'%DataSet.shape[1])            return;        else:            a = DataSet.shape[0]        c = (a-X_width-y_width-a%gap)/gap        y = np.reshape(DataSet.iloc[X_width:X_width + y_width,0].values,(1,y_width))        for i in range(len(DataSet) - X_width - y_width):            i += 1            if i > c:                break            j = i * gap + X_width            tmp = DataSet.iloc[j:j + y_width,:].values            tmp = np.reshape(tmp,(1,y_width))            y = np.concatenate([y,tmp])        return y

单特征时间序列

单特征时间序列是指仅有一个特征的一维时间序列,如股票收盘价、风电场风速数据、日营业额等。对单特征时间序列滑窗操作如下:

#DataSet训练数据集#X_width使用的历史数据长度#y_width要预测的数据长度#X_data是否是X数据集train_X = sliding_window(DataSet, X_width, y_width)train_y = sliding_window(DataSet, X_width, y_width, X_data = None)

假设训练数据集是一个100*1的序列,使用24个数据预测未来的1个数据,那么滑窗操作就将原数据做了这样的变换:

多特征时间序列

多特征时间序列指时间序列的特征不止一个,如上文所举的H、PT、PE三特征序列。这种数据一般使用在待预测的数据跟多个特征相关性较高的场合中,如气象数据嵌入的风速预测、股市数据嵌入的收盘价格预测等。进行多特征时间序列滑窗操作如下:

#DataSet训练数据集#X_width使用的历史数据长度#y_width要预测的数据长度#multi_vector是否为多特征#X_data是否是X数据集train_X = sliding_window(DataSet, X_width, y_width, multi_vector = True)test_y = sliding_window(DataSet, X_width, y_width, multi_vector = True, X_data = None)

假设训练数据集是一个100*3的序列,使用24个数据预测未来的1个数据,那么滑窗操作就将原数据做了这样的变换:

注意事项

DataSet必须是DataFrame格式。

y数据集只能是一维。

以上是"如何使用python实现时间序列预测中的数据滑窗操作"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

数据 序列 时间 时间序列 特征 训练 时刻 历史 历史数据 长度 多特 内容 篇文章 学习 原始 三个 两个 多个 风速 一维 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 学校数据库营销 打印服务器架设 万网 dns服务器 深圳停车系统软件开发服务 网络安全等保测评服务要求 千信一航宁夏网络技术 在数据库中怎么修改索引名 山西多功能软件开发费用 搜索关于网络安全的那个手抄报 换路由器后连不上服务器 光纤最新网络技术 网络安全反向装置都是百兆吗 华为手机云服务器怎么关闭 网络安全法规定国家实行什么 海康服务器默认管理口密码 海淀区深信服数据库安全审计 计算机做软件开发的有前途吗 如何把路由器改为无线打印服务器 服务器安全证书下载 收到联通短信网络安全法 深圳百度互联网科技有限公司 胡啸 网络安全大会讲话 福建省全国网络安全比赛 梦幻手游找不到端游的服务器 在页面中查数据库做下拉框 亚信的网络安全开发 vbs下连接数据库 splunk软件开发面试 乐山软件开发工资多少 数据库怎么查询不同姓名
0