完整代码有需要的请私我获得。

导入所需要的库

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from datetime import datetime
from pandas import Series
from sklearn.metrics import mean_squared_error
from math import sqrt
from statsmodels.tsa.seasonal import seasonal_decompose
import statsmodels
import statsmodels.api as sm
from statsmodels.tsa.arima_model import ARIMA
%matplotlib inline
plt.rcParams['font.sans-serif'] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False

更改日期格式

df["order_date"]=df["order_date"].apply(pd.to_datetime,format='%Y-%m-%d')
#删除多余列
df = df.drop(['order_date.1'],axis=1)
#移动索引并查找差异
dff['step'] = dff['order_date']-dff['order_date'].shift(1)
zero = np.timedelta64(0, 's')
dff['step'][0] = np.timedelta64(0, 's')#将第一个变量从naT更改为零
dff['step'] = dff['step'].apply(lambda x: x>zero).cumsum()
dff.head()

2  构建模型

from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn import preprocessingfrom sklearn.metrics import mean_squared_error,roc_auc_score,precision_score,accuracy_score,log_loss
from xgboost import XGBRegressor
import lightgbm as lgb
#optimizer from functools import partial

#train_df = dff 养成习惯,将dff作为备用数据变量,防止出错

train_df = dff
def smape(a, f):*******************
train_df['step^2'] = train_df['step']**2

#LinearRegression()

# split data
X_train,X_val,y_train,y_val = train_test_split(features,targets,test_size=0.05,shuffle=False)model2 = LinearRegression()
model2.fit(X_train, y_train)smape(y_val,model2.predict(X_val))

#指标解释

MSE

均方误差(Mean Square Error)当预测值与真实值完全吻合时等于0,即完美模型;误差越大,该值越大。

RMSE

均方根误差(Root Mean Square Error),其实就是MSE加了个根号,这样数量级上比较直观,比如RMSE=10,可以认为回归效果相比真实值平均相差10。当预测值与真实值完全吻合时等于0,即完美模型;误差越大,该值越大。

MAE

平均绝对误差(Mean Absolute Error),当预测值与真实值完全吻合时等于0,即完美模型;误差越大,该值越大

MAPE

平均绝对百分比误差(Mean Absolute Percentage Error)

MAPE 为0%表示完美模型,MAPE 大于 100 %则表示劣质模型。

可以看到,MAPE跟MAE很像,就是多了个分母。

SMAPE

对称平均绝对百分比误差(Symmetric Mean Absolute Percentage Error)

一个地区一个地区去检验 从101改至105,依次进行即可,之后可以根据需求对大类别特征,细类别特征进行探讨 就修改下方region_1 = region_1[(region_1["sales_region_code"]==101)]部分即可

#导入特征列
features = region_1[[ 'sales_region_code', 'item_code', 'first_cate_code','second_cate_code', 'sales_chan_name', 'item_price','Year','Month', 'day', 'day of the week', 'quarter', 'is_month_start','is_month_end', 'is_quarter_start', 'is_quarter_end', 'is_year_start','is_year_end', 'is_workday', 'is_holiday', 'sales','step', 'step^2']]targets = region_1['ord_qty']
# split data
X_train,X_val,y_train,y_val = train_test_split(features,targets,test_size=0.05,shuffle=False)
model1 = LinearRegression()
****
#98.03167520705503
模型效果相差不大

#运用xgboost

smape(y_val,predictions)
#30.41483734354367
#模型误差变小

#绘制学习曲线

#修改参数

#模型误差变小

#得到变量的重要性

results = xgb.evals_result()

#CatBoostRegressor

模型在未调参时表现很好

进行超参数调整

def objective(trial,X,y, name='xgb'):params = param = {'tree_method':'gpu_hist',  'lambda': trial.suggest_loguniform('lambda', 1e-3, 10.0),'alpha': trial.suggest_loguniform('alpha', 1e-3, 10.0),'eta': trial.suggest_float('eta', 1e-5, 0.1),'colsample_bytree': ******************),'subsample': trial.suggest_categorical( ******************),'learning_rate': trial.suggest_categorical(********************),'n_estimators': trial.suggest_categorical("n_estimators"****************),'max_depth': trial.suggest_categorical(*********************),'random_state': 42,'min_child_weight': trial.suggest_int(*********************),'random_state':10}model =  XGBRegressor(**params)model.fit(X_train,y_train,eval_set=[(X_val,y_val)],early_stopping_rounds=50,verbose=False)train_score = ************, model.predict(X_train))), 5)test_score = np.round(np.sqrt(mean_squared_error(*************)), 5)print(f'TRAIN RMSE : {train_score} || TEST RMSE : {test_score}')return test_score
params ={'lambda': 0.0012338191278124635, 'alpha': 3.284395992431614, 'eta': 0.09886834650237164, *****}

第十一届泰迪杯数据挖掘挑战赛-产品订单数据分析B题(完整代码)--数据分析--第三部分相关推荐

  1. 第十一届泰迪杯数据挖掘挑战赛-产品订单数据分析B题(完整代码)--数据处理--第一部分(下一部分请看下一博客)

    需要解决的问题 1. 请对附件中的训练数据(order_train1.csv)进行深入地分析,可参照但不限于下述主题. (1) 产品的不同价格对需求量的影响: (2) 产品所在区域对需求量的影响,以及 ...

  2. 第十一届泰迪杯数据挖掘挑战赛-产品订单数据分析B题(完整代码)--数据处理--第一部分

     完整代码链接需要的请私我获取. 需要解决的问题 1. 请对附件中的训练数据(order_train1.csv)进行深入地分析,可参照但不限于下述主题. (1) 产品的不同价格对需求量的影响: (2) ...

  3. 第十一届泰迪杯数据挖掘挑战赛-产品订单数据分析B题(完整代码)--数据分析--第二部分

    完整代码需要的请私我获得. import pandas as pd import matplotlib.pyplot as plt import seaborn as sns plt.style.us ...

  4. 【2023年第十一届泰迪杯数据挖掘挑战赛】B题:产品订单的数据分析与需求预测 23页论文及实现代码

    [2023年第十一届泰迪杯数据挖掘挑战赛]B题:产品订单的数据分析与需求预测 23页论文及实现代码 相关链接 (1)建模方案 [2023年第十一届泰迪杯数据挖掘挑战赛]B题:产品订单的数据分析与需求预 ...

  5. 【2023年第十一届泰迪杯数据挖掘挑战赛】B题:产品订单的数据分析与需求预测 建模及python代码详解 问题一

    相关链接 [2023年第十一届泰迪杯数据挖掘挑战赛]B题:产品订单的数据分析与需求预测 建模及python代码详解 问题一 [2023年第十一届泰迪杯数据挖掘挑战赛]B题:产品订单的数据分析与需求预测 ...

  6. 【2023年第十一届泰迪杯数据挖掘挑战赛】B题:产品订单的数据分析与需求预测 建模及python代码详解 问题二

    相关链接 [2023年第十一届泰迪杯数据挖掘挑战赛]B题:产品订单的数据分析与需求预测 建模及python代码详解 问题一 [2023年第十一届泰迪杯数据挖掘挑战赛]B题:产品订单的数据分析与需求预测 ...

  7. 第十一届“泰迪杯” 数据挖掘挑战赛 火热报名中!

         距离第十一届"泰迪杯"数据挖掘挑战赛报名结束仅剩下两周时间,为能让各位参赛小伙伴对"泰迪杯"竞赛进一步了解,今天小编为大家整理了详细的竞赛介绍,想要了 ...

  8. 【2023年第十一届泰迪杯数据挖掘挑战赛】A题:新冠疫情防控数据的分析 32页和40页论文及实现代码

    [2023年第十一届泰迪杯数据挖掘挑战赛]A题:新冠疫情防控数据的分析 32页和40页论文及实现代码 相关链接 (1)建模方案 [2023年第十一届泰迪杯数据挖掘挑战赛]A题:新冠疫情防控数据的分析 ...

  9. 【第十一届泰迪杯数据挖掘挑战赛】A 题:新冠疫情防控数据的分析 思路+代码(持续更新)

    [第十一届泰迪杯数据挖掘挑战赛]A 题:新冠疫情防控数据的分析 思路+代码(持续更新) 问题背景 解决问题 代码下载 数据分析 Task1 Task2 Task 3 问题背景 自 2019 年底至今, ...

最新文章

  1. 网友为对百合所唱的最后的挽歌!(节选)
  2. php设计模式--单例模式
  3. OpenShift 之 用CodeReady Workspaces开发Quarkus云原生应用
  4. angularjs html标签,jquery – 如何使用AngularJS获取和设置HTML标签的属性值?
  5. mongodb之replSet复制集 + auth
  6. 基于Open XML 导出数据到Excel
  7. Shell脚本检测文件夹是否已被挂载的方法
  8. 【C语言】在VC中使用gotoxy函数实现光标的移动
  9. python打开360浏览器_Selenium安装与360浏览器使用
  10. php代码上传工具,php中文网重磅推出“php程序员工具箱” v0.1版本!
  11. 国际区块链专利:中国蚂蚁、平安、腾讯、复杂美位列前十
  12. 最美证件照工作室需要买什么东西
  13. 网页通用的测试用例(出处:: 51Testing-- lxp1119216)
  14. 把Python代码封装成exe(windows的可执行程序)
  15. java 营业执照图片内容识别
  16. 设计模式 -- 访问者模式(Visitor)
  17. 论文解读:基于共享混合深度学习架构的DNA形状特征预测转录因子结合位点
  18. AD软件PCB转PADS
  19. 解析Hander消息处理机制
  20. Java性能-线程和同步-JVM线程优化和线程优先级

热门文章

  1. VMware ESXi定制版(OEM ISO)资源下载
  2. ffmpeg推流后,视频无法播放
  3. 在ubuntu下完美安装RTX(解决离线、乱码问题)
  4. 如何建立高效的质量管理系统?
  5. 攻防世界can_has_stdio?
  6. 基于javaweb的停车库管理系统(java+jsp+jquery+servlet+mysql)
  7. 【AI老婆生成器】定制专属于你的二次元完美女友
  8. 普元EOS:DataGrid表格实现分页加载、自定义列、单元格渲染、行编辑器、锁定列、过滤行、汇总行等功能。
  9. TortoiseSVN 分支创建与合并
  10. 厉害了,我汇总了43个EMC专业术语