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


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


在信用评分和风险管理领域,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_badif 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] = ivprint(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] = ivprint(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.hqwc.cn/news/702131.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中国仓储物流装备产业链上最全产品资料大全(目前238家公司产品资料……)...

导语 大家好,我是社长,老K。专注分享智能制造和智能仓储物流等内容。 新书《智能物流系统构成与技术实践》人俱乐部 知识星球【智能仓储物流技术研习社】内已经收录了如下中国230多家仓储物流装备和技术相关产业链的公司的产品手册,请星球会员…

Python GUI开发- PyQt5 开发小工具环境入门

前言 常见的python开发gui的库有 Tkinter, PyQt5, wxPython等。本教程是选择PyQt5 开发桌面小工具。 环境准备 只需pip安装即可快速准备好开发环境 pip install pyqt5快速开始 创建一个空的window窗口 Qapplication():每个GUI都必须包含…

海外媒体宣发:新加坡.马来西亚如何在海外媒体投放新闻通稿-大舍传媒

导言 随着全球化的进程加速,海外市场对于企业的发展越来越重要。而在海外媒体上宣传企业的新闻通稿,成为了拓展海外市场和提升企业知名度的重要手段之一。本文将介绍大舍传媒对于如何在海外媒体上投放新闻通稿的经验和策略。 准备工作:了解…

随笔:贝特弹琴

半年前,我买了一架朗朗代言的智能电子琴。所谓智能是指,它配套的手机软件知道你在按哪个键,它还能让任意按键发光。用专业术语说,它的键盘具有输入和输出功能,和软件组合起来是一个完整的计算机系统。 随着软件练习曲…

运维别卷系列 - 云原生监控平台 之 05.prometheus alertManager 实践

文章目录 [toc]Alertmanager 简介Alertmanager 实现的核心概念GroupingInhibitionSilencesClient behaviorHigh Availability Alertmanager 配置文件globaltemplatesrouteinhibit_rulesreceivers Alertmanager 部署创建 cm创建 svc创建 stsPrometheus 配置告警Prometheus 配置文…

嵌入式单片机笔试题

DC-DC 和 LDO两者有何区别? DC-DC转换器(直流-直流转换器)和LDO(低压差线性稳压器)都是用于电源管理的设备,但它们在原理和特性上有一些显著的区别: 原理: DC-DC转换器通过改变输…

Android ndk获取手机内部存储卡的根目录方法

如下所示: 代码语言:javascript jclass envcls env- FindClass("android/os/Environment"); //获得类引用if (envcls nullptr) return 0;//找到对应的类,该类是静态的返回值是FilejmethodID id env- GetStaticMethodID(envcls,…

IP代理如何帮助SEO进行优化?

IP代理在SEO优化中扮演着重要的角色,它通过多种方式帮助提升网站的搜索排名和可见性。以下是IP代理如何帮助SEO进行优化的详细阐述: 第一点,数据采集与分析:在SEO过程中,大量的数据是必不可少的。通过使用IP代理&…

Pytorch学习笔记——Conv2d与Tensorboard的结合使用

文章目录 一、两者介绍及结合后的优势1、Conv2d简要介绍2、TensorBoard简要介绍3、结合后的优势 二、对之前代码进行改造1、引入相关包2、加载测试数据3、创建神经网络4、将信息写入Tensorboard 三、进行训练,启动Tensorboard 一、两者介绍及结合后的优势 1、Conv2…

数字人解决方案——ID-Animator可保持角色一致生成视频动画

一、引 言 个性化或自定义生成在图像和视频生成领域是一个不断发展的研究方向,尤其是在创建与特定身份或风格一致的内容方面。您提到的挑战和解决方案为这一领域提供了有价值的见解: 训练成本高:这是一个普遍问题,因为个性化生成…

IT行业现状与未来趋势分析

IT行业现状与未来趋势显示出持续的活力和变革,以下是上大学网(www.sdaxue.com)关于IT行业现状与未来趋势分析,供大家参考。 当前现状: 市场需求持续增长:随着信息时代的深入发展,各行各业对信息…

AI办公自动化:用kimi批量把word转换成txt文本

在Kimichat中输入提示词: 你是一个Python编程专家,要完成一个Python脚本编写的任务,具体步骤如下: 打开文件夹:F:\aword 读取里面docx格式的word文档, 提取word文档中的第一行文字作为txt文本文档的标题…