如何在Python/pandas中获得证据权重(WOE)和信息价值(IV)?

2024-03-14

我想知道如何在Python中计算WOE和IV。 numpy/scipy/pandas/sklearn中有奉献功能吗?

这是我的示例数据框:

import numpy as np
import pandas as pd
np.random.seed(100)


df = pd.DataFrame({'grade': np.random.choice(list('ABCD'),size=(20)),
                   'pass': np.random.choice([0,1],size=(20))
})
df

woe 和 iv 的公式:

实现此目的的代码:

import numpy as np
import pandas as pd
np.random.seed(100)


df = pd.DataFrame({'grade': np.random.choice(list('ABCD'),size=(20)),
                   'pass': np.random.choice([0,1],size=(20))
})

feature,target = 'grade','pass'
df_woe_iv = (pd.crosstab(df[feature],df[target],
                      normalize='columns')
             .assign(woe=lambda dfx: np.log(dfx[1] / dfx[0]))
             .assign(iv=lambda dfx: np.sum(dfx['woe']*
                                           (dfx[1]-dfx[0]))))

df_woe_iv

output

pass     0    1       woe        iv
grade                              
A      0.3  0.3  0.000000  0.690776
B      0.1  0.1  0.000000  0.690776
C      0.2  0.5  0.916291  0.690776
D      0.4  0.1 -1.386294  0.690776

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在Python/pandas中获得证据权重(WOE)和信息价值(IV)? 的相关文章

随机推荐

  • 在 anaconda 中更新 Spyder 后出现内核错误 [重复]

    这个问题在这里已经有答案了 我将 Spyder 更新到版本 4 1 0 以及 anaconda 中的所有其他软件包 Spyder 本身工作正常 但内核无法工作 我收到以下错误 但不知道如何解决它 An error ocurred while
  • 按无头 Csv 文件的索引选择列?

    以下脚本可以从带有标题的 CSV 文件中选择两列 import csv file1 select x y 但是 如何从没有标题的 csv 文件中按索引选择列 例如第 9 列和第 10 列 import csv file2 select 9
  • 为什么 waveOutWrite() 会导致调试堆中出现异常?

    在研究这个问题时 我在网上发现了多次提到以下场景的情况 这些场景总是在编程论坛上成为未解答的问题 我希望在这里发布这篇文章至少可以记录我的发现 首先 症状 在运行使用 waveOutWrite 输出 PCM 音频的相当标准的代码时 我有时在
  • 我可以在 C 中将 GCC 的 __builtin_expect() 与三元运算符一起使用吗

    The 海湾合作委员会手册 http gcc gnu org onlinedocs gcc Other Builtins html仅显示 builtin expect 放置在 if 语句的整个条件周围的示例 我还注意到 如果我使用它 例如
  • 如何通过 terraform 获取现有 ec2 实例的实例 id / arn?

    我正在使用 Terraform 进行一些基础设施部署 data aws instance ec2 my admin instance filter name tag TfServerType values myAdmin output th
  • Pandas Timedelta(以月为单位)

    如何使用 pandas 计算过去的月份 我写了以下内容 但这段代码并不优雅 你能告诉我更好的方法吗 import pandas as pd df pd DataFrame pd Timestamp 20161011 pd Timestamp
  • 无法转换为 [Ljava.lang.Comparable

    所以我需要做动态有序列表 public class DynArrayListOrd
  • 将子程序的地址转换为 void 指针

    尽管函数指针大小并不总是与不透明指针大小相同 但可以使用 void 指针来转换函数位置吗 我已经搜索过不透明指针和转换函数指针 我发现函数指针和普通指针在某些系统上不一样 void fptr void void 0x00000009 is
  • 无法将角色分配给用户

    我尝试在我的 laravel 应用程序上使用 spatie laravel permission 但我无法为用户分配角色 我面临的错误是 调用未定义的方法 Illuminate Database Query Builder assignRo
  • 为什么我的 JSP 更改在不重新启动 Tomcat 的情况下不会反映出来?

    我正在编辑直接驻留在其中的 JSP 文件tomcat webapps myapp WEB INF 但要看到更改 我必须重新启动服务器 据我所知 JSP 更改不需要您重新启动服务器 我发现的唯一与自动重新加载相关的配置是可重新加载 真 htt
  • 如何向我的 XMPP 帐户添加和订阅 jabber 条目?

    我可以添加Entry使用此代码到 Xmpp 帐户 我无法订阅 两者 而不是我得到的none roster createEntry email protected cdn cgi l email protection abc null 如何添
  • 一个 Portlet 内的多个页面

    我很好奇是否有人知道单个 portlet 是否可以包含多个页面 比如说 JSP 页面 此外 是否可以链接到同一个 portlet 中的这些不同页面 例如 假设我有一个 portlet 在这个 portlet 中 我希望初始视图是一个 JSP
  • 407 需要代理验证

    在 Mozilla Firefox 中使用 XMLHttp 对象异步调用时 出现以下异常 407 Proxy Authentication Required The ISA Server requires authorization to
  • Seaborn 热图上 y 轴刻度的垂直对齐

    我正在策划一个Seaborn heatmap我想将y axis勾选标签 但找不到方法来做到这一点 va 文本属性似乎不可用yticks 考虑到以下几点image I d like to align the days of the week
  • 有没有办法自动禁止Matlab在命令窗口中打印大矩阵?

    matlab 或插件 应用程序中是否有一个选项或一个技巧 例如 如果您处于交互式命令会话中 每次打印出的矩阵对于人类来说太大而无法查看时 它会将输出编辑为警告矩阵有多大或矩阵的摘要 只有几行和几列 有很多次我想在命令窗口中检查一个矩阵 但我
  • 在 groupby 之后获得最低值 - Pandas

    我有一个具有以下格式的表 data City London Paris Paris NY London Distance 5 1 7 2 6 df pd DataFrame data df City Distance 0 London 5
  • NodeJS TransactionID 与 Continuation-local-storage

    各位 我想在 NodeJS 中实现事务 ID 跟踪 读完这篇文章后 https datahero com blog 2014 05 22 node js preserving data across async callbacks http
  • 如何在递归菜单中仅选择顶级li?

    如何只选择一级李 如果我执行 ul li 它也会选择孩子们 有没有办法使用 CSS 仅选择顶层而不选择子级 如果没有 我可以使用 jQuery 但是在这种情况下我该如何选择它呢 ul li class administration firs
  • 从 winform C# 获取浏览器上的 cookie

    我正在构建一个应用程序 在用户登录我的网站后 该应用程序会转到一个链接以获取他的用户名 以便我可以在该应用程序上识别他 现在 如果我作为用户从浏览器登录 然后将类似内容粘贴到该浏览器上 我将得到一个包含我的用户名的页面 但如果我从代码执行网
  • 如何在Python/pandas中获得证据权重(WOE)和信息价值(IV)?

    我想知道如何在Python中计算WOE和IV numpy scipy pandas sklearn中有奉献功能吗 这是我的示例数据框 import numpy as np import pandas as pd np random seed