FateMurphy / CEEMDAN_LSTM

CEEMDAN_LSTM is a Python project for decomposition-integration forecasting models based on EMD methods and LSTM.
MIT License
217 stars 42 forks source link

您好,看了您的程序,感觉非常好,有几点问题想问您一下。 #19

Open HeLloZhengXr opened 10 months ago

HeLloZhengXr commented 10 months ago

(1)我的数据只有,时间一列,数值一列。该方法的预测可以使用吗? 在数据的选取中只需选择数值一列,那预测的数据是怎么跟时间联系起来的,代码中哪里是体现的?。 (2)如果我想预测未来10天的,是否可以先将DAY_AHEAD设置为1,然后预测完数据后,将该数据增加进我的数据列表,然后重新预测,重复该操作10次? 还是说可以将DAY_AHEAD设置为1,记录一下数据,将DAY_AHEAD设置为2,记录一下数据。

FateMurphy commented 10 months ago

感谢你的来信。 1、可以。这一列数据需要按时间排序。 2、1-10重复10次。但是越往后越不准。不建议

Regards, Feite ZHOU, @.***

------------------ 原始邮件 ------------------ 发件人: Zheng Xinrong @.> 发送时间: 2023年11月12日 15:17 收件人: FateMurphy/CEEMDAN_LSTM @.> 抄送: Subscribed @.***> 主题: Re: [FateMurphy/CEEMDAN_LSTM] 您好,看了您的程序,感觉非常好,有几点问题想问您一下。 (Issue #19)

(1)我的数据只有,时间一列,数值一列。该方法的预测可以使用吗? 在数据的选取中只需选择数值一列,那预测的数据是怎么跟时间联系起来的,代码中哪里是体现的?。 (2)如果我想预测未来10天的,是否可以先将DAY_AHEAD设置为1,然后预测完数据后,将该数据增加进我的数据列表,然后重新预测,重复该操作10次? 还是说可以将DAY_AHEAD设置为1,记录一下数据,将DAY_AHEAD设置为2,记录一下数据。

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you are subscribed to this thread.Message ID: @.***>

HeLloZhengXr commented 10 months ago

收到您的回复特别开心,再次感谢您的解答,还有一个问题想要请教您,使用模型训练和模型预测的总的数据集,我从哪里可以看到?路径下生成的有.h5文件,这个文件是用来干什么的?

FateMurphy commented 10 months ago

数据集你可以参考dataset文件夹中的,h5文件保存的是模型。

 

------------------ 原始邮件 ------------------ 发件人: "FateMurphy/CEEMDAN_LSTM" @.>; 发送时间: 2023年11月12日(星期天) 下午4:53 @.>; @.**@.>; 主题: Re: [FateMurphy/CEEMDAN_LSTM] 您好,看了您的程序,感觉非常好,有几点问题想问您一下。 (Issue #19)

收到您的回复特别开心,再次感谢您的解答,还有一个问题想要请教您,使用模型训练和模型预测的总的数据集,我从哪里可以看到?路径下生成的有.h5文件,这个文件是用来干什么的?

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>

HeLloZhengXr commented 10 months ago

非常感谢您的回答。 我想我可能没表述清楚。我现有原始数据集,假设是2006年1月1日至2023年11月11日的每日平均气温数据,如果我选择FORECAST_HORIZONS=15,FORECAST_LENGTH=15, 通过您的模型计算的话,那么训练集是哪些数据,测试集是哪些数据呢?我怎么判断数据训练的结果好坏呢?我只看到了有几个评判指标,但我想获取经过训练后的模型和测试集中对应的预测数据,我可以通过哪种方式获取这些数据以和测试集数据进行比较呢?

FateMurphy commented 10 months ago

FORECAST_HORIZONS代表使用前15天预测数据下一天 FORECAST_LENGTH代表测试集长度为15,其余为训练集。再对比时需要自己划分。 好坏一般看评价指标。 获取结果,查看最后输出的元组即可。 获取模型,见h5文件。

 

------------------ 原始邮件 ------------------ 发件人: "FateMurphy/CEEMDAN_LSTM" @.>; 发送时间: 2023年11月12日(星期天) 晚上7:51 @.>; @.**@.>; 主题: Re: [FateMurphy/CEEMDAN_LSTM] 您好,看了您的程序,感觉非常好,有几点问题想问您一下。 (Issue #19)

非常感谢您的回答。 我想我可能没表述清楚。我现有原始数据集,假设是2006年1月1日至2023年11月11日的每日平均气温数据,如果我选择FORECAST_HORIZONS=15,FORECAST_LENGTH=15, 通过您的模型计算的话,那么训练集是哪些数据,测试集是哪些数据呢?我怎么判断数据训练的结果好坏呢?我只看到了有几个评判指标,但我想获取经过训练后的模型和测试集中对应的预测数据,我可以通过哪种方式获取这些数据以和测试集数据进行比较呢?

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>

HeLloZhengXr commented 10 months ago

您好,我加入PATH路径后,log里面有保存的EXCEL文件,但是figure文件夹里面没有文件?请问这是怎么回事,这是我的代码。 kr = cl.keras_predictor(PATH = "G:/Code_Desk/VMD_LSTM",FORECAST_HORIZONS=15,FORECAST_LENGTH=30, KERAS_MODEL='GRU', NEXT_DAY=True, DAY_AHEAD=1) df_result = kr.hybrid_keras_predict(data=series, show=True, plot=True, save=True)

FateMurphy commented 10 months ago

需要更改这个参数NEXT_DAY=False

 

------------------ 原始邮件 ------------------ 发件人: "FateMurphy/CEEMDAN_LSTM" @.>; 发送时间: 2023年11月13日(星期一) 上午10:30 @.>; @.**@.>; 主题: Re: [FateMurphy/CEEMDAN_LSTM] 您好,看了您的程序,感觉非常好,有几点问题想问您一下。 (Issue #19)

您好,我加入PATH路径后,log里面有保存的EXCEL文件,但是figure文件夹里面没有文件?请问这是怎么回事,这是我的代码。 kr = cl.keras_predictor(PATH = "G:/Code_Desk/VMD_LSTM",FORECAST_HORIZONS=15,FORECAST_LENGTH=30, KERAS_MODEL='GRU', NEXT_DAY=True, DAY_AHEAD=1) df_result = kr.hybrid_keras_predict(data=series, show=True, plot=True, save=True)

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>

HeLloZhengXr commented 10 months ago

但我如果把NEXT_DAY=False,我就获取不了我想要预测的未来一天的数值了。

FateMurphy commented 10 months ago

NEXT_DAY=True时只预测1天,需要自己整合数据画图

 

------------------ 原始邮件 ------------------ 发件人: "FateMurphy/CEEMDAN_LSTM" @.>; 发送时间: 2023年11月13日(星期一) 中午11:22 @.>; @.**@.>; 主题: Re: [FateMurphy/CEEMDAN_LSTM] 您好,看了您的程序,感觉非常好,有几点问题想问您一下。 (Issue #19)

但我如果把NEXT_DAY=False,我就获取不了我想要预测的未来一天的数值了。

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>

HeLloZhengXr commented 10 months ago

可是NEXT_DAY=True时,log下面仅生成的是最后一天的数据,我无法获取验证集的数据进行画图。

FateMurphy commented 10 months ago

NEXT_DAY=True主要是为了滚动预测的,你直接设置成False应该就能达到你想要的效果。

 

------------------ 原始邮件 ------------------ 发件人: "FateMurphy/CEEMDAN_LSTM" @.>; 发送时间: 2023年11月13日(星期一) 中午11:26 @.>; @.**@.>; 主题: Re: [FateMurphy/CEEMDAN_LSTM] 您好,看了您的程序,感觉非常好,有几点问题想问您一下。 (Issue #19)

可是NEXT_DAY=True时,log下面仅生成的是最后一天的数据,我无法获取验证集的数据进行画图。

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>

HeLloZhengXr commented 10 months ago

您好,是这样的。 (1)我设置成NEXT_DAY=False时,log里面有测试集30天的real和predict数据,这是我所想要的。但是此时我无法获取我想要预测的第二天的predict数值,因为我设置DAY_AHEAD=1或者DAY_AHEAD=2,此时都不起作用。 当我设置成NEXT_DAY=True时,log里面只有我想要预测的第二天的数值,这也是我所想要的。但没有我想要(1)的测试集的real和predict数据。 请问如何解决这个问题?

(2)这个问题是否可以从另一个角度考虑,如果我将模型的训练集和测试集确定后,模型训练好,是否可以通过另一种方式直接预测下一天的数值,而不用重新运行程序进行训练测试预测呢?

FateMurphy commented 10 months ago

可以输入完整数据集,程序会自动划分测试集和训练集。NEXT_DAY=True时,只预测样本外的下一天,自然画不了图。重复运行可以使用rolling method。DAY_AHEAD=1表示至今的数据预测明天,=2表示用至今数据预测后天(空了一个明天)

HeLloZhengXr commented 10 months ago

对于rolling method我不理解的是,我的数据集是2009年1月1日至2009年3月1日。滚动预测结束后,只是对2009年2月24日-2月28日进行了第二日预测,但是这些数据我都在我的样本数据集里,对于样本数据集外的预测,比如我想知道3月2日的情况,rolling method却没给我结果,那么rolling method对于其他预测区别在哪?DAY_AHEAD设置的有什么用途?在模型预测结果看来滚动预测不还不能预测明天以外的数。

data = pd.read_csv('testtemp.csv',header=0, index_col=['date'], parse_dates=['date']) series = data['su']

kr = cl.keras_predictor(PATH = "G:\Code_Desk\VMD_LSTM",FORECAST_HORIZONS=6,FORECAST_LENGTH=6, KERAS_MODEL='GRU', NEXT_DAY=True, DAY_AHEAD=3) df_result = kr.rolling_keras_predict(data=series, predict_method='hybrid')