关于决策树可视化各项展示数据的解读(泰坦尼克号预测生还案例Titanic)
本人是业余的编程爱好者,非职业程序员,如有解读错误的地方,欢迎大牛评论指正。
我写这个的动力是:我一晚上花了大量的时间在网上找了各种关于决策树可视化的图中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)相关推荐
- CHAP6:通过可视化艺术共享数据
1.数据可视化 数据可视化在许多方面是数据分析过程的高潮.在这部分课程中,您将了解数据可视化所涉及的概念.您将了解可访问性.设计思维和其他在分析中的数据可视化方面发挥作用的因素. 1.1了解数据可视化 ...
- 泰坦尼克号沉船数据分析与可视化、数据建模与分类预测【Python | 机器学习-Sklearn】
泰坦尼克号沉船数据之美--起于悲剧,止于浪漫 前言:泰坦尼克号,不只是卡梅隆导演的经典电影,它是一个真实存在的悲剧,也是电影的故事背景与题材.作为一个IT人,分析事实还得看数据,了解到泰坦尼克号沉船幸 ...
- 决策树可视化以及数据所要的处理(查漏补缺)
在前面的介绍当中,通过代码+注解的方式讲解了决策树的原理,而在可视化中通常调用对应的库会比较方便,这篇文章主要是可视化前的数据处理(若有错误的地方,请大家指教,谢谢!) 1.数据处理 import p ...
- 数据可视化方法:数据图表展示
相信大多数公司的领导都已失去了一字一句看表格和文字的耐心,简化数据信息的方式之一就是图表,图表能够直观地展示数据,支撑观点,图表已经成了报表中最常用的数据展现方式之一.人类大脑对视觉信息的处理优于对 ...
- 【PBL项目实战】户外智慧农场项目实战系列之4——Mind+Mixly双平台ESP32数据上云及云端可视化实时展示
[PBL项目实战]户外智慧农场项目实战系列之4--Mind+Mixly双平台ESP32数据上云及云端可视化实时展示 原文链接 https://mp.weixin.qq.com/s/r_NeJdPoi ...
- python数据分析图表展示_NBA数据分析_python数据爬取_可视化图形_python数据可视化案例-帆软...
之前手痒做了一次NBA可视化分析,发个微头条,好多人追着我问教程,这两天终于闲下来了,花时间整理这篇NBA可视化分析教程,手把手教大家做一次炫酷的数据可视化分析! 先部分展示本次教程的作品: 数据获取 ...
- 可交互的数据可视化信息展示案例、u3d智慧城市、Ventuz数据可视化、大屏数据交互可视化、数字孪生
提供U3D Ventuz等等 可交互的数据可视化信息展示项目工程源码及演示EXE,机不可失,先到先得.拿到手有能力的立马就可以改成自己的项目,大大减少了逻辑交互制作 uI动效制作等时间.可做模板使用, ...
- 【Pyecharts】Python数据可视化:英雄联盟2020赛季数据全方位解读~
文章目录 前言 LPL战队数据对比 春/夏季赛战绩对比 K/D/A对比 视野对比 经济对比 地图资源获取对比 LPL VS LCK 主要指标对比 战队对比 选手数据 选手数据概览 主要选手数据对比-T ...
- 比较两组数据的差异用什么图更直观_用好这11种可视化图表,数据可视化技能秒提升...
可视化不是单纯的数据展示,其真正价值是设计出可以被读者轻松理解的数据展示.数据与合适的图形结合,不仅能够让复杂的统计数字简单化.形象化,还能给读者一种视觉的享受. 今天,就让我们根据数据分析软件亿信A ...
最新文章
- linux apache两种工作模式详解
- android 布局: LinearLayout如何使TextView中的内容居中显示
- 使用vue组件搭建网页应用
- 113. 路径总和 II golang
- web动画_Web动画简介
- 02.规划过程组表格-需求跟踪矩阵
- python换零钱有多少种方案_Python之100个项目:零钱转换程序
- Android 5.0 开发者官方网站疏理知识结构
- 固定二进制位的整型变量
- 使用vim编辑编译c51程序
- java eclipse中修改Web项目的URL访问路径
- mysql sql语句执行到一半会怎么样?
- (pytorch)yolov3训练自己的模型
- mnist数据集下载linux,机器学习数据集篇——MNIST数据集
- 此处纸薄不经墨,待入章中再续貂
- c语言将首字母变大写,c语言问题 将首字母变为大写
- 【闲】获取视频选集(每集)名字
- 【Python】《Python语言程序设计》(嵩天 、黄天羽 、礼欣)测验单项选择题答案与解析合辑
- 今天分享一个用Python来爬取小说的小脚本!(附源码)
- 【凸优化】关于 KKT 条件 及其最优性
热门文章
- android删除手机照片恢复软件下载,android手机里被删除的照片怎么恢复软件
- linux基础(四):shell简单命令;文件系统命令,系统操作命令,文本操作命令;文本处理命令
- 再见!IBM中国研究院!955 外企现状如何?
- 智慧路灯杆系统环境监测 5G智能灯杆网关的功能有哪些
- 微信小程序 云开发-答题小程序 demo
- 雨阳打字通 v1.0 发布
- python计算化学浓度_python 计算化学
- error: cannot lock ref 'refs/remotes/origin/test/pressure-test': 'refs/remotes/origin/test' exists;
- 独家:沪上三大律师解读“三驾马车”下的数据合规与上海数商体系创新​
- 2017下半年掘金日报优质文章合集:Android篇,靠着这份190页的面试资料