速通——决策树(泰坦尼克号乘客生存预测案例)

这篇具有很好参考价值的文章主要介绍了速通——决策树(泰坦尼克号乘客生存预测案例)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、决策树

1、概述

        树中每个内部节点表示一个特征上的判断,每个分支代表一个判断结果的输出,每个叶子节点代表一种分类结果

2、建立过程

        1. 特征选择:选取有较强分类能力的特征。

        2. 决策树生成:根据选择的特征生成决策树。

        3. 决策树也易过拟合,采用剪枝的方法缓解过拟合

二、信息熵

1、概述:描述信息的 完整性 和 有序性

2、熵(Entropy)

        信息论中代表 随机变量 不确定度的度量;熵越大,数据的不确定性越高,信息就越多;熵越小,数据的不确定性越低

3、计算方法

速通——决策树(泰坦尼克号乘客生存预测案例),机器学习,决策树,人工智能

        P(xi) :数据中类别出现的概率
​        H(x) :信息的信息熵值

三、信息增益

1、概述

        由于特征A而使得对数据D的 分类不确定性 减少的程度,特征 a 对训练数据集D的 信息增益 g(D,a),定义为集合D的熵 H(D) 与特征a给定条件下D的熵 H(D|a)之差(信息增益 = 熵 - 条件熵)

2、数学公式

速通——决策树(泰坦尼克号乘客生存预测案例),机器学习,决策树,人工智能

3、条件熵

速通——决策树(泰坦尼克号乘客生存预测案例),机器学习,决策树,人工智能

四、决策树分类

1、ID3 决策树

构建流程:

        1、计算每个特征的信息增益

        2、使用信息增益最大的特征将数据集 拆分为子集

        3、使用该特征(信息增益最大的特征)作为决策树的一个节点

        4、使用剩余特征对子集重复上述(1,2,3)过程

特点:倾向于选择取值较多的属性(不足),只能对离散属性的数据集构成决策树

2、C4.5 决策树

概述:信息增益率大的做为分裂特征,是在信息增益的基础上除以当前特征的固有值,可以衡量属性对分类的贡献

计算方法:        信息增益率 = 信息增益 / 特征熵

速通——决策树(泰坦尼克号乘客生存预测案例),机器学习,决策树,人工智能

速通——决策树(泰坦尼克号乘客生存预测案例),机器学习,决策树,人工智能

本质:相当于对信息增益进行修正,增加一个惩罚系数;特征取值个数较多时,惩罚系数较小;特征取值个数较少时,惩罚系数较大。

惩罚系数:数据集D 以 特征a 作为随机变量的熵的倒数

特点:1. 缓解了ID3分支过程中总喜欢偏向选择值较多的属性;

           2. 可处理连续数值型属性,也增加了对缺失值的处理方法;

           3. 只适合于能够驻留于内存的数据集,大数据集无能为力

3、CART决策树(Classification and Regression Tree)

概述:是一种决策树模型,既可以用于分类,也可以用于回归。Cart回归树 使用平方误差 最小化策略,Cart分类生成树 采用的基尼指数 最小化策略。

特点:1. 可以进行分类和回归,可处理离散属性,也可以处理连续属性

           2. 采用基尼指数,计算量减小

           3. 一定是二叉树

CART分类树

基尼值 Gini(D):从数据集D中随机抽取两个样本,其类别标记不一致的概率。故,Gini(D)值越小,数据集D的纯度越高。

计算方法:Gini(D)= 1 - 特征分类1^2 - 特征分类2^2

速通——决策树(泰坦尼克号乘客生存预测案例),机器学习,决策树,人工智能

基尼指数 Gini_index(D):选择使划分后基尼系数最小的属性作为最优 化分属性。

速通——决策树(泰坦尼克号乘客生存预测案例),机器学习,决策树,人工智能

Tips:特征的信息增益(ID3)、信息增益率值越大(C4.5),优先选择该特征。基尼指数值越小(cart),优先选择该特征。

API

导包:from sklearn.tree import DecisionTreeClassifier

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

# 导包
from sklearn.tree import DecisionTreeClassifier

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

Criterion: 特征选择标准,"gini" 或 "entropy",前者代表基尼系数,后者代表信息增益。默认"gini",即CART算法

min_samples_split:内部节点再划分所需最小样本数,默认为 2
min_samples_leaf:叶子节点最少样本数,默认为 1
max_depth:决策树最大深度

CART回归树

        可以处理 非线性关系

平方损失:(值 - 均值)^2

速通——决策树(泰坦尼克号乘客生存预测案例),机器学习,决策树,人工智能

构建过程

        1、选择一个特征,将该特征的值进行排序,取相邻点计算均值作为待划分点

        2、根据所有划分点,将数据集分成两部分:R1、R2

        3、R1 和 R2 两部分的平方损失相加作为该切分点平方损失

        4、取最小的平方损失的划分点,作为当前特征的划分点

        5、以此计算其他特征的最优划分点、以及该划分点对应的损失值

        6、在所有的特征的划分点中,选择出最小平方损失的划分点,作为当前树的分裂点

CART回归树 与 CART分类树 的不同

        1、CART 分类树预测输出的是一个离散值,CART 回归树预测输出的是一个连续值;

        2、CART 分类树使用基尼指数作为划分、构建树的依据,CART 回归树使用平方损失;

        3、分类树使用叶子节点多数类别作为预测类别,回归树则采用叶子节点里均值作为预测输出

五、决策树剪枝(正则化)

概述:是一种防止决策树过拟合的一种正则化方法,提高其泛化能力;即把子树的节点全部删掉,使用叶子节点来替换

剪枝方法

        1、预剪枝:指在决策树生成过程中,对每个节点在划分前先进行估计,若当前节点的划分不能带来决策树泛化性能提升,则停止划分并将当前节点标记为叶节点

优点:预剪枝使决策树的很多分支没有展开,不单降低了过拟合风险,还显著减少了决策树的训练、测试时间开销;

缺点:有些分支的当前划分虽不能提升泛化性能,但后续划分却有可能导致性能的显著提高,预剪枝决策树也带来了欠拟合的风险。

        2、后剪枝:是先从训练集生成一棵完整的决策树,然后自底向上地对非叶节点进行考察,若将该节点对应的子树替换为叶节点能带来决策树泛化性能提升,则将该子树替换为叶节点。

优点:后剪枝决策树的欠拟合风险很小,泛化性能往往优于预剪枝

缺点:训练时间开销 比 未剪枝的决策树 和 预剪枝的决策树都要大得多

六、案例——泰坦尼克号乘客生存预测

数据情况:数据集中的特征包括票的类别,是否存活,乘坐班次,年龄,登陆,home.dest,房间和性别等,乘坐班次是(1,2,3),是社会经济阶层的代表,age数据存在缺失。

1、导包

import pandas as pd
# 数据划分
from sklearn.model_selection import train_test_split
# 决策树
from sklearn.tree import DecisionTreeClassifier
# 分类算法
from sklearn.metrics import classification_report
# 可视化
import matplotlib.pyplot as plt
from sklearn.tree import plot_tree

2、导入数据

titanic_df  = pd.read_csv('titanic/train.csv')
# Pclass 船舱等级  Sibsp 同行兄弟姐妹人数 Parch 同行的父母孩子的人数 
# Ticket 票号 
# Fare 花了多少钱
# Cabin 船舱编号
# Embarked 登船的港口名称
titanic_df

3、数据处理

# 总计空值数量
titanic_df.isnull().sum()

# 年龄进行缺失值填充
X['Age'].fillna(X['Age'].mean(),inplace = True)

# 性别编码
X = pd.get_dummies(X)

4、数据划分、训练、使用、评估模型

# 划分训练集、测试集
X_train, X_test, y_train, y_test = train_test_split(X,y,stratify=y,random_state=66)
# 设置决策树模型
estimator = DecisionTreeClassifier(max_depth=6)
# 训练模型
estimator.fit(X_train,y_train)
# 模型预测
y_pred = estimator.predict(X_test)
# 评估模型
print('训练集',estimator.score(X_train, y_train))
print('测试集',estimator.score(X_test, y_test))

速通——决策树(泰坦尼克号乘客生存预测案例),机器学习,决策树,人工智能

 5、可视化

plt.figure(figsize=(30,20))
plot_tree(estimator,
          max_depth=6,    # max_depth 绘制的最大深度
          filled=True,    # filled = True 填充每个节点的背景颜色
          feature_names=X.columns,    # feature_names 特征名字 每个节点中显示的特征名字
          class_names=['died', 'survived'])    # class_names  目标值名字    每个节点中显示的目标值名字
plt.show()

速通——决策树(泰坦尼克号乘客生存预测案例),机器学习,决策树,人工智能文章来源地址https://www.toymoban.com/news/detail-810023.html

到了这里,关于速通——决策树(泰坦尼克号乘客生存预测案例)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 极简sklearn-使用决策树预测泰坦尼克号幸存者

    泰坦尼克号幸存者数据集是kaggle竞赛中入门级的数据集,今天我们就来用决策树来预测下哪些人会成为幸存者。 数据集下载地址: https://download.csdn.net/download/ting4937/87630361  数据集中包含两个csv文件,data为训练用数据,test为测试集。 首先我们通过pandas来读取并查看数据 数据如

    2024年02月04日
    浏览(68)
  • 泰坦尼克号幸存者预测

    本文所有的代码及数据均存放与https://github.com/MADMAX110/Titanic 泰坦尼克号幸存者预测挑战赛是一个非常受欢迎的机器学习实践项目。这是 Kaggle.com 上最受欢迎的比赛之一。 数据中有3个文件:train.csv,test.csv,和gender_submit .csv。 train.csv包含一部分乘客的详细信息。 test.csv没有显示

    2024年02月08日
    浏览(45)
  • 泰坦尼克号可视化数据分析报告

    上一节已经用用逻辑回归算法预测泰坦尼克号人员存活情况,但是不了解什么样的人容易存活;因此,用数据分析方法继续探究数据背后隐藏的秘密,并用数据可视化方法展示出来。 目录 提出问题 理解数据 采集数据 导入数据 查看数据 数据清洗 数据处理 幸存率与家庭类别

    2024年02月11日
    浏览(43)
  • 【机器学习kaggle赛事】泰坦尼克号生存预测

    目录 写在前面  数据集情况查看 数据清洗 Embarked: Fare Age Cabin  特征工程 1,探究Sex与Survived的相关性  2,探究Pcalss与Survived的关联性  3,Embarked:不同的上船地点对生存率是否有影响  ​4,Name与Survived的相关性  5,Cabin与Survived之间的相关性 6,探究孤身一人和有家人陪伴的

    2023年04月23日
    浏览(36)
  • Kaggle实战入门:泰坦尼克号生还预测(进阶版)

    Kaggle实战入门:泰坦尼克号生还预测(基础版)对机器学习的全流程进行了总体介绍。本文继续以泰坦尼克号生还预测为例,对机器学习中的特征工程、模型构建进行深入解读。 数据集及代码下载 由于针对训练数据集、测试数据集均要做空值填充、编码转换、离散化、归一

    2024年02月02日
    浏览(29)
  • 深度学习项目:泰坦尼克号生存预测【附完整源码】

    数据处理 建立模型 训练模型 评估模型 模型预测 保存模型 数据文件: 2.1 泰塔尼克号数据 数据描述: RMS 泰坦尼克号的沉没是历史上最为人熟知的海难事件之一。 1912 年 4 月 15 日,在她的处女航中,泰坦尼克号在与冰山相撞后沉没,在船上的 2224 名乘客和机组人员中,共造

    2024年02月09日
    浏览(40)
  • 机器学习实战(入门级) ------ Kaggle 泰坦尼克号幸存者预测 (随机森林,KNN,SVM)

    本篇将注重于机器学习预测模型的过程、数据分析以及项目实战落地。对于各种所使用的算法直接调用sklearn包,在这里不会说算法的原理和过程。有想看原理和过程的可以看我这两天整理的学习笔记。 KNN K邻近 学习笔记 各种聚类 学习笔记 决策树与随机森林 学习笔记 SVM 支

    2024年02月03日
    浏览(40)
  • 泰坦尼克号沉船数据分析与可视化、数据建模与分类预测【Python | 机器学习-Sklearn】

    前言:泰坦尼克号,不只是卡梅隆导演的经典电影,它是一个真实存在的悲剧,也是电影的故事背景与题材。作为一个IT人,分析事实还得看数据,了解到泰坦尼克号沉船幸存者多为老人、小孩和妇女,而牺牲者多为年轻的男士,这样的历史数据,让我感受到了人性之美与善

    2024年02月02日
    浏览(37)
  • 泰坦尼克沉船存活率(机器学习,Python)

    目录 1,实验要求: 2,报告内容 引言 数据处理 导入数据 查看数据集信息 数据清洗  特征工程 特征提取 特征选择 生还率预测说明 模型构建 建立训练数据集和测试数据集  选择不同的机器学习算法 训练模型,评估模型  方案实施 生存预测 参数调优 结论 改进方法 详细描

    2024年02月03日
    浏览(26)
  • 【从零开始学Kaggle竞赛】泰坦尼克之灾

    注册kaggle账号后,进入titanic竞赛界面 https://www.kaggle.com/competitions/titanic 进入后界面如下 Overview部分为竞赛整体介绍,包括竞赛介绍以及结果评估。 Data部分为数据集介绍,介绍使用的数据集。 Code部分为提交的代码 泰坦尼克号的沉没是历史上最臭名昭著的沉船事故之一。 19

    2024年02月13日
    浏览(80)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包