Python3 ID3决策树判断申请贷款是否成功

2023-11-02

1. 定义生成树

# -*- coding: utf-8 -*-
#生成树的函数

from numpy import *  
import numpy as np
import pandas as pd
from math import log  
import operator  

# 计算数据集的信息熵(Information Gain)增益函数(机器学习实战中信息熵叫香农熵)
def calcInfoEnt(dataSet):#本题中Label即好or坏瓜 #dataSet每一列是一个属性(列末是Label)
    numEntries = len(dataSet)    #每一行是一个样本
    labelCounts = {} #给所有可能的分类创建字典labelCounts
    for featVec in dataSet:    #按行循环:即rowVev取遍了数据集中的每一行
        currentLabel = featVec[-1]    #故featVec[-1]取遍每行最后一个值即Label
        if currentLabel not in labelCounts.keys():    #如果当前的Label在字典中还没有
            labelCounts[currentLabel] = 0    #则先赋值0来创建这个词
        labelCounts[currentLabel] += 1    #计数, 统计每类Label数量(这行不受if限制)
    InfoEnt = 0.0
    for key in labelCounts:    #遍历每类Label
        prob = float(labelCounts[key])/numEntries   #各类Label熵累加
        InfoEnt -= prob * log(prob,2)    #ID3用的信息熵增益公式
    return InfoEnt

### 对于离散特征: 取出该特征取值为value的所有样本
def splitDiscreteDataSet(dataSet, axis, value):    #dataSet是当前结点(待划分)集合,axis指示划分所依据的属性,value该属性用于划分的取值
    retDataSet = []     #为return Data Set分配一个列表用来储存
    for featVec in dataSet:
        if featVec[axis] == value:
            reducedFeatVec = featVec[:axis]         #该特征之前的特征仍保留在样本dataSet中
            reducedFeatVec.extend(featVec[axis+1:]) #该特征之后的特征仍保留在样本dataSet中
            retDataSet.append(reducedFeatVec)        #把这个样本加到list中
    return retDataSet

### 对于连续特征: 返回特征取值大于value的所有样本(以value为阈值将集合分成两部分)
def splitContinuousDataSet(dataSet, axis, value): 
    retDataSetG = []        #将储存取值大于value的样本
    retDataSetL = []        #将储存取值小于value的样本  
    for featVec in dataSet:  
        if featVec[axis] > value:  
            reducedFeatVecG = featVec[:axis]
            reducedFeatVecG.extend(featVec[axis+1:])  
            retDataSetG.append(reducedFeatVecG)
        else:
            reducedFeatVecL = featVec[:axis]
            reducedFeatVecL.extend(featVec[axis+1:])  
            retDataSetL.append(reducedFeatVecL)
    return retDataSetG,retDataSetL        #返回两个集合, 是含2个元素的tuple形式

### 根据InfoGain选择当前最好的划分特征(以及对于连续变量还要选择以什么值划分)
def chooseBestFeatureToSplit(dataSet,labels):  
    numFeatures = len(dataSet[0])-1
    baseEntropy = calcInfoEnt(d
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python3 ID3决策树判断申请贷款是否成功 的相关文章

  • 如何使用 cython 编译扩展?

    我正在尝试从示例页面编译一个简单的 cython 扩展here http docs cython org src userguide tutorial html在我安装了 Python 2 6 64 位版本的 Windows 7 64 位计
  • 没有任何元数据的 zip 文件

    我想找到一种简单的方法来压缩一堆文件 而无需任何文件元数据 例如时间戳 这zip命令似乎总是保留元数据 我没有找到禁用元数据的方法 我希望解决方案是一个命令或最多一个 python 脚本 谢谢 正如一些帖子已经指出的那样 zip 标头中的大
  • 在 Python 中使用 Selenium 处理“接受 Cookie”弹出窗口

    我一直在尝试用硒抓取这个房地产网站的一些信息 但是 当我访问该网站时 我需要接受 cookie 才能继续 这仅在机器人访问网站时发生 而不是在我手动执行时发生 当我尝试通过 xpath 或 id 查找相应的元素时 正如我在手动检查页面时找到
  • 如何在Python中循环并存储自变量中的值

    我对 python 很陌生 所以这听起来可能很愚蠢 我进行了搜索 但没有找到解决方案 我在 python 中有一个名为 ExcRng 的函数 我可以对该函数执行什么样的 for 循环 以便将值存储在独立变量中 我不想将它们存储在列表中 而是
  • 如何使用Python将WebP图像转换为Gif?

    我已经尝试过这个 from PIL import Image im Image open this webp im save that gif gif save all True 这给了我这个错误 类型错误 不支持的操作数类型 tuple
  • Python BeautifulSoup XML 解析

    我编写了一个简单的脚本来使用 BeautifulSoup 模块解析 XML 聊天日志 标准 soup prettify 工作正常 只是聊天日志中有很多绒毛 您可以在下面看到我正在使用的脚本代码和一些 XML 输入文件 Code import
  • Paramiko - 使用私钥连接 - 不是有效的 OPENSSH 私钥/公钥文件

    我正在尝试找到解决方案 但无法理解我做错了什么 在我的 Linux 服务器上 我运行了以下命令 ssh keygen t rsa 这产生了一个id rsa and id rsa pub file 然后我将它们复制到本地并尝试运行以下代码 s
  • Python - 用逗号分割,跳过括号内的内容

    我需要用逗号分隔字符串 但我对这种情况有一个问题 TEXT EXAMPLE THIS IS A EXAMPLE BUT NOT WORKS FOR ME SECOND THIRD 我想拆分并得到 var 0 TEXT EXAMPLE THI
  • 为什么 Python 中的“pip install”会引发语法错误?

    我正在尝试使用 pip 安装软件包 我试着跑pip install从Python shell 但我得到了SyntaxError 为什么我会收到此错误 如何使用 pip 安装软件包 gt gt gt pip install selenium
  • sudo pip install python-Levenshtein 失败,错误代码 1

    我正在尝试在 Linux 上安装 python Levenshtein 库 但每当我尝试通过以下方式安装它时 sudo pip install python Levenshtein 我收到此错误 命令 usr bin python c 导入
  • 如何通过双击在浏览器中打开 ipynb 文件

    以前 我安装了 Canopy 当时 我只需双击 ipynb 文件并在浏览器中打开它们即可 但是 后来我需要Anaconda 一旦我安装了它 这个功能就没有了 现在我只希望能够简单地双击 ipynb 文件 然后该文件就会在 Firefox 中
  • matplotlib matshow 标签

    我一个月前开始使用 matplotlib 所以我仍在学习 我正在尝试用 matshow 制作热图 我的代码如下 data numpy array a reshape 4 4 cax ax matshow data interpolation
  • 在 MacO 和 Linux 上安装 win32com [重复]

    这个问题在这里已经有答案了 我的问题很简单 我可以安装吗win32com蟒蛇API pywin32特别是 在非 Windows 操作系统上 我一直在Mac上尝试多个版本pip install pywin32 都失败了 下面是一个例子 如果你
  • 查找给定节点的最高权重边

    我在 NetworkX 中有一个有向图 边缘的权重从 0 到 1 表示它们发生的概率 网络连通性非常高 所以我想修剪每个节点的边缘 只保留最高概率的节点 我不确定如何迭代每个节点并仅保留最高权重in edges在图中 有没有一个networ
  • 张量流:注册 numpy bfloat16 扩展

    正如我所见 tensorflow 中有 bfloat16 的 numpy 扩展 https github com tensorflow tensorflow blob 24ffe9f729160a095a5cab8f592392018280
  • Python组合目录中的所有csv文件并按日期时间排序

    我有 2 年的每日数据分成每月文件 我想将所有这些数据合并到一个按日期和时间排序的文件中 我正在使用的代码组合了所有文件 但不按顺序 我正在使用的代码 import pandas as pd import glob os import cs
  • 全局变量是 None 而不是实例 - Python

    我正在处理Python 中的全局变量 代码应该可以正常工作 但是有一个问题 我必须使用全局变量作为类的实例Back 当我运行应用程序时 它说 back is None 这应该不是真的 因为第二行setup 功能 back Back Back
  • TypeError:无法使用抽象方法实例化抽象类 <...>

    这是我的代码 from abc import ABC from abc import abstractmethod class Mamifiero ABC docstring for Mamifiero def init self self
  • 如何将列表字典写入字符串而不是 CSV 文件?

    This 堆栈溢出问题 https stackoverflow com questions 37997085 how to write a dictionary of lists to a csv file将列表字典写入 CSV 文件的答案
  • Django South - 将 null=True 字段转换为 null=False 字段

    我的问题是 转变的最佳做法是什么null True场变成null False使用 Django South 的字段 具体来说 我正在与ForeignKey 你应该先写一个数据迁移 http south aeracode org docs t

随机推荐

  • 一句sql搞定Mysql删除数据后自增列从1开始

    在数据库应用 我们经常要用到唯一编号 以标识记录 在MySQL中可通过数据列的AUTO INCREMENT属性来自动生成 MySQL支持多种数据表 每种数据表的自增属性都有差异 这里将介绍各种数据表里的数据列自增属性 数据库中设置了自增列
  • RuntimeError: CUDA error: an illegal memory access was encountered 解决思路

    问题描述 在跑编译正常通过 CPU上也正常运行的某项目时 在运行到某个epoch时 程序突然出现以下错误 RuntimeError CUDA error an illegal memory access was encountered CU
  • 行业基础概念

    1 SoC称为系统级芯片 2 AHB Advanced High Performance Bus 译作高级高性能总线 3 DMA 全称Direct Memory Access 即直接存储器访问 DMA用来提供在外设和存储器之间或者存储器和存
  • SoloPi APP性能测试用

    这款名为 SoloPi 的小工具 作用在于监测安卓机的运行状态 包括 CPU 内存 乃至大家感受最直观的帧率等等 SoloPi 本身是非常良心的 首先它开源 保证了干净安全 其次它也没有广告和多余的后台进程 非常令人放心 SoloPi ht
  • 【MLOps】第 7 章 : 监控和反馈循环

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • 加速中产 “返贫” 的4个迹象

    没有消息 就是好消息 这话放在现在的朋友圈子里 似乎很合适 最近接到两个朋友的电话 一个是朋友的诉苦电话 这位朋友曾是某大厂的高管 被裁后失业近1年 虽然当初赔了N 1 但架不住这位朋友 房贷近千万 配偶不工作 孩子送出国 即传说中的 中产
  • Win11系统默认用户名怎么进行修改教学

    Win11系统默认用户名怎么进行修改教学 安装了Win11系统之后 我们电脑的默认用户名是administrator 而有的用户想要将这个用户名进行个性化的修改 把它修改成为自己喜欢的名称 那么如何去修改默认用户名 接下来我们一起来看看具体
  • Python之“诗词大会”游戏

    需求分析 要先设计题库 然后在规定时间内循环随机出题 判断输入的答案是否正确 并统计答对问题的次数 如果答题时间到 则退出循环 结束答题 具体实现步骤 1 创建字典bank保存题库 问题为键 正确答案为值 问题使用元组保存 题干和选项为元组
  • 使用iostat分析IO性能

    对于I O bond类型的进程 我们经常用iostat工具查看进程IO请求下发的数量 系统处理IO请求的耗时 进而分析进程与操作系统的交互过程中IO方面是否存在瓶颈 下面通过iostat命令使用实例 说明使用iostat查看IO请求下发情况
  • 【神经网络】(9) 迁移学习(CNN-InceptionResNetV2),案例:交通标志4分类

    各位同学好 今天和大家分享一下Tensorflow2 0中使用迁移学习的方法 搭载InceptionResNetV2网络进行交通标志分类识别 1 网络简介 网络复现代码见下文 神经网络学习小记录35 Inception ResnetV2模型
  • Linux 中实用但很小众的 11 个炫酷终端命令

    今天给大家分享Linux总结出来的11个炫酷的Linux终端命令大全 通过今天这篇文章将向大家展示一系列的Linux命令 工具和技巧 我希望一开始就有人告诉我这些 而不是曾在我成长道路上绊住我 命令行日常系快捷键 如下的快捷方式非常有用 能
  • HTTP数据包头解析

    HTTP请求模型 一 连接至Web服务器 一个客户端应用 如Web浏览器 打开到Web服务器的HTTP端口的一个套接字 缺省为80 例如 http www myweb com 8080 index html 在Java中 这将等同于代码 S
  • 创建软连接和硬链接

    前言 硬链接的原理 使链接的两个文件共享同样的文件内容 也就是同样的 inode 硬链接有一个缺陷 只能创建指向文件的硬链接 不能创建指向目录的硬链接 但软链接可以指向文件或目录 软链接的原理 就跟我们在window ln 命令 创建链接
  • linux:linux高级命令(三)

    1 查找文件命令 1 1根据名称查找 find 在指定目录下查找文件 包括目录 在这里面递归找 选项 name 根据文件名 包括目录名 查找 eg find home beiyue desktop name 1 xt 不要在根目录下面查找因
  • 【JVM】加载机制

    JVM加载机制 一 类装载子系统 介绍 类加载器ClassLoader角色 类加载的执行过程 加载 链接 初始化 二 类加载器 介绍 分类 三 双亲委派模型 介绍 为什么需要双亲委派模型 如何实现双亲委派模型 四 自定义类加载器 为什么要自
  • Notepad++查看、编辑二进制文件——安装附加组件HexEditor实现

    Notepad 是一款功能强大的编辑器 单独安装的Notepad 不能查看和编辑2进制 16进制文件 只要安装名为HexEditor的插件就可以了 这里分享出来 插件下载地址与安装 gt 有以下几种方式 我用的第3种 1 打开软件 点击菜单
  • 别再头疼反弹Shell失败了,这篇文章带你找到问题根源

    别再头疼反弹Shell失败了 这篇文章带你找到问题根源 在渗透测试中 反弹shell失败的原因可以有多种 以下是一些常见的原因 1 防火墙和网络过滤器 目标系统可能配置了防火墙或网络过滤器 以限制对外部系统的连接 这些过滤器可以阻止反弹sh
  • 登陆接口的的Filter过滤

    目录 一 概述 二 基本操作 三 登陆检查接口 一 概述 什么是Filter Filter表示过滤器 是 JavaWeb三大组件 Servlet Filter Listener 之一 过滤器可以把对资源的请求拦截下来 从而实现一些特殊的功能
  • vue resource jsonp请求

    vue resource jsonp请求 window onload function var app new Vue el box data methods get function this http jsonp https sug s
  • Python3 ID3决策树判断申请贷款是否成功

    目录 1 定义生成树 2 递归产生决策树 3 调用生成树 4 绘制决策树 5 调用函数 1 定义生成树 coding utf 8 生成树的函数 from numpy import import numpy as np import pand