《python数据分析及其在水利工程中的应用》课件-30时间序列预测模型 (Prophet)_第1页
《python数据分析及其在水利工程中的应用》课件-30时间序列预测模型 (Prophet)_第2页
《python数据分析及其在水利工程中的应用》课件-30时间序列预测模型 (Prophet)_第3页
《python数据分析及其在水利工程中的应用》课件-30时间序列预测模型 (Prophet)_第4页
《python数据分析及其在水利工程中的应用》课件-30时间序列预测模型 (Prophet)_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

时光先知时间序列预测模型(Prophet)TimeSeriesPredictionModel(Prophet)本升级任务的主线任务是什么Whatisthemaintaskofthisupgrademission⻓⽼的指引—智水长老知过去,

晓现在,更需测未来。运⽤机器学习之神⼒

,预测⽔情变化,

⽅能决胜千⾥

。升级任务:预测未来TheprogressoftheUpgradetask当前任务任务:时光先知-时间序列预测模型(Prophet)进行中>>>任务:森林智慧-随机森林回归模型任务:精准考量-模型评估(RMSE与交叉验证)后续任务待解锁完成本任务,成为【测⽔师】!本课件的⼦任务是什么Whatarethesub-tasksofthiscourseware任务⽬标了解Prophet库的基本概念、特点及其在时间序列预测中的应⽤学会使⽤Prophet对温度数据进⾏预处理、模型训练、未来值预测对预测结果进⾏可视化与解读01第一节认识Prophet模型GettoknowtheProphetmodel什么是时间序列预测?Whatistimeseriesprediction?时间序列预测的定义在数据分析中,

时间序列预测是根据历史数据来预测未来值的过程。为什么选择Prophet?WhychooseProphet?易⽤性Prophet提供了⾮常简洁易懂的API(应⽤程序编程接⼝),即使是初学者也能快速上⼿,构建出可靠的预测模型。你不需要深⼊了解复杂的统计学模型细节。⾃动处理季节性许多时间序列数据(如温度、销售额)都具有明显的季节性规律,

⽐如年度周期(夏季温度⾼)、周周期(周末⽤⽔量变化)。Prophet能够⾃动检

测并拟合这些多种季节性模式。Prophet是Facebook开源的—款专⻔⽤于时间序列预测的⼯具库,

它具有以下特点:Prophet的更多优点MoreadvantagesofProphet1处理缺失值和异常值真实数据往往不完美,可能存在数据缺失或异常突变的情况Prophet对于这些问题具有较

好的鲁棒性,能够相对平稳地处理它们,⽽不

会导致模型完全失效。2可解释性Prophet不仅给出预测结果,还能将预测分解为趋势(trend)、季节性(seasonality)和节假⽇效应(holidays)等组成部分。这种分解有助于我们理解数据变化的驱动因素,让模型不再是一个"⿊箱"。3处理趋势变化时间序列的⻓期趋势并⾮一成不变。Prophet能够⾃动检测趋势中的转折点(changepoints),并对趋势进⾏分段拟合,从⽽更好地适应数据的动态变化。02第二节使⽤Prophet进⾏时间序列预测UseProphetfortimeseriesprediction预测步骤概览Overviewofthepredictionsteps使⽤Prophet进⾏时间序列预测通常遵循以下步骤:1导⼊所需库:主要是pandas⽤于数据处理,prophet⽤于建模,matplotlib⽤于绘图。3数据预处理:将⽇期列转换为Prophet要求的datetime格式,并将列名重命名为'ds'(⽇期)和'y'(待预测值)。5创建未来⽇期并预测:⽣成⼀个包含未来⽇期的数据框,然后使⽤训练好的模型进⾏预测。2加载和检查数据:读取包含⽇期和待预测值的数据,并确保关键列存在。4初始化和训练模型:创建Prophet模型实例,并使⽤历史数据对其进⾏训练(拟合)。6结果输出与可视化:查看预测结果,并通过图表直观展示预测效果。导⼊库与加载数据Importlibrariesandloaddataimport

pandas

as

pdfrom

prophet

import

Prophetimport

matplotlib.pyplot

as

pltimport

numpy

as

np#

1.加载数据try:df=pd.read_excel("data.xlsx")print("成功加载data.xlsx⽂件!")exceptFileNotFoundError:print("错误:找不到data.xlsx⽂件!

请确保⽂件在当前⽬录下。

")exit()#

2.检查必要的列if

IDate

Inotin

df.columns

or

ITemperature(℃)I

not

in

df.columns:print("错误:

Excel⽂件中缺少必要的列(IDateI或ITemperature(℃)I)。请检查列名是否正确。

")exit()数据预处理Datapreprocessing#

3.数据预处理#将

IDateI列转换为datetime

类型#并重命名列以兼容Prophetdf

[

'Date']=

pd.to_datetime(df

[

'Date'],format=

'%Y-%m-%d%H:%M:%S')df=

df.rename(columns={

'Date':

'ds',

'Temperature(℃)':

'y'})#查看处理后的数据前⼏⾏print("处理后的数据前5⾏

:")print(df.head())Prophet对输⼊数据的格式有特定要求:Prophet数据格式要求输⼊的数据框(DataFrame)必须包含⾄少两列:ds和yds(datestamp)列:

包含⽇期或⽇期时间信息,其类型必须是Pandas的datetime类型y(value)列:

包含我们需要预测的数值型数据Prophet模型要求数据采⽤特定的格式,包括对列名的特殊要求。通过这种标准化预处理,我们确保数据与Prophet的接⼝规范匹配,从⽽能够成功训练模型。为什么需要预处理?数据预处理Datapreprocessing#

3.数据预处理#将

IDateI列转换为datetime

类型#并重命名列以兼容Prophetdf

[

'Date']=

pd.to_datetime(df

[

'Date'],format=

'%Y-%m-%d%H:%M:%S')df=

df.rename(columns={

'Date':

'ds',

'Temperature(℃)':

'y'})#查看处理后的数据前⼏⾏print("处理后的数据前5⾏

:")print(df.head())Prophet对输⼊数据的格式有特定要求:Prophet数据格式要求输⼊的数据框(DataFrame)必须包含⾄少两列:ds和yds(datestamp)列:

包含⽇期或⽇期时间信息,其类型必须是Pandas的datetime类型y(value)列:

包含我们需要预测的数值型数据Prophet模型要求数据采⽤特定的格式,包括对列名的特殊要求。通过这种标准化预处理,我们确保数据与Prophet的接⼝规范匹配,从⽽能够成功训练模型。为什么需要预处理?初始化和训练Prophet模型InitializeandtraintheProphetmodel训练过程解析当我们调⽤model.fit(df)时,Prophet会执⾏以下操作:1.分析输⼊的时间序列数据2.检测时间序列的主要趋势3.识别数据中的季节性模式(如果存在)4.估计模型的各种参数5.构建完整的时间序列预测模型#4.初始化和训练Prophet

模型#在创建Prophet实例时,

可以传⼊多种参数来调整模型的⾏为#growth指定增⻓模式,默认是

Ilinear

I#changepoints

⾃定义趋势变化点的⽇期列表#n_changepoints潜在变化点的数量#yearly_seasonality

⾃动检测年度季节性#weekly_seasonality

⾃动检测周季节性#daily_seasonality

⾃动检测⽇内季节性model=

Prophet()model.fit(df)print("模型训练完成!

")模型初始化与训练创建未来⽇期⽤于预测Createfuturedatesforprediction使⽤Prophet提供的⽅法#5.创建未来⽇期⽤于预测⽣成未来⽇期#替代⽅式:使⽤Prophet的内置⽅法future_df=model.make_future_dataframe(periods=365*3)#创建未来时间戳future_dates=pd.date_range(start=last_date+pd.Timedelta(days=5),periods=365*3,freq=

IDI)future_df=pd.DataFrame({

IdsI:

future_dates})#获取训练数据中最后的⽇期last_date=

df

[

IdsI].max()#两种⽅法的区别:#1.

⾃定义⽅法让我们可以控制起始⽇期#2.Prophet⽅法会包含历史⽇期和未来⽇期#从最后⽇期后5天开始,⽣成3年(

365*3)

的⽇期预测未来值并输出Predictfuturevaluesandoutputthemds:预测日期yhat:预测值yhat_lower:预测区间下限yhat_upper:预测区间上限#

6.预测未来值forecast=model.predict(future_df)预测未来值并输出Predictfuturevaluesandoutputthemds:预测日期yhat:预测值yhat_lower:预测区间下限yhat_upper:预测区间上限#

6.预测未来值forecast=model.predict(future_df)预测未来值并输出Predictfuturevaluesandoutputthem#

6.预测未来值forecast=model.predict(future_df)预测结果#7.

输出预测结果forecast_df_output=forecast

[

[

IdsI,

IyhatI]].rename(columns={IyhatI:

I

PredictedTemperature(℃)I})print("未来预测结果:")print(forecast_df_output.head())可视化预测结果Visualpredictionresults#

8.绘制结果plt.figure(figsize=(10,6))将预测结果可视化是理解模型表现的重要—步。我们可以使⽤Matplotlib来绘制图表。#设置标签和标题plt.xlabel(

IDateI)plt.ylabel(

ITemperature

(°C)I)plt.title(

ITemperature

Prediction

using

Prophet

I)plt.legend()#绘制实际数据plt.plot(df

[

IdsI],df

[

IyI],

label=

IObserved

I,color=

Iblue

I)#绘制预测结果,

包括预测区间plt.plot(forecast

[

IdsI],forecast

[

IyhatI],label=

I

Predicted

I,color=

IredI)#绘制不确定性区间plt.fill_between(forecast

[

IdsI],forecast

[

Iyhat_lower

I],forecast

[

Iyhat_

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论