Python数据分析案例11——灰色预测法预测时间序列数据

这篇具有很好参考价值的文章主要介绍了Python数据分析案例11——灰色预测法预测时间序列数据。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本次案例来自2022华为杯第E题,第2小问。给定了2012.01-2022.03的土壤湿度的月度数据,需要预测2022.04-2023.12的土壤湿度的月度数据。典型的时间序列预测。

传统的时间序列预测肯定是ARIMA模型,可以参考我之前的文章。Python统计学10——时间序列分析自回归模型(ARIMA)

现在流行的方法肯定是深度学习的循环神经网络(RNN,LSTM,GRU),也可以参考我这篇文章。

Python深度学习05——Keras循环神经网络实现股价预测


本次我们要用的是一种比较数学的方法,灰色预测法。

灰色预测法是一种对含有不确定因素的系统进行预测的方法。在建立灰色预测模型之前,需先对原始时间序列进行数据处理,经过数据处理后的时间序列即称为生成列。灰色系统常用的数据处理方式有累加和累减两种。
灰色预测是以灰色模型为基础的,在众多的灰色模型中,GM(1,1)模型最为常用。

原理公式就不介绍了。

灰色预测法的通用性较强,一般的时间序列场合都适用,尤其适合那些规律性差且不清楚数据产生机理的情况。灰色预测模型的优点是预测精度高、模型可检验、参数估计方法简单、对小数据集有很好的预测效果;缺点是对原始数据序列的光滑度要求很高,在原始数据列光滑性较差的情况下灰色预测模型的预测精度不高,甚至通不过检验。


认识数据

首先我们对问题要有清晰的认识。预测无非就是给一些数据,然后需要预测其他的一些数据,题目给的数据大概是这样的:

Python数据分析案例11——灰色预测法预测时间序列数据

给定了2012.01-2022.03的土壤湿度的月度数据,需要预测2022.04-2023.12的土壤湿度的月度数据。

需要这代码演示数据的同学可以参考:数据

 下面使用Python读取:

导入包:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt 

plt.rcParams ['font.sans-serif'] ='SimHei'               #显示中文
plt.rcParams ['axes.unicode_minus']=False                #显示负号

读取数据,将前两列——年份和月份解析为时间,然后对时间索引进行排序,画折线图:

土壤湿度=pd.read_csv('土壤湿度.csv',parse_dates={'时间':[0,1]})
土壤湿度=土壤湿度.set_index('时间').sort_index()
土壤湿度.plot(figsize=(10,4))

Python数据分析案例11——灰色预测法预测时间序列数据

 这就是初始数据,从2012.01-2022.03的土壤湿度的月度数据,需要预测2022.04-2023.12的土壤湿度数据。


灰色预测

定义灰色预测函数:

def GM11(x0): #自定义灰色预测函数
    x1 = x0.cumsum() #1-AGO序列
    z1 = (x1[:len(x1)-1] + x1[1:])/2.0 #紧邻均值(MEAN)生成序列
    z1 = z1.reshape((len(z1),1))
    B = np.append(-z1, np.ones_like(z1), axis = 1)
    Yn = x0[1:].reshape((len(x0)-1, 1))
    [[a],[b]] = np.dot(np.dot(np.linalg.inv(np.dot(B.T, B)), B.T), Yn) #计算参数
    f = lambda k: (x0[0]-b/a)*np.exp(-a*(k-1))-(x0[0]-b/a)*np.exp(-a*(k-2)) #还原值
    delta = np.abs(x0 - np.array([f(i) for i in range(1,len(x0)+1)]))
    C = delta.std()/x0.std()
    P = 1.0*(np.abs(delta - delta.mean()) < 0.6745*x0.std()).sum()/len(x0)
    return f, a, b, x0[0], C, P #返回灰色预测函数、a、b、首项、方差比、小残差概率

其实不理解原理也没什么,就按照我下面的流程用就行。

准备数据的值和时间索引:

new_reg_data = 土壤湿度.iloc[:,-4:]    #取最后4列,即自己需要预测的四个变量
new_reg_data.index = pd.to_datetime(土壤湿度.index)  #将原始数据的索引变为时间类型

 查看现在的数据:

new_reg_data

 Python数据分析案例11——灰色预测法预测时间序列数据

 可以看到时间,现在是123条。

由于需要预测2022.04-2023.12期间的四个变量,我们先要定义一个时间索引,一个月份一个月份的去预测。然后对每个变量进行循环,即每个变量都去拟合一个新的灰色预测函数。在每个月度预测完了后就给这一行赋值。这样能保证上一个预测值可以加入下一轮的预测里面。

index=pd.Series(pd.date_range('2022-04','2024-1',freq='M')).astype('datetime64[M]')

for i,ind in enumerate(index):
    pred=[]
    for c in new_reg_data.columns:
        f = GM11(new_reg_data.loc[:,c].values)[0]
        pred.append(f(1+len(new_reg_data)))
        
    new_reg_data.loc[ind,:] = np.array(pred)

查看结果:

new_reg_data

Python数据分析案例11——灰色预测法预测时间序列数据

 可以看到时间,现在是144条。

画图看拟合效果:

new_reg_data.plot(figsize=(10,4),title='预测的土壤湿度')
#plt.savefig('第二问的预测结果.jpg',dpi=128)

Python数据分析案例11——灰色预测法预测时间序列数据

 emmmm,效果一般般,虽然预测出来的不是常数,但是预测的值也比较平滑。这也是灰色预测的一个特点。

当然建模比赛不会只用这么简单的模型....那肯定是神经网络什么的都往上整了,不过由于这个题目的数据量小,神经网络不太合适。灰色预测适合小数据集,该案例算是提供一个新的时间序列预测的思路吧


创作不易,看官觉得写得还不错的话点个关注和赞吧,本人会持续更新python数据分析领域的代码文章~(需要定制代码可私信)文章来源地址https://www.toymoban.com/news/detail-460755.html

到了这里,关于Python数据分析案例11——灰色预测法预测时间序列数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【视频】Python用LSTM长短期记忆神经网络对不稳定降雨量时间序列进行预测分析|数据分享...

    在本文中,长短期记忆网络——通常称为“LSTM”——是一种特殊的RNN递归神经网络,能够学习长期依赖关系 ( 点击文末“阅读原文”获取完整 代码数据 ) 。 视频:LSTM 神经网络架构和工作原理及其在Python中的预测应用 什么是依赖关系? 假设您在观看视频时记得前一个场

    2024年02月11日
    浏览(21)
  • 数据分析实战│时间序列预测

    时间序列预测问题是一类常见的数据分析问题。数据中往往包含时间标签,这类问题往往根据过去一段时间的数据,建立能够比较精确地反映序列中所包含的动态依存关系的数学模型,并对未来的数据进行预测。 本案例给出二战时期的某气象站温度记录值,通过分析之前的天

    2024年02月11日
    浏览(26)
  • Python数据分析案例36——基于神经网络的AQI多步预测(空气质量预测)

    不知道大家发现了没,现在的神经网络做时间序列的预测都是单步预测,即(需要使用X的t-n期到X的t-1期的数据去预测X的t期的数据),这种预测只能预测一个点,我需要预测X的t+1期的数据就没办法了,有的同学说可以把预测的结果X的t+1拿进来作为新的x去预测。。。我只能说这

    2024年01月19日
    浏览(24)
  • Python数据分析案例25——海上风力发电预测(多变量循环神经网络)

     本案例适合理工科。 承接上一篇的硬核案例:Python数据分析案例24——基于深度学习的锂电池寿命预测 本次案例类似,只是进一步拓展了时间序列预测到多变量的情况。上一个案例的时间序列都是只有电池容量一个特征变量,现在采用多个变量进行神经网络模型的构建。

    2024年02月04日
    浏览(19)
  • 计算机竞赛 基于大数据的时间序列股价预测分析与可视化 - lstm

    🔥 优质竞赛项目系列,今天要分享的是 🚩 毕业设计 大数据时间序列股价预测分析系统 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分 工作量:3分 创新点:3分 🧿 更多资料, 项目分享: https://gite

    2024年02月11日
    浏览(23)
  • 互联网加竞赛 基于大数据的时间序列股价预测分析与可视化 - lstm

    🔥 优质竞赛项目系列,今天要分享的是 🚩 毕业设计 大数据时间序列股价预测分析系统 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分 工作量:3分 创新点:3分 🧿 更多资料, 项目分享: https://gite

    2024年01月15日
    浏览(32)
  • 【大数据基础】淘宝双11数据分析与预测

    https://dblab.xmu.edu.cn/post/8116/ 问题1 mysql登录需要密码 https://cloud.tencent.com/developer/beta/article/1142525 这个很神奇,我密码输1就进去了 为避免出问题,把解决方案放这里: https://blog.csdn.net/qq_34771403/article/details/73927962 问题2 sqoop测试与mysql连接报错 https://blog.csdn.net/weixin_47580081/artic

    2024年02月07日
    浏览(30)
  • 数据分析与数据挖掘实战案例本地房价预测(716):

    2022 年首届钉钉杯大学生大数据挑战赛练习题目 练习题 A:二手房房价分析与预测 要点: 1、机器学习 2、数据挖掘 3、数据清洗、分析、pyeahcrs可视化 4、随机森林回归预测模型预测房价 1、读入数据、清洗数据: 2、解决相关问题: (一) 根据附件中的数据集,将二手房数据

    2024年02月07日
    浏览(30)
  • ARIMA模型时间序列数据分析(附python代码)

    ARIMA模型建模流程  1 )平稳性检验与差分处理 我们选取原始数据 bus 中的“ prf_get_person_count ”列,并截取前 32 个站点的数据进行平稳性检验,这里采用的是 ADF 检验确定数据的平稳性,导入 statsmodels 包下的 adfuller 函数,该函数返回 adf 值与概率 p 值。若原始序列不平稳,就

    2024年02月01日
    浏览(34)
  • 大数据分析案例-基于XGBoost算法预测航空机票价格

    🤵‍♂️ 个人主页:@艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞👍🏻 收藏 📂加关注+ 喜欢大数据分析项目的小伙伴,希望可以多多支持该系列的其他文章 大数据分析案例合集

    2023年04月08日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包