当前位置:网站首页>决策树原理和案例应用-泰坦尼克号生存预测
决策树原理和案例应用-泰坦尼克号生存预测
2022-07-17 05:04:00 【Big data达闻西】
决策树
学习目标
- 目标
- 说明信息熵的公式以及作用
- 说明信息增益的公式作用
- 应用信息增益实现计算特征的不确定性减少程度
- 了解决策树的三种算法实现
- 应用
- 泰坦尼克号乘客生存预测
1、认识决策树
决策树思想的来源非常朴素,程序设计中的条件分支结构就是if-then结构,最早的决策树就是利用这类结构分割数据的一种分类学习方法
怎么理解这句话?通过一个对话例子

想一想这个女生为什么把年龄放在最上面判断!!!!!!!!!
2、决策树分类原理详解
为了更好理解决策树具体怎么分类的,我们通过一个问题例子?

问题:如何对这些客户进行分类预测?你是如何去划分?
有可能你的划分是这样的

那么我们怎么知道这些特征哪个更好放在最上面,那么决策树的真是划分是这样的

2.1 原理
- 信息熵、信息增益等
需要用到信息论的知识!!!问题:通过例子引入信息熵
2.2 信息熵
那来玩个猜测游戏,猜猜这32支球队那个是冠军。并且猜测错误付出代价。每猜错一次给一块钱,告诉我是否猜对了,那么我需要掏多少钱才能知道谁是冠军? (前提是:不知道任意球队的信息、历史比赛记录、实力等)

为了使代价最小,可以使用二分法猜测:
我可以把球编上号,从1到32,然后提问:冠 军在1-16号吗?依次询问,只需要五次,就可以知道结果。
香农指出,它的准确信息量应该是,p为每个球队获胜的概率(假设概率相等,都为1/32),我们不用钱去衡量这个代价了,香浓指出用比特:
H = -(p1logp1 + p2logp2 + ... + p32log32) = - log32
2.2.1 信息熵的定义
- H的专业术语称之为信息熵,单位为比特。

“谁是世界杯冠军”的信息量应该比5比特少,特点(重要):
当这32支球队夺冠的几率相同时,对应的信息熵等于5比特
只要概率发生任意变化,信息熵都比5比特大
2.2.2 总结(重要)
- 信息和消除不确定性是相联系的
当我们得到的额外信息(球队历史比赛情况等等)越多的话,那么我们猜测的代价越小(猜测的不确定性减小)
问题: 回到我们前面的贷款案例,怎么去划分?可以利用当得知某个特征(比如是否有房子)之后,我们能够减少的不确定性大小。越大我们可以认为这个特征很重要。那怎么去衡量减少的不确定性大小呢?
2.3 决策树的划分依据之一------信息增益
2.3.1 定义与公式
特征A对训练数据集D的信息增益g(D,A),定义为集合D的信息熵H(D)与特征A给定条件下D的信息条件熵H(D|A)之差,即公式为:

公式的详细解释:

注:信息增益表示得知特征X的信息而息的不确定性减少的程度使得类Y的信息熵减少的程度
#### 2.3.2 贷款特征重要计算

- 我们以年龄特征来计算:
```python
1、g(D, 年龄) = H(D) -H(D|年龄) = 0.971-[5/15H(青年)+5/15H(中年)+5/15H(老年]
2、H(D) = -(6/15log(6/15)+9/15log(9/15))=0.971
3、H(青年) = -(3/5log(3/5) +2/5log(2/5))
H(中年)=-(3/5log(3/5) +2/5log(2/5))
H(老年)=-(4/5og(4/5)+1/5log(1/5))
```
我们以A1、A2、A3、A4代表年龄、有工作、有自己的房子和贷款情况。最终计算的结果g(D, A1) = 0.313, g(D, A2) = 0.324, g(D, A3) = 0.420,g(D, A4) = 0.363。所以我们选择A3 作为划分的第一个特征。这样我们就可以一棵树慢慢建立
2.4 决策树的三种算法实现
当然决策树的原理不止信息增益这一种,还有其他方法。但是原理都类似,我们就不去举例计算。
- ID3
- 信息增益 最大的准则
- C4.5
- 信息增益比 最大的准则
- CART
- 分类树: 基尼系数 最小的准则 在sklearn中可以选择划分的默认原则
- 优势:划分更加细致(从后面例子的树显示来理解)
2.5 决策树API
class sklearn.tree.DecisionTreeClassifier(criterion=’gini’, max_depth=None,random_state=None)
- 决策树分类器
- criterion:默认是’gini’系数,也可以选择信息增益的熵’entropy’
- max_depth:树的深度大小
- random_state:随机数种子
其中会有些超参数:max_depth:树的深度大小

3.1 分析
选择我们认为重要的几个特征 [‘pclass’, ‘age’, ‘sex’]
填充缺失值
特征中出现类别符号,需要进行one-hot编码处理(DictVectorizer)
- x.to_dict(orient=“records”) 需要将数组特征转换成字典数据
数据集划分
决策树分类预测
3.2 代码
def decisioncls(): """ 决策树进行乘客生存预测 :return: """ # 1、获取数据 titan = pd.read_csv("http://biostat.mc.vanderbilt.edu/wiki/pub/Main/DataSets/titanic.txt") # 2、数据的处理 x = titan[['pclass', 'age', 'sex']] y = titan['survived'] # print(x , y) # 缺失值需要处理,将特征当中有类别的这些特征进行字典特征抽取 x['age'].fillna(x['age'].mean(), inplace=True) # 对于x转换成字典数据x.to_dict(orient="records") # [{"pclass": "1st", "age": 29.00, "sex": "female"}, {}] dict = DictVectorizer(sparse=False) x = dict.fit_transform(x.to_dict(orient="records")) print(dict.get_feature_names()) print(x) # 分割训练集合测试集 x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3) # 进行决策树的建立和预测 dc = DecisionTreeClassifier(max_depth=5) dc.fit(x_train, y_train) print("预测的准确率为:", dc.score(x_test, y_test)) return None由于决策树类似一个树的结构,我们可以保存到本地显示
3.3 保存树的结构到dot文件
- 1、sklearn.tree.export_graphviz() 该函数能够导出DOT格式
- tree.export_graphviz(estimator,out_file='tree.dot’,feature_names=[‘’,’’])
- 2、工具:(能够将dot文件转换为pdf、png)
- 安装graphviz
- ubuntu:sudo apt-get install graphviz Mac:brew install graphviz
- 3、运行命令
- 然后我们运行这个命令
- dot -Tpng tree.dot -o tree.png
export_graphviz(dc, out_file="./tree.dot", feature_names=['age', 'pclass=1st', 'pclass=2nd', 'pclass=3rd', '女性', '男性'])4、 决策树总结
- 优点:
- 简单的理解和解释,树木可视化。
- 缺点:
- 决策树学习者可以创建不能很好地推广数据的过于复杂的树,这被称为过拟合。
- 改进:
- 减枝cart算法(决策树API当中已经实现,随机森林参数调优有相关介绍)
- 随机森林
注:企业重要决策,由于决策树很好的分析能力,在决策过程应用较多, 可以选择特征
- 1、sklearn.tree.export_graphviz() 该函数能够导出DOT格式
‘男性’])
## 4、 决策树总结
- 优点:
- 简单的理解和解释,树木可视化。
- 缺点:
- **决策树学习者可以创建不能很好地推广数据的过于复杂的树,这被称为过拟合。**
- 改进:
- 减枝cart算法(决策树API当中已经实现,随机森林参数调优有相关介绍)
- **随机森林**
**注:企业重要决策,由于决策树很好的分析能力,在决策过程应用较多, 可以选择特征**
边栏推荐
- User login - and create SMS verification code
- 日志加入数据库实现思路
- Conception finale: système distribué de gestion de la santé pour la prévention des épidémies hautement simultanées basé sur vue + socket + redis
- 上传七牛云的方法
- MYSQL两个查询条件取并集然后进行查询
- Notes on Advanced Mathematics: selected exercises of Wu Yue
- . SH scripting
- Notes on Advanced Mathematics: second derivative of composite function and curvature of solving parametric equation
- Notes de formation pour la deuxième fois des modèles
- Redis installation
猜你喜欢
![[batch] batch delete intermediate folder - personal research script](/img/6d/699987559bc25998e635a403d9d52d.png)
[batch] batch delete intermediate folder - personal research script

ModerlArts第一次培训笔记

DSL search results processing, including sorting, paging, highlighting

事务的使用-django、 SQL工具

pygame安装-Requirement already satisfied问题

关于当前响应已经调用了方法getOutputStream()

ModelArts第二次培訓筆記

CVE-2022-23131 Zabbix SAML SSO认证绕过漏洞

Cve-2021-44228 log4j reproduction and principle

User login - and create SMS verification code
随机推荐
pygame安装-Requirement already satisfied问题
ModelArts第二次培训笔记
NoSQL概述
Harmonyos third training notes
POC——DVWA‘s File Inclusion
【Batch】批量删除中间文件夹-个人研究脚本
Cve-2021-44228 log4j reproduction and principle
Notes on Advanced Mathematics: second derivative of composite function and curvature of solving parametric equation
Desensitization field example
Learn about the configuration center
POC——DVWA‘s SQL Injection
Logic of image uploading
Install MySQL
3. Restclient query document
Redis installation
God rewards hard work, keep loving
Hyperlink implementation post submission
CVE-2020-10199 Nexus Repository Manager3远程命令执行漏洞复现
Restclient operation document
Attendance check-in and leave system based on SSM framework