首页 > 解决方案 > 在多周内预测产品的未来需求

问题描述

我想创建一个模型,在每个步骤中预测每个产品在数周内的未来需求(预测每个产品明年的每周需求)

我有一些小尺寸(大约 100-200 条记录)csv。

这里有关 CSV 列的信息:- 第一列makeId代表产品的 id。第二列areaId表示产品销售位置的内部 id。第三列日期以 mm/dd/yyyy 格式表示日期。第四列数量表示给定区域在给定一周内对给定产品的需求。

样本文件 1-

在此处输入图像描述

示例文件 2-

在此处输入图像描述

示例文件 3-

在此处输入图像描述

我想过使用 Arima 模型,但我对如何将数据转换为每周格式并使用它来预测每个 make id 有点困惑。

任何建议都会有所帮助,因为我是时间序列问题的新手

标签: pythonmachine-learningdeep-learningdata-science

解决方案


注意:快速浏览一下您的示例,您似乎已经有了每周数据。如果这不是真的,或者您只是希望将数据框设置为能够使用 ARIMA 模型,则以下答案将有所帮助。

对您的问题的快速回答是:使用pandas包将数据读入/操作到dataframe对象中,然后使用.resample()每周频率的方法,例如:.resample('W').

更多细节:

对于时间序列分析,大多数应用程序将受益于将数据索引设置为时间变量。在您的情况下,您可以使用以下方法在读取数据时执行此操作pandas

import pandas as pd df = pd.read_csv('/path/to/your_data.csv', parse_dates=['date'], index_col='date')

如果您无法读取它,并且需要更改数据框,您可以执行以下操作:

df = df.set_index('date')

这假定该date列已正确设置为日期时间对象。

下一步是对数据进行重新采样,以便您获得一个新值来捕获数据中的每周活动。这需要选择一种方法来组合您的Amount字段中的数据,因为您希望显示一个可以组合多天的值的值。在这里,我将选择mean(),以便新值是该周中存在的那些天的数据的平均值。

df['Amount_weekly'] = df['Amount'].resample('W', how='mean')

由于您正在聚合数据,因此该函数返回一个新系列,所以在这里我将该新系列放入您的新列中df,即df['Amount_weekly'].

因此,您将拥有一个时间序列索引数据框,其中有一列显示每周重新采样的数据。这将是在 ARIMA 模型中使用的适当格式,例如statsmodels.


推荐阅读