就餐饮企业而言,由于餐饮业是生产和销售同时进行的,因此销售预测对餐饮业十分重要。基于C4.5决策树建立模型,应用python软件计得出未来销售量的高低,从而减少菜品脱销现象以及因材料准备不足而造成的销售延误。

关键词:餐饮业;销售量;预测;C4.5决策树;python;

1挖掘目标

对于大型连锁餐饮企业来说,生产的产品种类比较多,另外涉及的分店所处的位置也不同,数目比较多。对于企业高层来说,了解周末和非周末,天气好坏,是否促销等对销量的影响,用来改进原材料,资金的调度,避免在相同时间内有的分店产品脱销,有的却大量滞销的尴尬。因此,对销量的预测显得十分重要。

本次建模的目标是利用收集到的某餐饮分店的销售原始数据进行C4.5决策树建模分析,C4.5算法是机器学习和数据挖掘领域中的一整套用于处理分类问题的算法。属于有监督学习,有易于解释易于建模等优点,在此我们利用其有监督学习的属性对销量进行建模预测。

2分析方法与过程

2.1 总体流程

2.2 具体步骤
2.2.1 数据预处理

原始数据(部分)如下表:

对于天气属性,原始数据中有多种不同的值,这里用excel将属性值进行类别整合。如天气“多云”,“晴”等适宜出行归为天气“好”类。同理,对于“小雪”,“雨”,“雨夹雪”等则归为天气“差”一类。因决策树建模不需要太多数据,因此我们只整理抽出35天的数据,整理出如下:

接下来要对“销量”的数据进行整理。导入“销量”数据到python,运行describe()函数,可得“销量”的概况,具体代码及结果如下:

由表知均值mean为2701,在此,我们定义销量低于3000为“低”,定义高于3000为“高”。

导入销量列表到python,制作箱型图进一步查看缺失值异常值等。Python具体代码如下:

运行程序,可得如下图:

由上面箱型图我们可以看出,-291.4,96,865,6720.0为异常值,我们要进行删除,这里我们定义销量小于400或大于5000为异常值,用python删除异常值并对删除后和原本的空缺值进行拉格朗日插值,具体代码及操作如下:

可以看出,我们把第16天的空缺值插值为4156.86,可以看出还是比较贴合实际。

接下来,我们用Excel把“销量”低于3000定义为“低”,把销量高于3000定义为“高”,整理的如下表:

2.2.2建模

C4.5决策树算法是基于信息熵来选择最佳测试属性。它选择当前样本集中最大信息熵增值的属性作为测试属性。

熵可以使用公式计算:

这里的p和q分别为成功和失败的概率节点。熵也用于分类目标变量。选择相比父节点和其他节点分裂最低的熵。熵越小越好。

Gain(A)=I(S1,S2)-E(A)

I(S1,S2)表示总的信息熵,此处表示销量(高,低)的总信息熵。

计算熵分割的步骤:

①计算父节点的熵。

②计算每个独立节点分割的熵,并计算分裂中所有子节点得加权平均值。

采用C4.5决策树建模具体步骤如下:

①   数据总记录为34,销量“高”的有18,“低”的有16,根据公式,可知:

总信息熵=I(18,16)=-(18/34)log2(18/34)-(16/34)log2(16/34)=0.997503

即I(S1,S2)=0.997503.

②   根据公式计算每个测试属性(天气,是否周末,是否促销)的熵:

对于天气属性,天气好的条件下,销量高的记录为11,低的为6.可表示为(11,6)。同理,天气差下为(7,10),计算如下:

I(11/6)=-(11/17)log2(11/17)-(6/17)log2(6/17)=0.936667

I(7/10)=-(7/17)龙(7/17)-(10/17)log2(10/17)=0.977418

则E(天气)=(17/34)I(11,6)+(17/34)I(7,10)=0.957043

同理计算出:

E(是否周末)=0.858109            E(是否促销)=0.870235

信息增益值

Gain(天气)=I(18,16)-E(天气)=0.997503-0.957043=0.04046

同理,Gain(是否周末)=0.997503-0.85109=0.139394

Gain(是否促销)=0.997503-0.870235=0.127268

可知,是否周末属性的信息增益值最大,通俗讲即是否周末对销量这个总信息熵的贡献最大,它相比天气,是否促销来讲对销量的高低影响较大。因此,我们把是否周末放在决策树的最开端。然后再重复计算每一个分支节点的信息增益,如此反复循环,直到没有新的节点分支,最终构成一棵决策树。因计算量太大太多,我们用ython进行建模计算,具体代码及结果如下:

运行代码后我们会得到一个tree.pdf文件,打开,即得到下方所示决策树:

化简的下方决策树:

由图可知:

1 若周末属性为“是”,天气为“好“,则销量为高。

2 若周末属性为“是”,天气属性为“坏“,促销属性为”否“,则销量低。

3 若周末属性为“是”,天气属性为“坏“,促销属性为”是”则销量高。

4 若周末属性为“否”,促销属性为”否”则销量低。

5 若周末属性为“否”,促销属性为”是”天气属性为“好“,则销量高。

6 若周末属性为“否”,促销属性为”是”天气属性为“坏“,则销量低。

检验模型,带入剩下的数据:

检验正确,该模型可用。

 

由表知均值mean为2701,在此,我们定义销量低于3000为“低”,定义高于3000为“高”。

导入销量列表到python,制作箱型图进一步查看缺失值异常值等。Python具体代码如下:

C4.5决策树预测销量相关推荐

  1. C4.5(决策树预测)算法

    2019独角兽企业重金招聘Python工程师标准>>> 决策树<Decision Tree>是一种预测模型,它由决策节点,分支和叶节点三个部分组成.决策节点代表一个样本测 ...

  2. Lesson 8.3Lesson 8.4 ID3、C4.5决策树的建模流程CART回归树的建模流程与sklearn参数详解

    Lesson 8.3 ID3.C4.5决策树的建模流程 ID3和C4.5作为的经典决策树算法,尽管无法通过sklearn来进行建模,但其基本原理仍然值得讨论与学习.接下来我们详细介绍关于ID3和C4. ...

  3. C4.5决策树 此博文包含图片 (2011-10-20 23:22:19)转载▼ 标签: 分类树

    C4.5决策树 (2011-10-20 23:22:19) 转载▼ 标签: 分类树 决策树 c4.5 机器学习 数据挖掘 分类: 数据挖掘 1. 算法背景介绍 分类树(决策树)是一种十分常用的分类方法 ...

  4. 基于京东手机销售数据用回归决策树预测价格

    今天给大家推荐一个数据分析与挖掘的实战项目案例"基于京东手机销售数据用回归决策树预测价格".该项目先基于京东手机销售数据做出一系列分析后,利用回归决策树仅根据手机外部特征进行价格预 ...

  5. 【2016年第1期】基于大数据的小麦蚜虫发生程度决策树预测分类模型

    张晴晴,刘勇,牟少敏,温孚江 山东农业大学农业大数据研究中心,山东 泰安 271018 摘要:小麦蚜虫是危害小麦的主要害虫.其发生程度预测特别是短期预测一直是植物保护领域难以解决的科学问题.传统预测方 ...

  6. 监督学习 | ID3 C4.5 决策树原理

    文章目录 决策树 1. 特征选择 1.1 熵 1.2 条件熵 1.3 信息增益 1.4 信息增益率 2. 决策树生成 算法1 信息增益及信息增益率的算法 2.1 ID3 算法 2.2 C4.5 算法 ...

  7. c4.5决策树算法python_Python3实现机器学习经典算法(四)C4.5决策树

    一.C4.5决策树概述 C4.5决策树是ID3决策树的改进算法,它解决了ID3决策树无法处理连续型数据的问题以及ID3决策树在使用信息增益划分数据集的时候倾向于选择属性分支更多的属性的问题.它的大部分 ...

  8. ID3构造决策树预测隐形眼镜类型(代码笔记)

    决策树可以从数据集合中提取出一系列规则,从而分类样本.它的优势是理解数据蕴含信息. 思想:利用信息增益(information gain)[度量数据集信息的方式-香农熵(entropy)]计算得出最好 ...

  9. 《机器学习实战》学习笔记:绘制树形图使用决策树预测隐形眼镜类型

    上一节实现了决策树,但只是使用包含树结构信息的嵌套字典来实现,其表示形式较难理解,显然,绘制直观的二叉树图是十分必要的.Python没有提供自带的绘制树工具,需要自己编写函数,结合Matplotlib ...

最新文章

  1. System.Diagnostics.Process.Start()
  2. ERROR: Could not install packages due to an EnvironmentError: [WinError 5] 拒绝访问
  3. Oracle经验集锦
  4. C语言再学习-- readelf、objdump、nm使用详解
  5. ZOJ 1610 Count the Colors (线段树区间更新)
  6. 使用PerfView监测.NET程序性能(二):Perfview的使用
  7. 当你「ping 一下」的时候,你知道它背后的逻辑吗
  8. 在Junit上使用Kafka
  9. MyBatis ResultMap(2)
  10. 第一节:ASP.NET开发环境配置
  11. vue.js 组件基础
  12. 通过JCONSOLE监控TOMCAT的JVM使用情况
  13. springbank 开发日志 springbank是如何执行一个handler的requestMapping对应的方法的
  14. Mysql JOIN连接算法
  15. Java for LeetCode 036 Valid Sudoku
  16. 黑眼圈订单系统_大熊猫黑眼圈订单后台
  17. 刚体转动的惯性张量和转动惯量的区别和联系
  18. MATLAB实现离散傅里叶变换DFT
  19. 2021年电工(初级)考试题及电工(初级)找解析
  20. 第1-6课:绘制箱线图、饼图和直方图

热门文章

  1. DIV布局`电影在线 网站设计——漫威电影(2页) HTML+CSS+JavaScript 学生DW网页设计作业成品
  2. fig-tlo_PHP-FIG的替代方案:各种愿景的利弊
  3. SendMessage函数完全使用手册 (解读WM_)
  4. (最新最详细)安装ubuntu18.04
  5. 商标注册查询入口官网在国家知识产权局商标局查询
  6. web页面设计实训——03.12
  7. 鸟哥的服务器《十三》Web服务器
  8. SQL(进阶实战05)
  9. 什么是ASP.NET
  10. HTML之在JavaScript中定义函数