详细解题文章见:
https://blog.csdn.net/mrdeam/article/details/140675605
对未来销量进行预测 解题代码
使用历史销售数据构建2个不同类型的时间序列预测模型,分别对
A1、A2香烟品牌的未来销量进行数据预测,目标为表中最后空白项。自行选择和设计模型类型
、参数、结构。
import pandas as pd
import numpy as np
from statsmodels.tsa.arima.model import ARIMA
import warnings
warnings.filterwarnings('ignore')
# 选择需要预测的品牌(例如 A1 和 A2)
brand_A1 = df[df['名称'] == 'A1']
brand_A2 = df[df['名称'] == 'A2']
# 定义一个函数来训练并预测ARIMA模型
def arima_forecast(data):
# 将月份设为索引,并转换成时间序列
data['月份'] = pd.to_datetime(data['月份'])
data.set_index('月份', inplace=True)
# 提取销量数据作为时间序列
sales_ts = data['销量(箱)']
# 拟合ARIMA模型
model = ARIMA(sales_ts, order=(1, 1, 1)) # 这里选择了一个简单的ARIMA模型,你可以根据需要调整参数
model_fit = model.fit()
# 预测未来销量
forecast = model_fit.forecast(steps=12) # 假设预测未来12个月
return forecast
# 对品牌A1进行预测
forecast_A1 = arima_forecast(brand_A1)
# 对品牌A2进行预测
forecast_A2 = arima_forecast(brand_A2)
# 打印预测结果
print("品牌 A1 的未来销量预测:")
print(forecast_A1)
print("\n品牌 A2 的未来销量预测:")
print(forecast_A2)
解题思路
- 数据理解和准备:
- 确保理解提供的5个Excel文件,每个文件包含以下字段:
- 月份:销售的自然月
- 样品代码:产品身份标识
- 名称:产品名称
- 销量(箱):产品当月销售箱数
- 金额(元):产品当月销售总金额
- 确认数据已经进行了脱敏和预处理,可以直接进行分析。
- 时间序列预测模型选择:
针对每个香烟品牌(A1和A2),选择适合的时间序列预测模型。
模型选择建议:
-
ARIMA 模型:
- ARIMA 模型适用于稳定和有规律的时间序列数据,可以捕捉数据中的趋势和周期性。
- 适合用于没有太强季节性变化的销售数据预测。
-
季节性 ARIMA 模型 (SARIMA):
- 如果数据显示明显的季节性变化(例如,某个香烟品牌在特定季节销量较高),可以考虑使用SARIMA模型。
- SARIMA 模型可以处理季节性影响,如春节或节假日对销量的影响。
-
指数平滑模型:
- 如果销量数据变化不规律或不具备明显的季节性,可以考虑指数平滑模型。
- 简单指数平滑(SES)或双指数平滑(DES)可以用来捕捉数据中的趋势和季节性效应。