【Python】理解WOE(Weight of Evidence)和IV(Information Value)

news2025/1/16 13:43:40

忠孝东路走九遍
脚底下踏著曾经你我的点点
我从日走到夜
心从灰跳到黑
我多想跳上车子离开伤心的台北
忠孝东路走九遍
穿过陌生人潮搜寻你的脸
有人走的匆忙
有人爱的甜美
谁会在意擦肩而过的心碎
                     🎵 动力火车《忠孝东路走九遍》


在信用评分和风险管理领域,WOE(Weight of Evidence)和IV(Information Value)是两种常用的特征选择和评估方法。这些方法有助于我们理解每个特征对目标变量(如好坏客户)的区分能力。本文将介绍WOE和IV的概念,并通过示例说明如何使用它们进行特征分析。

WOE(Weight of Evidence)的概念

WOE是一种衡量特征分箱中好坏客户(或正负样本)分布的方法。它通常用于处理二分类问题,如信用评分中的好客户和坏客户。WOE的计算公式如下:
在这里插入图片描述
WOE的主要优点在于:

  1. 线性化特征:WOE可以将原始特征转换为线性特征,有助于线性模型的训练。
  2. 处理缺失值:WOE能够较好地处理缺失值,通过合理分箱可以降低其影响。

IV(Information Value)的概念

IV用于衡量特征对目标变量的区分能力。IV值越高,表示该特征对目标变量的预测能力越强。IV的计算公式如下:
在这里插入图片描述

示例:使用WOE和IV进行特征分析

下面是一个简单的Python示例,展示如何计算WOE和IV值并分析特征。

  1. 导入必要的库
import pandas as pd
import numpy as np
  1. 定义WOE和IV计算函数
def calculate_woe_iv(df, feature, target, bins=10, is_categorical=False, epsilon=1e-6):
    total_bad = df[target].sum()
    total_good = len(df) - total_bad

    if is_categorical:
        grouped = df.groupby(feature)[target].agg(['count', 'sum'])
    else:
        df['bin'] = pd.qcut(df[feature].rank(method='first'), bins, duplicates='drop')
        grouped = df.groupby('bin')[target].agg(['count', 'sum'])

    grouped['good'] = grouped['count'] - grouped['sum']
    grouped['bad_rate'] = (grouped['sum'] + epsilon) / (total_bad + epsilon)
    grouped['good_rate'] = (grouped['good'] + epsilon) / (total_good + epsilon)

    grouped['woe'] = np.log(grouped['good_rate'] / grouped['bad_rate'])
    grouped['iv'] = (grouped['good_rate'] - grouped['bad_rate']) * grouped['woe']
    iv = grouped['iv'].sum()
    
    return iv, grouped
  1. 创建示例数据
data = {
    'online_nums': np.random.random(100),
    'user_balance': np.random.random(100),
    'avg_arpu': np.random.random(100),
    'mz_flag': np.random.randint(0, 2, 100),
    'target': np.random.randint(2, size=100)
}
df = pd.DataFrame(data)
  1. 计算IV值并输出结果
continuous_features = ['online_nums', 'user_balance', 'avg_arpu']
categorical_features = ['mz_flag']

iv_values = {}

# 连续变量
for feature in continuous_features:
    iv, iv_table = calculate_woe_iv(df, feature, 'target', is_categorical=False)
    iv_values[feature] = iv
    print(f"IV值 - {feature}: {iv}")
    print(iv_table)

# 分类变量
for feature in categorical_features:
    iv, iv_table = calculate_woe_iv(df, feature, 'target', is_categorical=True)
    iv_values[feature] = iv
    print(f"IV值 - {feature}: {iv}")
    print(iv_table)

# 打印所有特征的IV值
print("所有特征的IV值:")
for feature, iv in iv_values.items():
    print(f"{feature}: {iv}")

结果分析

通过上述代码,我们可以得到每个特征的IV值,并查看其分箱后的详细信息。IV值高的特征对目标变量的区分能力较强,可以优先考虑在模型中使用;IV值低的特征可以考虑剔除或进一步处理。

结论

WOE和IV是两个强大且常用的特征选择和评估工具,尤其在信用评分和风险管理领域。通过合理的分箱和WOE计算,我们可以将原始特征转化为线性特征,并通过IV值评估其预测能力。希望本文的介绍和示例能帮助你更好地理解并应用WOE和IV进行特征分析。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1674892.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

教育型内容的制胜秘诀:Kompas.ai如何结合知识与营销

在数字化营销的浪潮中,教育型内容已经成为品牌建立权威性和提供价值的重要手段。通过分享专业知识和见解,品牌不仅能够吸引目标受众,还能够在潜在客户心中建立起专业和可信赖的形象。本文将深入分析教育型内容的重要性,详细介绍Ko…

VALSE 2024合合信息 | 文档解析与向量化技术加速多模态大模型训练与应用

第十四届视觉与学习青年学者研讨会(VALSE 2024)近期在重庆悦来国际会议中心圆满举行,由中国人工智能学会(CAAI)、中国图象图形学会(CSIG)、中国民族贸易促进会主办,重庆邮电大学承办…

数据库系统概论(个人笔记)(第二部分)

数据库系统概论(个人笔记) 文章目录 数据库系统概论(个人笔记)2、关系模型简介2.1 关系数据库的结构2.2 数据库模式2.3 键2.4 模式图2.5 关系查询语言2.6 关系代数 2、关系模型简介 2.1 关系数据库的结构 Structure of Relational…

【目标检测】YOLOv5|YOLOv8模型QT界面可视化部署

YOLO-Deploy-QT_Interface 最近笔者做了YOLO系列算法的部署工作,现做一个总结。主要工作是做了用于部署YOLOv5和YOLOv8的可视化QT界面,可实现图片、文件夹、视频、摄像头的ONNX与OpenVino部署,具体效果如下: 代码链接:https://github.com/Zency-Sun/YOLO-Deploy-QT_Inte…

开源之夏又有新项目发布!快来认领!¥12,000 奖金等你来!

又有新项目加入开源之夏啦!KubeBlocks 的亲兄弟 WeScale 也加入开源之夏啦!一起来了解下 WeScale 社区及它带来的项目吧! WeScale 是什么? WeScale 社区源自对更好的数据库访问体验的追求。在现代应用程序开发中,数据…

一文扫盲(13):电商管理系统的功能模块和设计要点

电商管理系统是一种用于管理和运营电子商务平台的软件系统。它提供了一系列功能模块,帮助企业进行商品管理、订单管理、会员管理、营销推广、数据分析等工作。本文将从以下四个方面介绍电商管理系统。 一、什么是电商管理系统 电商管理系统是一种集成了各种功能模块…

Android Q - 音频通路调试

对于当前模块不是很清楚,刚好有个项目这方面有点问题,根据展锐支持文档一步步检查就可以了。首先得先弄清楚硬件具体是怎么连接的,比如文档提到的案例:sprd codec speaker output 连接外部 PA。 耳机接的是什么,speake…

国产化开源鸿蒙系统智能终端RK3568主板在电子班牌项目的应用

国产化开源鸿蒙系统智能终端主板AIoT-3568A、人脸识别算法的的电子班牌方案可支持校园信息发布、人脸识别考勤、考场管理、查询互动等多项功能,助力学校在硬件上实现信息化、网络化、数字化,构建“学校、教师、学生”三个维度的智慧教育空间。 方案优势 …

mysql5和mysql8同时存在

Win10安装两个不同版本MySQL数据库(一个5.7,一个8.0.17)_两个数据库的版本不同(我本地的是mysql5.7,线上是mysql8),怎么进行数据的同步?-CSDN博客 安装两个版本的mysql出现的问题和解决_mysql安装两个版本其中一个不适用-CSDN博客 一台电脑…

增程SUV价格即将崩盘?买车一定要再等等!

文 | AUTO芯球 作者 | 雷歌​ 真是“离谱”啊,车圈真是逗比欢乐多, 我这两天看一个博主连续40多小时开车直播,充电口、油箱盖全部封死,全程视频直播没断过, 就为了测试这两天刚上市的星际元ET续航有多远。 另一个…

drippingblues 靶机实战

信息收集: Nmap: 存活: 靶机ip:192.168.10.110 端口: 服务: 发现ftp服务可以匿名登录。且用户名是FTP。 发现一个压缩包,下载并爆破。 得到密码 072528035。发现关键字 drip。里面还有一个 secret.zip(…

C语言写扫雷游戏(数组和函数实践)

目录 最后是代码啦! 手把手教你用C语言写一个扫雷游戏! 1.我们搭建一下这个多文件形式的扫雷游戏文件结构 2.在主函数里面设置一个包含游戏框架的菜单 菜单可以方便游戏玩家选择要进行的动作和不断地进行下一局。 3.switch语句连接不同的结果 菜单可…

49.乐理基础-拍号的类型-单拍子、复拍子

当前写的东西,如果只是想要看懂乐谱的话,它是没什么意义的,就像我们要把 0,1,2,3,4,5。。。称为自然数,1,2,3,4,5称为正整…

【提示学习论文】TCP:Textual-based Class-aware Prompt tuning for Visual-Language Model

TCP:Textual-based Class-aware Prompt tuning for Visual-Language Model(CVPR2024) 基于文本的类感知提示调优的VLMKgCoOp为baseline,进行改进,把 w c l i p w_{clip} wclip​进行投影,然后与Learnable prompts进行…

考研数学|强化《660》+《880》这样刷,太丝滑了❗️

660题880题需要大概两个月才能做完 660题和880题都是很高质量的题集,所以做起来一点也不轻松。 每年都会有学生暑假两个月只做了一本660题的情况,因为题目实在是太难,有点做不下去的感觉。 不过不要担心,暑假就是刷题发现问题的…

Ubuntu安装k8s集群

文章目录 Ubuntu安装k8s3台主机前置操作:3台主机k8s前置安装命令:k8s安装命令: 节点加入 Ubuntu安装k8s 官方文档:https://kubernetes.io/zh-cn/docs/setup/production-environment/tools/kubeadm/install-kubeadm/ 默认3台机子 注…

如何为域名生成证书签发请求CSR

最近我们在Hostease购买了服务器产品,为了保障我们网站的安全,我们额外还购买了SSL证书产品。在Hostease技术客服的帮助下,我们成功签发了SSL证书。 在签发证书前需要生成一个证书签名请求CSR,证书签名请求(CSR)是一个包含有关你…

轻松拿下指针(5)

文章目录 一、回调函数是什么二、qsort使用举例三、qsort函数的模拟实现 一、回调函数是什么 回调函数就是⼀个通过函数指针调⽤的函数。 如果你把函数的指针(地址)作为参数传递给另⼀个函数,当这个指针被⽤来调⽤其所指向的函数 时&#x…

Autoware内容学习与初步探索(一)

0. 简介 之前作者主要是基于ROS2,CyberRT还有AutoSar等中间件完成搭建的。有一说一,这种从头开发当然有从头开发的好处,但是如果说绝大多数的公司还是基于现成的Apollo以及Autoware来完成的。这些现成的框架中也有很多非常好的方法。目前作者…

uniapp高性能图片裁剪插件,可添加水印

效果图&#xff1a; 插件地址&#xff1a;高性能图片裁剪&#xff0c;裁剪图片后自动添加水印 - DCloud 插件市场 示例&#xff1a; <template> <view><button click"select">选择图片</button><image mode"widthFix" :src&qu…