一、实验目的

决策树分类法是一种简单但却广泛使用的分类技术。本实验主要目的是培养学生能够掌握决策树归纳法,并用python程序实现决策树分类法对数据进行分类。

二、实验要求

学习掌握数据分类方法中的决策树归纳法。

三、实验内容

就餐饮企业而言,经常会碰到这样的问题:如何基于天气(好天气:1,坏天气:-1)、节假日(是周末:1,不是周末:-1)和是否有促销(有促销:1,没有促销:-1)等影响因素,对菜品销量进行预测。根据下表给定的餐饮销量数据,使用基于信息熵的决策树算法(ID3算法)对菜品销量的高低进行预测。

要求:需要对所构建的决策树进行可视化,可以直接调用决策树相关函数。

参考资料:

[1]https://blog.csdn.net/weixin_48077303/article/details/115178755

[2]https://www.cnblogs.com/lifz-ml/p/15526494.html

[3]https://www.csdn.net/tags/MtjaEgxsMTYzMDMtYmxvZwO0O0OO0O0O.html

[4]https://zhuanlan.zhihu.com/p/403848058

表1 餐饮销量数据

序号

天气

是否周末

是否有促销

销量

1

-1

1

1

2

-1

1

1

3

-1

1

1

4

-1

-1

1

5

-1

1

1

6

-1

-1

1

7

-1

1

-1

8

1

1

1

9

1

1

-1

10

1

1

1

11

1

1

1

12

1

1

1

13

1

1

1

14

-1

1

1

15

1

-1

1

16

1

-1

1

17

1

-1

1

18

1

-1

1

19

1

-1

-1

20

-1

-1

-1

21

-1

-1

1

22

-1

-1

1

23

-1

-1

1

24

-1

-1

-1

25

-1

1

-1

26

1

-1

1

27

1

-1

1

28

-1

-1

-1

29

-1

-1

-1

30

1

-1

-1

31

-1

1

-1

32

1

-1

1

33

1

-1

-1

34

1

-1

-1

四、实验结果和分析

代码部分

import pandas as pd

inputfile = './sales_data.xls'
data = pd.read_excel(inputfile, index_col=u'序号')  # 导入数据以序号为索引列

data[data == u'高'] = 1  # 把高和非高换为1和-1
data[data != 1] = -1

x = data.iloc[:, :3].values.astype(int)
y = data.iloc[:, 3].values.astype(int)
print('x:')
print(x)
print("")
print('y:')
print(y)

from sklearn.tree import DecisionTreeClassifier as DTC

dtc = DTC(criterion='entropy')  # 建立决策树模型,基于信息熵
dtc.fit(x, y)  # 训练模型
# 导入相关函数,可视化决策树。

from sklearn.tree import export_graphviz

x = pd.DataFrame(x)
x = pd.DataFrame(x)

with open("./tree.dot", 'w') as f:
    f = export_graphviz(dtc, feature_names=x.columns, out_file=f)

运行结果

x:
[[-1 -1 -1]
 [-1  1  1]
 [-1  1  1]
 [-1  1  1]
 [-1 -1  1]
 [-1  1  1]
 [-1 -1  1]
 [-1  1 -1]
 [ 1  1  1]
 [ 1  1 -1]
 [ 1  1  1]
 [ 1  1  1]
 [ 1  1  1]
 [ 1  1  1]
 [-1  1  1]
 [ 1 -1  1]
 [ 1 -1  1]
 [ 1 -1  1]
 [ 1 -1  1]
 [ 1 -1 -1]
 [-1 -1 -1]
 [-1 -1  1]
 [-1 -1  1]
 [-1 -1  1]
 [-1 -1 -1]
 [-1  1 -1]
 [ 1 -1  1]
 [ 1 -1  1]
 [-1 -1 -1]
 [-1 -1 -1]
 [ 1 -1 -1]
 [-1  1 -1]
 [ 1 -1  1]
 [ 1 -1 -1]
 [ 1 -1 -1]]

y:
[-1  1  1  1  1  1  1  1  1  1  1  1  1  1 -1  1  1  1  1  1 -1 -1 -1 -1
 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1]

Process finished with exit code 0

实验分析

Logo

永洪科技,致力于打造全球领先的数据技术厂商,具备从数据应用方案咨询、BI、AIGC智能分析、数字孪生、数据资产、数据治理、数据实施的端到端大数据价值服务能力。

更多推荐