决策树DTC数据分析和鸢尾数据集分析报告Word文档下载推荐.docx

上传人:b****6 文档编号:18625923 上传时间:2022-12-29 格式:DOCX 页数:15 大小:23.10KB
下载 相关 举报
决策树DTC数据分析和鸢尾数据集分析报告Word文档下载推荐.docx_第1页
第1页 / 共15页
决策树DTC数据分析和鸢尾数据集分析报告Word文档下载推荐.docx_第2页
第2页 / 共15页
决策树DTC数据分析和鸢尾数据集分析报告Word文档下载推荐.docx_第3页
第3页 / 共15页
决策树DTC数据分析和鸢尾数据集分析报告Word文档下载推荐.docx_第4页
第4页 / 共15页
决策树DTC数据分析和鸢尾数据集分析报告Word文档下载推荐.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

决策树DTC数据分析和鸢尾数据集分析报告Word文档下载推荐.docx

《决策树DTC数据分析和鸢尾数据集分析报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《决策树DTC数据分析和鸢尾数据集分析报告Word文档下载推荐.docx(15页珍藏版)》请在冰豆网上搜索。

决策树DTC数据分析和鸢尾数据集分析报告Word文档下载推荐.docx

假设这个女孩对男人的要求是:

30岁以下、长相中等以上并且是高收入者或中等以上收入的公务员,那么这个可以用下图表示女孩的决策逻辑。

示例2:

另一个课堂上的例子,参考CSDN的大神lsldd的文章,推荐大家阅读学习信息熵。

用Python开始机器学习(2:

决策树分类算法)

假设要构建这么一个自动选好苹果的决策树,简单起见,我只让他学习下面这4个样本:

[python] 

viewplain 

copy 

1.样本 

红 

大 

好苹果 

2.0 

3.1 

4.2 

5.3 

样本中有2个属性,A0表示是否红苹果。

A1表示是否大苹果。

本例仅2个属性。

那么很自然一共就只可能有2棵决策树,如下图所示:

示例3:

第三个例子,推荐这篇文章:

决策树学习笔记整理-bourneli

决策树构建的基本步骤如下:

1.开始,所有记录看作一个节点;

2.遍历每个变量的每一种分割方式,找到最好的分割点;

3.分割成两个节点N1和N2;

4.对N1和N2分别继续执行2-3步,直到每个节点足够“纯”为止。

二.鸢尾花卉Iris数据集

在Sklearn机器学习包中,集成了各种各样的数据集,上节课讲述Kmeans使用的是一个NBA篮球运动员数据集,需要定义X多维矩阵或读取文件导入,而这节课使用的是鸢尾花卉Iris数据集,它是很常用的一个数据集。

数据集来源:

Irisplantsdataset-KEELdataset

该数据集一共包含4个特征变量,1个类别变量。

共有150个样本,鸢尾有三个亚属,分别是山鸢尾(Iris-setosa),变色鸢尾(Iris-versicolor)和维吉尼亚鸢尾(Iris-virginica)。

iris中文指鸢尾植物,这里存储了其萼片和花瓣的长宽,一共4个属性,鸢尾植物又分三类。

iris里有两个属性iris.data,iris.target。

data里是一个矩阵,每一列代表了萼片或花瓣的长宽,一共4列,每一列代表某个被测量的鸢尾植物,一共采样了150条记录。

代码如下:

1.#导入数据集iris 

2.from 

sklearn.datasets 

import 

load_iris 

3. 

4.#载入数据集 

5.iris 

load_iris() 

6.#输出数据集 

7.print 

iris.data 

输出如下所示:

1.[[ 

5.1 

3.5 

1.4 

0.2] 

2. 

4.9 

3. 

4.7 

3.2 

1.3 

4. 

4.6 

3.1 

1.5 

5. 

5. 

3.6 

6. 

5.4 

3.9 

1.7 

0.4] 

7. 

3.4 

0.3] 

8. 

9. 

4.4 

2.9 

10. 

.... 

11. 

6.7 

5.2 

2.3] 

12. 

6.3 

2.5 

1.9] 

13. 

6.5 

2. 

14. 

6.2 

15. 

5.9 

1.8]] 

target是一个数组,存储了data中每条记录属于哪一类鸢尾植物,所以数组的长度是150,数组元素的值因为共有3类鸢尾植物,所以不同值只有3个。

种类:

IrisSetosa(山鸢尾)

IrisVersicolour(杂色鸢尾)

IrisVirginica(维吉尼亚鸢尾)

1.#输出真实标签 

2.print 

iris.target 

3.print 

len(iris.target) 

4.#150个样本 

每个样本4个特征 

5.print 

iris.data.shape 

输出结果如下:

1.[0 

2] 

6.150 

7.(150L, 

4L) 

可以看到,类标共分为三类,前面50个类标位0,中间50个类标位1,后面为2。

下面给详细介绍使用决策树进行对这个数据集进行测试的代码。

三.决策树实现鸢尾数据集分析

1. 

DecisionTreeClassifier

Sklearn机器学习包中,决策树实现类是DecisionTreeClassifier,能够执行数据集的多类分类。

输入参数为两个数组X[n_samples,n_features]和y[n_samples],X为训练数据,y为训练数据的标记数据。

DecisionTreeClassifier构造方法为:

1.sklearn.tree.DecisionTreeClassifier(criterion='

gini'

 

splitter='

best'

max_depth=None 

min_samples_split=2 

min_samples_leaf=1 

max_features=None 

random_state=None 

min_density=None 

compute_importances=None 

max_leaf_nodes=None) 

鸢尾花数据集使用决策树的代码如下:

1.# 

-*- 

coding:

utf-8 

2."

"

3.Created 

on 

Fri 

Oct 

14 

21:

44:

19 

2016 

5.@author:

杨秀璋 

6."

8.#导入数据集iris 

9.from 

11.#载入数据集 

12.iris 

14.print 

#输出数据集 

15.print 

#输出真实标签 

16.print 

17.print 

#150个样本 

18. 

19. 

20.#导入决策树DTC包 

21.from 

sklearn.tree 

DecisionTreeClassifier 

22. 

23.#训练 

24.clf 

DecisionTreeClassifier() 

25.clf.fit(iris.data, 

iris.target) 

26.print 

clf 

27. 

28.#预测 

29.predicted 

clf.predict(iris.data) 

30. 

31.#获取花卉两列数据集 

32.X 

33.L1 

[x[0] 

for 

in 

X] 

34.print 

L1 

35.L2 

[x[1] 

36.print 

L2 

37. 

38.#绘图 

39.import 

numpy 

as 

np 

40.import 

matplotlib.pyplot 

plt 

41.plt.scatter(L1, 

L2, 

c=predicted, 

marker='

x'

) 

#cmap=plt.cm.Paired 

42.plt.title("

DTC"

43.plt.show() 

输出结果如下所示,可以看到分位三类,分别代表数据集三种鸢尾植物。

2.代码优化

在课堂上我讲过,这里存在两个问题:

1.前面鸢尾Iris数据集包括四个特征(萼片长度、萼片宽度、花瓣长度、花瓣宽度),上面代码中"

L1=[x[0]forxinX]"

我获取了第一列和第二列数据集进行的绘图,而真是数据集中可能存在多维特征,那怎么实现呢?

这里涉及到一个降维操作,后面会详细介绍。

2.第二个问题是,分类学习模型如下所示,它的预测是通过一组新的数据集。

而上面的代码"

predicted=clf.predict(iris.data)"

是对整个的数据集进行决策树分析,而真是的分类分析,需要把一部分数据集作为训练,一部分作为预测,这里使用70%的训练,30%的进行预测。

1.#训练集 

2.train_data 

np.concatenate((iris.data[0:

40, 

:

], 

iris.data[50:

90, 

iris.data[100:

140, 

]), 

axis 

0) 

3.#训练集样本类别 

4.train_target 

np.concatenate((iris.target[0:

40], 

iris.target[50:

90], 

iris.target[100:

140]), 

5.#测试集 

6.test_data 

np.concatenate((iris.data[40:

50, 

iris.data[90:

100, 

iris.data[140:

150, 

7.#测试集样本类别 

8.test_target 

np.concatenate((iris.target[40:

50], 

iris.target[90:

100], 

iris.target[140:

150]), 

优化后的完整代码如下所示,同时输出准确率、召回率等。

14.'

'

18.print 

19.'

20. 

21.'

22.重点:

分割数据集 

构造训练集/测试集,120/30 

23. 

70%训练 

0-40 

50-90 

100-140 

24. 

30%预测 

40-50 

90-100 

140-150 

25.'

26.#训练集 

27.train_data 

28.#训练集样本类别 

29.train_target 

30.#测试集 

31.test_data 

32.#测试集样本类别 

33.test_target 

34. 

35. 

36.#导入决策树DTC包 

37.from 

38. 

39.#训练 

40.clf 

41.#注意均使用训练数据集和样本类标 

42.clf.fit(train_data, 

train_target) 

43.print 

44. 

45.#预测结果 

46.predict_target 

clf.predict(test_data) 

47.print 

predict_target 

48. 

49.#预测结果与真实结果比对 

50.print 

sum(predict_target 

== 

test_target) 

51. 

52.#输出准确率 

召回率 

F值 

53.from 

sklearn 

metrics 

54.print(metrics.classification_report(test_target, 

predict_target)) 

55.print(metrics.confusion_matrix(test_target, 

56. 

57. 

58.#获取花卉测试数据集两列数据集 

59.X 

test_data 

60.L1 

[n[0] 

61.print 

62.L2 

[n[1] 

63.print 

64. 

65.#绘图 

66.import 

67.import 

68.plt.scatter(L1, 

c=predict_target, 

69.plt.title("

DecisionTreeClassifier"

70.plt.show() 

1.DecisionTreeClassifier(class_weight=None, 

criterion='

max_depth=None, 

max_features=None, 

max_leaf_nodes=None, 

min_samples_leaf=1, 

min_samples_split=2, 

min_weight_fraction_leaf=0.0, 

presort=False, 

random_state=None, 

5.[0 

6.30 

precision 

recall 

f1-score 

support 

1.00 

10 

13.avg 

total 

30 

15.[[10 

0] 

16. 

17. 

10]] 

绘制图形如下所示:

3.补充知识

最后补充Skleaern官网上的一个决策树的例子,推荐大家学习。

推荐地址:

Plotthedecisionsurfaceofadecisiontreeontheirisdataset

代码如下:

cop

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 机械仪表

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1