本人是业余的编程爱好者,非职业程序员,如有解读错误的地方,欢迎大牛评论指正。

我写这个的动力是:我一晚上花了大量的时间在网上找了各种关于决策树可视化的图中sex=male<0.5或sex=female<0.5代表什么含义value值哪个代表“遇难”,哪个数字代表“生还”为什么有的图显示class自己的却没有这些问题的解答,我没有找到一篇文章对此有很清晰全面的解答。但是我就是想搞懂这个,因为可以直接根据图像来获得判断条件与结果的相关性信息!故此花了很多时间进行研究得出了以下结论,希望对大家有帮助。

先说结论:

1、sex=male <= 0.5或 sex=female <= 0.5代表什么含义?

“sex=male” 、 “sex=female” 都是字典特征抽取后的特征值名称。特征抽取后,原先的“sex”特征经one-hot变成了“sex=male” 、 “sex=female”两个特征。

原特征 sex 是 “male” 的,在one-hot后的 “sex=male” 的值为1 ,在one-hot后的 “sex=female” 的值为0 。原特征 sex 是 female 的 反之。

sex=female  <= 0.5 是判断条件。是用特征抽取后 “sex=female”字段的值(0或1)做判断。

以上图为例。所有的女人(female)的 “sex=female” 值 都为1,经过 sex=female  <= 0.5 条件判断,故都属于false结果。

2、value值哪个代表“遇难”,哪个数字代表“生还”?

value最高的那个值,对应着class显示的分类。以上图为例。最顶的方框中 value = [608,373] 608 > 373 ,class = “死” , 所以608这个值代表遇难人数。

3、为什么有的图显示class自己的却没有?

      在可视化输出.dot文件时缺少传递class_names的值。

      修改下这行代码就把目标值名称传过来了。

      

from sklearn.tree import export_graphvizexport_graphviz(
decision_tree = estimator, # estimator 训练后的决策树预估器
out_file = None, # .dot文件输出路径
feature_names = a.get_feature_names() # a = DictVectorizer() 实例化的DictVectorizer
class_names = estimator.classes_ # estimator 训练后的决策树预估器
)

各项展示数据的解读

1、“sex=female” 经one-hot后的特征值。1 代表 sex=female ,0代表sex!=female。

2、entropy = 0.958 :信息熵增,数字越大越无序。

3、samples = 981 :样本总数共981个

4、value = [608,373]  :目标值共两类,属于第一类的数量为608个,属于第二类的数量为373个

5、class = 死 :value 值最高的分类的名称。

结论推理过程

结论一:sex=male <= 0.5或 sex=female <= 0.5代表什么含义?

证明“sex=male”、“sex=female”是原先的“sex”特征经one-hot特征抽取后拆分的。

import pandas as pd
from sklearn.feature_extraction import DictVectorizer
from sklearn.model_selection import train_test_splitdata = pd.read_excel(titanic.xls)feature_data = data[["pclass", "sex", "age", "sibsp", "parch"]] # 特征值使用这些
target_data = data["survived"] # 目标值字段 这个字段原先的值是0和1,为了清晰理解,我将数据源文件的0改为了“死”,1改为了“活”train_feature, test_feature, train_target, test_target = train_test_split(feature_data, target_data,train_size= 0.75, random_state= 2012) # 划分训练集和测试集
print(train_feature) # 看下特征训练集
train_feature = train_feature.to_dict(orient = "records") # 转化为字典格式
test_feature = test_feature.to_dict(orient = "records")a = DictVectorizer() # 实例化字典特征抽取
train_feature = a.fit_transform(train_feature)
test_feature = a.transform(test_feature)print(a.get_feature_names()) # 看下特征抽取后的特征名称
print(train_feature.toarray()) # 看下特征抽取后的特征值

print(train_feature) 结果如下

print(a.get_feature_names()) 
print(train_feature.toarray()) 结果如下

可以看到 sex 特征提取后 变为了 “sex=male”、“sex=female” 两个特征。

sex 属于 female 的第1、2行和倒数第2、3行,在“sex=female”中都是1,在“sex=male”中都是0。

sex 属于 male 的第3行和倒数第1行,在“sex=female”中都是0,在“sex=male”中都是1。

如果上述结论正确,那么sex=female <= 0.5 为True 的样本总数624个都是男人male(“sex=female”的值为0)。

a = train_feature.toarray()[...,-2] # 对训练特征集做切片,取出sex=male这一列,是一个一维数组。
print(a)
print(a.cumsum()) # 对一维数组做加和,因为男人的sex=male的值为1,所以返回的数组最后一个值是总数。

print(a)结果

看下前三个值跟后三个值与这张图的sex=male的值是对应上的。

print(a.cumsum()) 结果

总数是624,跟可视化sex=female <= 0.5 为True 的样本总数624 是能够对应的。故认为结论正确。

结论二: value值哪个代表“遇难”,哪个数字代表“生还”?

证明划分后的训练集样本总数981里是不是有608个“死”,373个“活”就行了。value第一个数字高class就显示“死”,第二个数字高class就显示活。

print(train_target)
print(train_target[train_target == "死"])
print(train_target[train_target == "活"])

结果:

Length:981与训练集样本总数981是一致的。

survivied = "死" 的 Length:608 ;survivied = "活" 的 Length:373,与value是一致的。故证明。

创作不易,转载请注明出处,谢谢!

关于决策树可视化各项展示数据的解读(泰坦尼克号预测生还案例Titanic)相关推荐

  1. CHAP6:通过可视化艺术共享数据

    1.数据可视化 数据可视化在许多方面是数据分析过程的高潮.在这部分课程中,您将了解数据可视化所涉及的概念.您将了解可访问性.设计思维和其他在分析中的数据可视化方面发挥作用的因素. 1.1了解数据可视化 ...

  2. 泰坦尼克号沉船数据分析与可视化、数据建模与分类预测【Python | 机器学习-Sklearn】

    泰坦尼克号沉船数据之美--起于悲剧,止于浪漫 前言:泰坦尼克号,不只是卡梅隆导演的经典电影,它是一个真实存在的悲剧,也是电影的故事背景与题材.作为一个IT人,分析事实还得看数据,了解到泰坦尼克号沉船幸 ...

  3. 决策树可视化以及数据所要的处理(查漏补缺)

    在前面的介绍当中,通过代码+注解的方式讲解了决策树的原理,而在可视化中通常调用对应的库会比较方便,这篇文章主要是可视化前的数据处理(若有错误的地方,请大家指教,谢谢!) 1.数据处理 import p ...

  4. 数据可视化方法:数据图表展示

    ​相信大多数公司的领导都已失去了一字一句看表格和文字的耐心,简化数据信息的方式之一就是图表,图表能够直观地展示数据,支撑观点,图表已经成了报表中最常用的数据展现方式之一.人类大脑对视觉信息的处理优于对 ...

  5. 【PBL项目实战】户外智慧农场项目实战系列之4——Mind+Mixly双平台ESP32数据上云及云端可视化实时展示

    [PBL项目实战]户外智慧农场项目实战系列之4--Mind+Mixly双平台ESP32数据上云及云端可视化实时展示 原文链接  https://mp.weixin.qq.com/s/r_NeJdPoi ...

  6. python数据分析图表展示_NBA数据分析_python数据爬取_可视化图形_python数据可视化案例-帆软...

    之前手痒做了一次NBA可视化分析,发个微头条,好多人追着我问教程,这两天终于闲下来了,花时间整理这篇NBA可视化分析教程,手把手教大家做一次炫酷的数据可视化分析! 先部分展示本次教程的作品: 数据获取 ...

  7. 可交互的数据可视化信息展示案例、u3d智慧城市、Ventuz数据可视化、大屏数据交互可视化、数字孪生

    提供U3D Ventuz等等 可交互的数据可视化信息展示项目工程源码及演示EXE,机不可失,先到先得.拿到手有能力的立马就可以改成自己的项目,大大减少了逻辑交互制作 uI动效制作等时间.可做模板使用, ...

  8. 【Pyecharts】Python数据可视化:英雄联盟2020赛季数据全方位解读~

    文章目录 前言 LPL战队数据对比 春/夏季赛战绩对比 K/D/A对比 视野对比 经济对比 地图资源获取对比 LPL VS LCK 主要指标对比 战队对比 选手数据 选手数据概览 主要选手数据对比-T ...

  9. 比较两组数据的差异用什么图更直观_用好这11种可视化图表,数据可视化技能秒提升...

    可视化不是单纯的数据展示,其真正价值是设计出可以被读者轻松理解的数据展示.数据与合适的图形结合,不仅能够让复杂的统计数字简单化.形象化,还能给读者一种视觉的享受. 今天,就让我们根据数据分析软件亿信A ...

最新文章

  1. linux apache两种工作模式详解
  2. android 布局: LinearLayout如何使TextView中的内容居中显示
  3. 使用vue组件搭建网页应用
  4. 113. 路径总和 II golang
  5. web动画_Web动画简介
  6. 02.规划过程组表格-需求跟踪矩阵
  7. python换零钱有多少种方案_Python之100个项目:零钱转换程序
  8. Android 5.0 开发者官方网站疏理知识结构
  9. 固定二进制位的整型变量
  10. 使用vim编辑编译c51程序
  11. java eclipse中修改Web项目的URL访问路径
  12. mysql sql语句执行到一半会怎么样?
  13. (pytorch)yolov3训练自己的模型
  14. mnist数据集下载linux,机器学习数据集篇——MNIST数据集
  15. 此处纸薄不经墨,待入章中再续貂
  16. c语言将首字母变大写,c语言问题 将首字母变为大写
  17. 【闲】获取视频选集(每集)名字
  18. 【Python】《Python语言程序设计》(嵩天 、黄天羽 、礼欣)测验单项选择题答案与解析合辑
  19. 今天分享一个用Python来爬取小说的小脚本!(附源码)
  20. 【凸优化】关于 KKT 条件 及其最优性

热门文章

  1. android删除手机照片恢复软件下载,android手机里被删除的照片怎么恢复软件
  2. linux基础(四):shell简单命令;文件系统命令,系统操作命令,文本操作命令;文本处理命令
  3. 再见!IBM中国研究院!955 外企现状如何?
  4. 智慧路灯杆系统环境监测 5G智能灯杆网关的功能有哪些
  5. 微信小程序 云开发-答题小程序 demo
  6. 雨阳打字通 v1.0 发布
  7. python计算化学浓度_python 计算化学
  8. error: cannot lock ref 'refs/remotes/origin/test/pressure-test': 'refs/remotes/origin/test' exists;
  9. 独家:沪上三大律师解读“三驾马车”下的数据合规与上海数商体系创新​
  10. 2017下半年掘金日报优质文章合集:Android篇,靠着这份190页的面试资料