目录

1 案例背景

2 决策树算法api

3. 代码实现

3.1 代码部分分析

3.2 完整代码

4 决策树可视化

4.1 保存树的结构到dot文件

4.2 网站显示结构

4.2.1效果

5 决策树总结

5.1 优点

5.2 缺点

5.3 改进


1 案例背景

泰坦尼克号沉没是历史上最臭名昭着的沉船之⼀。 1912年4⽉ 15⽇ , 在她的处⼥航中, 泰坦尼克号在与冰⼭相撞后沉没, 在2224名乘客和机组⼈员中造成1502⼈死亡。 这场耸⼈听闻的悲剧震惊了国际社会, 并为船舶制定了更好的安全规定。 造成海难失事的原因之⼀是乘客和机组⼈员没有⾜够的救⽣艇。 尽管幸存下沉有⼀些运⽓因素, 但有些⼈⽐其他⼈更容易⽣存, 例如妇⼥, ⼉童和上流社会。 在这个案例中, 我们要求您完成对哪些⼈可能存活的分析。 特别是,我们要求您运⽤机器学习⼯具来预测哪些乘客幸免于悲剧。
案例: https://www.kaggle.com/c/titanic/overview
我们提取到的数据集中的特征包括票的类别, 是否存活, 乘坐班次, 年龄, 登陆home.dest, 房间, 船和性别等。
数据: http://biostat.mc.vanderbilt.edu/wiki/pub/Main/DataSets/titanic.txt

2 决策树算法api

  • class sklearn.tree.DecisionTreeClassifier(criterion=’gini’, max_depth=None,random_state=None)

1.criterion
特征选择标准
"gini"或者"entropy", 前者代表基尼系数, 后者代表信息增益。 ⼀默认"gini", 即CART算法。
2.min_samples_split
内部节点再划分所需最⼩样本数
这个值限制了⼦树继续划分的条件, 如果某节点的样本数少于min_samples_split, 则不会继续再尝试选择最优特征来进⾏划分。 默认是2.如果样本量不⼤, 不需要管这个值。 如果样本量数量级⾮常⼤, 则推荐增⼤这个值。 我之前的⼀个项⽬例⼦, 有⼤概10万样本, 建⽴决策树时, 我选择了min_samples_split=10。可以作为参考。
3.min_samples_leaf
叶⼦节点最少样本数
这个值限制了叶⼦节点最少的样本数, 如果某叶⼦节点数⽬⼩于样本数, 则会和兄弟节点⼀起被剪枝。默认是1,可以输⼊最少的样本数的整数, 或者最少样本数占样本总数的百分⽐。 如果样本量不⼤, 不需要管这个值。 如果样本量数量级⾮常⼤, 则推荐增⼤这个值。 之前的10万样本项⽬使⽤min_samples_leaf的值为5, 仅供参考。
4.max_depth
决策树最⼤深度
决策树的最⼤深度, 默认可以不输⼊, 如果不输⼊的话, 决策树在建⽴⼦树的时候不会限制⼦树的深度。⼀般来说, 数据少或者特征少的时候可以不管这个值。 如果模型样本量多, 特征也多的情况下, 推荐限制这个最⼤深度, 具体的取值取决于数据的分布。 常⽤的可以取值10-100之间。
5.random_state
随机数种⼦

3. 代码实现

3.1 代码部分分析

  • 导入需要的模块

  • 1.获取数据

  • 2.数据的基本处理

2.1 确定特征值,目标值

2.2 缺失值处理

2.3 数据集划分

  • 3.特征工程(字典特征抽取)

特征中出现类别符号, 需要进⾏one-hot编码处理(DictVectorizer)   ;x.to_dict(orient="records") 需要将数组特征转换成字典数据。
      

  • 4. 决策树模型训练和评估

决策树API当中, 如果没有指定max_depth那么会根据信息熵的条件直到最终结束。 这⾥我们可以指定树的深度来进⾏限制树的⼤⼩。

3.2 完整代码

# 1.获取数据
# 2.数据基本处理
# 2.1 确定特征值,目标值
# 2.2 缺失值处理
# 2.3 数据集划分
# 3.特征工程(字典特征抽取)
# 4.机器学习(决策树)
# 5.模型评估
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction import DictVectorizer
from sklearn.tree import DecisionTreeClassifier, export_graphviz
# 1.获取数据
titan =pd.read_csv("http://biostat.mc.vanderbilt.edu/wiki/pub/Main/DataSets/titanic.txt")
# 2.数据基本处理
# 2.1 确定特征值,目标值
x = titan[["pclass", "age", "sex"]]
y = titan["survived"]
# 2.2 缺失值处理
x['age'].fillna(value=titan["age"].mean(), inplace=True)
# 2.3 数据集划分
x_train, x_test, y_train, y_test = train_test_split(x, y, random_state=22, test_size=0.2)
# 3.特征工程(字典特征抽取)
x_train = x_train.to_dict(orient="records")
x_test = x_test.to_dict(orient="records")
transfer = DictVectorizer()
x_train = transfer.fit_transform(x_train)
x_test = transfer.fit_transform(x_test)
# 4.机器学习(决策树)
estimator = DecisionTreeClassifier(max_depth=15)
estimator.fit(x_train, y_train)
# 5.模型评估
y_pre = estimator.predict(x_test)
ret = estimator.score(x_test, y_test)
print(ret)
export_graphviz(estimator, out_file="./data/tree.dot", feature_names=['age', 'pclass=1st', 'pclass=2nd', 'pclass=3rd', '女性', '男性'])

4 决策树可视化

4.1 保存树的结构到dot文件

  • sklearn.tree.export_graphviz() 该函数能够导出DOT格式

tree.export_graphviz(estimator,out_file='tree.dot’,feature_names=[‘’,’’])

dot文件当中的内容如下

那么这个结构不能看清结构, 所以可以在⼀个⽹站上显示

4.2 网站显示结构

  • http://webgraphviz.com/

4.2.1效果

5 决策树总结

5.1 优点

简单的理解和解释,树木可视化

5.2 缺点

决策树学习者可以创建不能很好地推广数据的过于复杂的树,容易发生过拟合。

5.3 改进

剪枝cart算法

随机森林

参考:黑马程序员课程

决策树算法实现:泰坦尼克号乘客生存预测 (python实现)相关推荐

  1. 【决策树算法】泰坦尼克号乘客生存预测

    泰坦尼克号乘客生存预测 1. 案例背景 2. 步骤分析 3. 代码实现 4. 决策树可视化 4.1 保存树的结构到dot文件 4.2 网站显示结构 5. 决策树总结 6. 小结 1. 案例背景 泰坦尼 ...

  2. 泰坦尼克号乘客生存预测(XGBoost)

    泰坦尼克号乘客生存预测(XGBoost) 1. 案例背景 2. 步骤分析 3. 代码实现 1. 案例背景 泰坦尼克号沉没是历史上最臭名昭着的沉船之一.1912年4月15日,在她的处女航中,泰坦尼克号在 ...

  3. 泰坦尼克号乘客生存预测

    泰坦尼克号乘客获救预测 1. 案例背景 泰坦尼克号沉船事故是世界上最著名的沉船事故之一.1912年4月15日,在她的处女航期间,泰坦尼克号撞上冰山后沉没,造成2224名乘客和机组人员中超过1502人的 ...

  4. 机器学习决策树算法泰坦尼克号乘客生存预测

    目录 1 决策树算法api 2 泰坦尼克号乘客案例背景 2.1 步骤分析 2.2 代码实现 2.3 决策树可视化 2.3.1 保存树的结构到dot文件 2.3.2 网站显示结构 3 决策树总结 4 小 ...

  5. 数据分析实战之决策树(泰坦尼克号乘客生存预测)

    本文利用已给特征属性和存活与否标签的训练集和只包含特征信息测试集数据,通过决策树模型来预测测试集数据乘客的生存情况 数据集来源为https://github.com/cystanford/Titani ...

  6. gini系数 决策树_案例7:机器学习--使用决策树实现泰坦尼克号乘客生存率预测...

    一.决策树简介 1.1 什么是决策树? 决策树:是一种树形结构,其中每个内部节点表示一个属性上的判断,每个分支代表一个判断结果的输出,最后每个叶节点代表一种分类结果,本质是一颗由多个判断节点组成的树. ...

  7. 泰坦尼克号乘客生存情况预测分析之第三部分建模及模型评价

    第三部分建模及模型评价 前面两部分我们已经对泰坦尼克号的数据进行了一些处理,感兴趣的小伙伴可以看看前面两篇文章,本篇主要介绍预测分析的第三部分,也就是建模和模型评价.数据处理完了,接下来就来看看在默认 ...

  8. 19丨决策树(下):泰坦尼克乘客生存预测

    在前面的两篇文章中,我给你讲了决策树算法.决策树算法是经常使用的数据挖掘算法,这是因为决策树就像一个人脑中的决策模型一样,呈现出来非常直观.基于决策树还诞生了很多数据挖掘算法,比如随机森林(Rando ...

  9. 泰坦尼克号乘客生存情况分析第一部分

    第一部分 数据读取及探索性分析 哈喽,各位小伙伴.今晚是平安夜,就先祝大家平安夜快乐,永远平安健康.泰坦尼克号相信很多人都不陌生,今天呢,主要聊一聊之前做过的一个小项目,预测下泰坦尼克号乘客的生存情况 ...

最新文章

  1. [推荐]在线测试你的网速
  2. 配置思路ensp_配置OSPF的Stub区域示例
  3. 【AI白身境】一文览尽计算机视觉研究方向
  4. 使用MySQL验证Open***用户登录访问
  5. c++ 一维数组长度_每天一点C / 一维数组和指针
  6. 【javascript高级教程】JavaScript 字符串(String) 对象
  7. ​​使用win7超级终端连接华为交换机并配置端口镜像
  8. 流计算引擎数据一致性的本质
  9. 自学python要看哪些书-学习机器学习应该看哪些书籍?
  10. WinXP无损升级Win10
  11. 十天学会单片机(2)点亮一个发光管
  12. 自制Anki选择题模板(支持桌面版/移动版)
  13. 超级码力在线编程大赛初赛第1场-1-树木规划题解
  14. [Android Studio]开发APP应用出现软件程序打开闪退的排错
  15. 如何搞定会计人员头疼的固定资产盘点?
  16. java点赞_java实现点赞功能示例
  17. 查看oracle操作日志
  18. 麻省理工学院公开课:单变量微积分习题课
  19. Win11便签打不开怎么办?Win11便笺停止工作解决方法
  20. 认识c语言程序,认识C语言 -一个完整的C语言程序是什么样的?

热门文章

  1. 七星彩长奖表图_新版够力七星彩奖表
  2. python控制树莓派马达_树莓派控制步进电机
  3. K邻近算法(K-NN)
  4. myeclipse修改jsp页面无反应
  5. Hackbar 免费下载+使用指南
  6. 客厅智能化(5、6)
  7. S7-200 smart xp(sp3) 环境下的编程软件
  8. ORA-00119和ORA-00132的解决方案(Oracle11g--准确版本11.2)
  9. [Python 爬虫] 使用 Scrapy 爬取新浪微博用户信息(三) —— 数据的持久化——使用MongoDB存储爬取的数据
  10. 『.NET Tools』C#/.NET 计算文本相似度