基于 Python 的电商销售预测全实战:从特征工程到 XGBoost 模型落地

基于 Python 的电商销售预测全实战:从特征工程到 XGBoost 模型落地 前言在上一篇《Python+Tableau 全流程数据分析实战:从数据清洗到商业洞察可视化》中,我们完成了电商销售数据的清洗、探索性分析和可视化,得出了核心商业洞察。但数据分析的终极目标不仅是解释过去,更是预测未来。销售预测是企业运营的核心环节,准确的销售预测可以帮助企业:优化库存管理,减少缺货和积压合理安排生产和物流计划制定精准的营销和促销策略提升资金周转效率和盈利能力本文将基于同一套电商销售数据集,带你完整实现基于机器学习的销售预测全流程:从时间序列特征工程,到线性回归、随机森林、XGBoost 三种主流模型的构建与对比,再到未来 12 个月的销售预测和模型解释。所有代码均可直接复制运行,完美衔接上一篇博客的成果。一、环境准备与依赖安装1.1 开发环境Python 3.9+(与上一篇博客环境保持一致)必需库及版本:pip install scikit-learn==1.4.2 xgboost==2.0.3 statsmodels==0.14.2 joblib==1.4.2验证来源:scikit-learn 官方安装指南:https://scikit-learn.org/stable/install.htmlXGBoost 官方安装指南:https://xgboost.readthedocs.io/en/latest/install.html1.2 数据准备本文直接使用上一篇博客中生成的清洗后数据集cleaned_sales_data.csv,无需重新下载和清洗。如果你还没有该文件,请先完成上一篇博客的第三步操作。二、时间序列数据预处理与特征工程特征工程决定了机器学习模型的上限,对于时间序列预测尤为重要。我们需要从原始数据中提取能够捕捉趋势、季节性和周期性的特征。2.1 导入数据并按时间聚合销售预测通常以月度为单位,因此我们先将原始订单数据按月份聚合:import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns from sklearn.model_selection import train_test_split, GridSearchCV from sklearn.linear_model import LinearRegression from sklearn.ensemble import RandomForestRegressor from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score import xgboost as xgb import joblib # 设置中文显示 plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False # 导入清洗后的数据 df = pd.read_csv('cleaned_sales_data.csv') # 将OrderDate转换为日期类型 df['OrderDate'] = pd.to_datetime(df['OrderDate']) # 按月份聚合销售额 monthly_sales = df.groupby(pd.Grouper(key='OrderDate', freq='M'))['Sales'].sum().reset_index() monthly_sales.columns = ['date', 'sales'] # 查看聚合后的数据 print("月度销售数据前10行:") print(monthly_sales.head(10)) print(f"\n数据时间范围:{monthly_sales['date'].min()} 至 {monthly_sales['date'].max()}") print(f"总数据点数:{len(monthly_sales)}")输出结果:2.2 构建时间序列特征我们将构建三类核心特征:时间特征:月份、季度、是否为旺季滞后特征:过去 1 个月、3 个月、6 个月的销售额滚动统计特征:过去 3 个月、6 个月的销售额均值和标准差