我对时间序列很陌生

           Date   Price               Location
0    2012-01-01  1771.0                 Marche
1    2012-01-01  1039.0               Calabria
2    2012-01-01  2193.0               Campania
3    2012-01-01  2015.0         Emilia-Romagna
4    2012-01-01  1483.0  Friuli-Venezia Giulia
...         ...     ...                    ...
2475 2022-04-01  1963.0                  Lazio
2476 2022-04-01  1362.0  Friuli-Venezia Giulia
2477 2022-04-01  1674.0         Emilia-Romagna
2478 2022-04-01  1388.0                 Marche
2479 2022-04-01  1103.0                Abruzzo

我正在try 构建一个用于价格预测的LSTM,但我不知道如何管理Location分类功能:我必须使用一个热编码还是一个groupby?

提前谢谢.

推荐答案

假设我的数据集(df)与你的类似:

          Date       Price  Location
0   2021-01-01  791.076890  Campania
1   2021-01-01  705.702464  Lombardia
2   2021-01-01  719.991382  Sicilia
3   2021-02-01  825.760917  Lombardia
4   2021-02-01  747.734309  Sicilia
...        ...         ...        ...
31  2021-11-01  886.874348  Lombardia
32  2021-11-01  935.040583  Campania
33  2021-12-01  771.165378  Sicilia
34  2021-12-01  952.255227  Campania
35  2021-12-01  939.754515  Lombardia

就我而言,我每个月有3个地区(坎帕尼亚、伦巴第、西西里)的Price个记录.我的 idea 是将不同的区域视为不同的特征,因此我将df转换为:

df = df.set_index(["Date", "Location"]).Price.unstack()

现在我的数据集是这样的:

Location    Campania    Lombardia   Sicilia
Date            
2021-01-01  791.076890  705.702464  719.991382
2021-02-01  758.872755  825.760917  747.734309
2021-03-01  880.038005  803.165998  837.738419
       ...         ...         ...         ...
2021-10-01  908.402345  805.081193  792.369610
2021-11-01  935.040583  886.874348  736.862025
2021-12-01  952.255227  939.754515  771.165378

在此之后,请确保没有NaN个值(df.isna().sum()).

现在,您可以将这些数据传递给this example年生产的多功能RNN(或LSTM),或多通道1D-CNN( Select 适当的内核大小).这两种情况下唯一的问题可能是数据集太小,因此尽量不要过度参数化模型(例如减少神经元和层的数量),否则过度拟合将不可避免.关于这一点,您可以在时间序列的最后20%上测试模型:

from sklearn.model_selection import train_test_split
df_train, df_test = train_test_split(df, shuffle=False, test_size=.2)

最后一部分是为监督学习构建匹配(X, Y),但这取决于您使用的模型和您的预测任务.Another example here

Python相关问答推荐

将两只Pandas rame乘以指数

DataFrames与NaN的条件乘法

优化器的运行顺序影响PyTorch中的预测

从一个系列创建一个Dataframe,特别是如何重命名其中的列(例如:使用NAs/NaN)

所有列的滚动标准差,忽略NaN

在两极中过滤

如何从列表框中 Select 而不出错?

使用特定值作为引用替换数据框行上的值

pandas:对多级列框架的列进行排序/重新排序

为什么在FastAPI中创建与数据库的连接时需要使用生成器?

如何在海上配对图中使某些标记周围的黑色边框

Polars Group by描述扩展

如何使用Azure Function将xlsb转换为xlsx?

如何在Gekko中处理跨矢量优化

Python协议不兼容警告

上传文件并使用Panda打开时的Flask 问题

Groupby并在组内比较单独行上的两个时间戳

滑动子数组美容工作在IDE上,但不是在leetcode上

如果init被重载,如何输入提示一个基于init的函数的返回类型

用考克斯回归的生存分析系列的真值是模棱两可的.