04_使用决策树对银行贷款进行建模

2023-11-04

使用决策树对银行贷款进行建模

1、实验描述

  • 使用Python编程,输入为自定义数据集,分别为贷款对象的四个属性,年龄,是否有房,是否有工作,信用情况计算所有可能的特征的信息增益,选择最优的特征值划分数据集,进而递归地构建决策树。其中为了更加直观地呈现决策树,使用Matplotlib编程将决策树可视化。最后,根据训练好的决策树执行分类,判断银行是否贷款给相关用户。

  • 实验时长: 60 分钟

  • 主要步骤:

    • 使用Python选择最优特征递归构建决策树

    • 决策树的可视化

    • 使用决策树执行分类预测

2、实验环境

  • Anaconda 4.3.30

  • Python 3.6.6

  • Numpy 1.13.1

  • Matplotlib 2.2.2

  • scikit-learn 0.18.2

  • graphviz 2.30.1

3、相关技能

  • Python编程

  • Matplotlib编程

  • 决策树构建

  • 决策树可视化

4、相关知识点

  • 决策树的原理

  • 决策树(decision
    tree)是一种基本的分类与回归方法,是一个预测模型,他代表的是对象属性与对象值之间的一种映射关系。决策树可以看作一个if-then规则的集合:由决策树的根结点到叶结点的每一条路径构建一条规则;路径上内部结点的特征对应着规则的条件,而叶结点的类对应着规则的结论。

  • 使用决策树预测需要以下过程:收集数据、准备整理数据、分析数据、训练算法构造决策树、测试算法、使用算法。

  • 决策树的构建

  • 特征选择:特征选择在于选取对训练数据具有分类能力的特征,决定用哪个特征来划分特征空间,可以提高决策树学习的效率。通常特征选择的标准是信息增益或信息增益比。信息增益指的是划分数据集之后信息发生的变化,通过经验熵和条件熵,计算每个特征值划分数据集获得的信息增益,获得信息增益最高的特征就是最好的选择。特征A对训练数据集D的信息增益g(D,A),定义为集合D的经验熵H(D)与特征A给定条件下D的经验条件熵H(D|A)之差,即:g(D,A)=H(D)-
    H(D|A)。

  • 决策树的生成和修剪:使用C4.5、ID3、CART等算法,基于最好的属性值划分数据集,递归地构建决策树,直到不能继续下去为止。但这样产生的树往往对训练数据的分类很准确,但对未知的测试数据的分类却没有那么准确,即出现过拟合现象。针对这一问题,考虑决策树的复杂度,对已生成的决策树进行修剪简化。

  • 决策树可视化

  • 通过Python编程构建的决策树不够清晰直观,可以使用强大的Matplotlib绘制决策树。

  • 使用决策树分类预测

  • 依靠原始数据集构造好的决策树,可以对实际数据进行分类预测。执行数据分类时,需要决策树以及用于构造树的标签向量。然后,程序比较测试数据与决策树上的数值,递归执行该过程直到进入叶子结点,最后将测试数据定义为叶子结点所属的类型,完成对数据的预测。

5、实现效果

  • 贷款类决策树构建结果可视化如下图:

在这里插入图片描述

图 1

6、实验步骤

6.1进入/home/zkpk/pycharm-2017.3.5/bin目录,切换到root用户,输入密码(zkpk)

[zkpk@localhost tgz]$ cd ~/pycharm-2017.3.5/bin
[zkpk@localhost bin]$ su root

在这里插入图片描述

图 2

修改hosts文件,在/etc/hosts文件末添加一行0.0.0.0
account.jetbrains.com,注意account前面有一个空格(按I键,添加以下内容后按Esc键,输入:wq,再按Enter键即可保存退出)。修改完成后使用exit命令退出root权限。

[root@localhost bin]# vi /etc/hosts
0.0.0.0 account.jetbrains.com

在这里插入图片描述

图 3

在/home/zkpk/pycharm-2017.3.5/bin目录下,使用./pycharm.sh命令打开Pycharm,点击open,打开DecisionTree工程,
在工程下创建DCTree.py 并设置Python Interpreter。
在这里插入图片描述

图 4
![在这里插入图片描述](https://img-blog.csdnimg.cn/b4b6cccf92b54364a96e18c2c84c1945.png#pic_center)
图 5

6.2定义数据集,设置四个属性标签为年龄,是否工作,是否有房,信用等级。

def createDataSet():
    dataSet = [[0, 0, 0, 0, 'no'], #数据集
         [0, 0, 0, 1, 'no'],
         [0, 1, 0, 1, 'yes'],
         [0, 1, 1, 0, 'yes'],
         [0, 0, 0, 0, 'no'],
         [1, 0, 0, 0, 'no'],
         [1, 0, 0, 1, 'no'],
         [1, 1, 1, 1, 'yes'],
         [1, 0, 1, 2, 'yes'],
         [1, 0, 1, 2, 'yes'],
         [2, 0, 1, 2, 'yes'],
         [2, 0, 1, 1, 'yes'],
         [2, 1, 0, 1, 'yes'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

04_使用决策树对银行贷款进行建模 的相关文章

  • Python:在列表理解本身中引用列表理解?

    这个想法刚刚出现在我的脑海中 假设您出于某种原因想要通过 Python 中的列表理解来获取列表的唯一元素 i if i in created comprehension else 0 for i in 1 2 1 2 3 1 2 0 0 3
  • 无法“安装”plpython3u - postgresql

    我正在尝试在 postgresql 中使用 python 语言 像这样的事情 create or replace function test a integer returns integer as if a 2 0 return even
  • 没有名为 crypto.cipher 的模块

    我现在正在尝试加密一段时间 我最近得到了这个基于 python 的密码器 名为PythonCrypter https github com jbertman PythonCrypter 我对 Python 相当陌生 当我尝试通过终端打开 C
  • 通过最小元素比较对 5 个元素进行排序

    我必须在 python 中使用元素之间的最小比较次数来建模对 5 个元素的列表进行排序的执行计划 除此之外 复杂性是无关紧要的 结果是一个对的列表 表示在另一时间对列表进行排序所需的比较 我知道有一种算法可以通过 7 次比较 总是在元素之间
  • 使用带有关键字参数的 map() 函数

    这是我尝试使用的循环map功能于 volume ids 1 2 3 4 5 ip 172 12 13 122 for volume id in volume ids my function volume id ip ip 我有办法做到这一点
  • Django:按钮链接

    我是一名 Django 新手用户 尝试创建一个按钮 单击该按钮会链接到我网站中的另一个页面 我尝试了一些不同的例子 但似乎没有一个对我有用 举个例子 为什么这不起作用
  • 如何在 Python 中检索 for 循环中的剩余项目?

    我有一个简单的 for 循环迭代项目列表 在某些时候 我知道它会破裂 我该如何退回剩余的物品 for i in a b c d e f g try some func i except return remaining items if s
  • 如何使用 Ansible playbook 中的 service_facts 模块检查服务是否存在且未安装在服务器中?

    我用过service facts检查服务是否正在运行并启用 在某些服务器中 未安装特定的软件包 现在 我如何知道这个特定的软件包没有安装在该特定的服务器上service facts module 在 Ansible 剧本中 它显示以下错误
  • python 相当于 R 中的 get() (= 使用字符串检索符号的值)

    在 R 中 get s 函数检索名称存储在字符变量 向量 中的符号的值s e g X lt 10 r lt XVI s lt substr r 1 1 X get s 10 取罗马数字的第一个符号r并将其转换为其等效整数 尽管花了一些时间翻
  • 根据列值突出显示数据框中的行?

    假设我有这样的数据框 col1 col2 col3 col4 0 A A 1 pass 2 1 A A 2 pass 4 2 A A 1 fail 4 3 A A 1 fail 5 4 A A 1 pass 3 5 A A 2 fail 2
  • 使用 Tkinter 显示 numpy 数组中的图像

    我对 Python 缺乏经验 第一次使用 Tkinter 制作一个 UI 显示我的数字分类程序与 mnist 数据集的结果 当图像来自 numpy 数组而不是我的 PC 上的文件路径时 我有一个关于在 Tkinter 中显示图像的问题 我为
  • 如何使用 OpencV 从 Firebase 读取图像?

    有没有使用 OpenCV 从 Firebase 读取图像的想法 或者我必须先下载图片 然后从本地文件夹执行 cv imread 功能 有什么办法我可以使用cv imread link of picture from firebase 您可以
  • 从 Flask 访问 Heroku 变量

    我已经使用以下命令在 Heroku 配置中设置了数据库变量 heroku config add server xxx xxx xxx xxx heroku config add user userName heroku config add
  • 如何在Python中获取葡萄牙语字符?

    我正在研究葡萄牙语 角色看起来很奇怪 我怎样才能解决这个问题 代码 import feedparser import random Vou definir os feeds feeds conf feedurl http pplware s
  • 添加不同形状的 numpy 数组

    我想添加两个不同形状的 numpy 数组 但不进行广播 而是将 缺失 值视为零 可能最简单的例子是 1 2 3 2 gt 3 2 3 or 1 2 3 2 1 gt 3 2 3 1 0 0 我事先不知道形状 我正在弄乱每个 np shape
  • 如何使用Python创建历史时间线

    So I ve seen a few answers on here that helped a bit but my dataset is larger than the ones that have been answered prev
  • 在f字符串中转义字符[重复]

    这个问题在这里已经有答案了 我遇到了以下问题f string gt gt gt a hello how to print hello gt gt gt f a a gt gt gt f a File
  • 如何在seaborn displot中使用hist_kws

    我想在同一图中用不同的颜色绘制直方图和 kde 线 我想为直方图设置绿色 为 kde 线设置蓝色 我设法弄清楚使用 line kws 来更改 kde 线条颜色 但 hist kws 不适用于显示 我尝试过使用 histplot 但我无法为
  • Python 类继承 - 诡异的动作

    我观察到类继承有一个奇怪的效果 对于我正在处理的项目 我正在创建一个类来充当另一个模块的类的包装器 我正在使用第 3 方 aeidon 模块 用于操作字幕文件 但问题可能不太具体 以下是您通常如何使用该模块 project aeidon P
  • 如何将输入读取为数字?

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 Why are x and y下面的代码中使用字符串而不是整数 注意 在Python 2

随机推荐

  • 研一Python基础课程第四周课后习题分享(含源代码)

    代码写的较多 有问题可以私聊我 第四周作业分享 一 题目前言 二 题目分享 1 问题1 2 问题2 3 问题3 4 问题4 5 问题5 6 问题6 7 问题7 8 问题8 9 问题9 10 问题10 11 问题11 12 问题12 13 问
  • 深度学习之经典案例 CIFAR10 图形识别(jupyter)

    图像识别 CIFAR10图形识别 1 CIFAR10数据集共有60000张彩色图像 这些图像式32 32 3 分为10个类 每个类6000张 2 这里面有50000张用于训练 构成5个训练批 每一批10000张图 另外10000张用于测试
  • Centos7网卡配置——动态与静态

    Centos7网卡配置 一 自动获取动态IP地址 二 配置静态IP地址 三 修改网卡注意事项 四 基础知识 以下实例全部基于VM虚拟机操作 一 自动获取动态IP地址 1 输入命令 ip addr 查看IP地址 右下图可以发现只有一张名为en
  • git版本回退到某一次提交

    背景 今天一个前端女同事问我她如何才能回退到上一次她提交的版本 她网上找了方法 却没有起作用 问题虽然简单 但是还是记录下来 解决问题 使用命令 git log查看提交记录 并复制下想要回退到那个版本的commitId 就是commit后面
  • 医学图像肝脏分割(一)---预处理

    预处理是肝脏分割重要的一步 良好的预处理过程可以有效的提高分割的准确度 此博文主要记录肝脏分割过程中常见的预处理方法及相关代码 一 标准的预处理过程 1 Kaggle LUNA16 competition preprocessing tut
  • 创建Component的方式

    createClass createClass 组件的props state等都是以对象属性的方式组合在一起 其中默认属props和初始state都是返回对象的函数 component component state是通过在构造函数中对th
  • php通过递归获取分公司的上下级数据

    1 表结构 2 php核心代码 param branches 全部分公司数据 param parentId 查询的分公司id 传0则全部排序 大于0 则查询该分公司下的下级 param int level 层级 方便界面特效 param i
  • html怎么给背景图固定位置,css实现固定背景图像的方法

    css实现固定背景图像的方法 发布时间 2020 08 29 11 26 59 来源 亿速云 阅读 81 作者 小新 小编给大家分享一下css实现固定背景图像的方法 相信大部分人都还不怎么了解 因此分享这篇文章给大家参考一下 希望大家阅读完
  • 重磅!《2022中国开源发展蓝皮书》正式发布

    作为数字时代的新趋势 开源正以 开放 共享 协同 商业模式 的新型生产方式 以 自由 的传播形式 成为全球信息技术发展的强大推动力 在全世界开源大发展的背景下 近年来中国开源的发展速度已成为全球最快 局部领域已接近或达到世界先进水平 其迸发
  • Ubuntu上通过android toolchain交叉编译Valgrind操作步骤

    关于Valgrind的介绍可以参考 https blog csdn net fengbingchun article details 50196189 这里介绍下在Ubuntu 16 04上通过android toolchain如andro
  • 一套简单的基本生活财富自由方案

    前言 之前一直觉得财富自由似乎遥不可及 但今年学习理财以来 至今已有一年的样子了 读完了100本书 再加上实操经验 发现虽然成为富豪依然遥不可及 但一些基本的财富自由方案已经可以实现了 试算了一下 按照保守收益估计 其实是完全可以实现的 经
  • hadoop支持lzo完整过程

    简介 部署 安装lzop native library 安装hadoop lzo 配置hadoop环境变量 验证lzo通过hive测试 创建lzo表 导入数据 索引LZO文件 利用hive执行mr任务 修改使用中hive表的输入输出格式 简
  • .\Objects\new project.axf: Error: L6200E: Symbol __asm___17_system_mb9bf40x_等5个报错的原因

    不知道有没有人遇到我这种问题 二十分钟才大概把错误原因的范围锁定在device那里 这是所有的报错 如果你遇到了这样的错误 那么接下来就可以解决这个问题了 提示重复定义了后面的 这里无论你用的什么芯片 只要报错的前部分信息一样 我想解决办法
  • Python发送Post请求及解析响应结果

    一 Post请求 1 使用python发送一个Post请求 有时候遇到请求url中有很多参数 1 1 示例1 accounts和pwd请到http shop xo hctestedu com 注册 import requests 请求体 d
  • 父组件监听子组件声明周期的方法

    父组件 hook mounted watchChild watchChild写监听到子组件生命周期触发后 要走的逻辑
  • 【Confluence】创建分级文件目录

    需求 在confluence文档中构建如下图所示的分级目录文件 解决 首先在该目录下创建一个文件 确定好位置 创建好之后 在该创建好的文件下在重复创建文件即可
  • 【Python基础】Matplotlib如何绘制多个子图的几种方法

    作者 雪山飞猪 博客地址 https www cnblogs com chenqionghe p 12355018 html 说明 本文经作者授权转载 禁止二次转载 Matplotlib是Python的底层绘图工具 可定制性很强 很多人刚开
  • Redis分布式锁的实现方式、实现原理

    目录 一 分布式锁的重要性与挑战 1 1 分布式系统中的并发问题 竞态条件 数据不一致 死锁 二 分布式锁的基本原理与实现方式 2 1 分布式锁的基本概念 2 2 基于数据库的分布式锁 原理与实现方式 优缺点 2 3 基于缓存的分布式锁 原
  • flutter视频播放videoplayer与chewie

    在Flutter中虽然官方提供了video player来播放视频 video player官网链接 video player Flutter Package 但是video player只有单纯的播放功能 进度条 全屏这些功能只能自己实现
  • 04_使用决策树对银行贷款进行建模

    使用决策树对银行贷款进行建模 1 实验描述 使用Python编程 输入为自定义数据集 分别为贷款对象的四个属性 年龄 是否有房 是否有工作 信用情况计算所有可能的特征的信息增益 选择最优的特征值划分数据集 进而递归地构建决策树 其中为了更加