预测10家商店未来三个月50种商品的销售量
一.前言
目前拥有10家店50种商品过去5年内的销售量,尝试通过建立ARIMAL,回归,GBDT模型来预测未来一年的销量
时间序列提供了预测未来价值的机会。 基于以前的价值观,可以使用时间序列来预测经济,天气和能力规划的趋势。 时间序列数据的具体属性意味着通常需要专门的统计方法。
数据分析前提几个问题
- 50种商品在过去5年的销售量表现状况如何?
- 10家商店在过去5年的销售量表现状况如何?
- 50种商品销售量与时间的联系如何?
- 通过10家商店50种商品过去5年的销售量来预测未来三个月50种商品的销售量,表现如何?
二.数据分析与探索
导入相应的库和数据,并进行初观察
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import statsmodels.api as sm
import gc
import lightgbm as lgb
from xgboost import XGBRegressor
from sklearn.metrics import r2_score
from sklearn.linear_model import LinearRegression
from sklearn.tree import DecisionTreeRegressor
from sklearn.ensemble import RandomForestClassifier, GradientBoostingRegressor
from sklearn.model_selection import TimeSeriesSplit, KFold, GridSearchCV, train_test_split
from statsmodels.tsa.seasonal import seasonal_decompose
from statsmodels.tsa.stattools import adfuller
import warnings
warnings.filterwarnings('always')
warnings.filterwarnings('ignore')
%matplotlib inline
df = pd.read_csv("/home/kesci/input/data9269/train.csv")
df_pred = pd.read_csv("/home/kesci/input/data9269/test.csv")
df["year_month"] = df["date"].str[: -3]
df["date"] = pd.to_datetime(df["date"])
df["year"] = df["date"].dt.year
df["month"] = df["date"].dt.month
df["week"] = df["date"].dt.weekday_name
df["store"] = df["store"].apply(lambda x: "store {}".format(x))
df["item"] = df["item"].apply(lambda x: "item {}".format(x))
50种商品在过去5年的销售量表现状况
plt.figure(figsize=(16, 6))
plt.title("Product Sales Volume")
sns.set(style="whitegrid")
df.groupby("item")["sales"].sum().plot(kind="bar");

10家商店在过去5年的销售量表现状况
plt.figure(figsize=(16, 6))
plt.title("Store Sales Volume")
df.groupby("store")[