WOE转化后查看每组分箱的IV
时间: 2024-02-16 12:03:40 浏览: 116
python自动分箱,计算woe,iv的实例代码
5星 · 资源好评率100%
在WOE转换后,可以使用IV(Information Value)来衡量每个分箱的预测能力。通常来说,一个好的分箱方案应该具有较高的IV值,因为这意味着该方案能够很好地区分目标事件和非目标事件。
在Python中,可以使用以下函数来计算每个分箱的IV值:
1. pandas.crosstab()函数:用于生成交叉表,可以用于统计每个分箱中的样本数和目标变量的分布情况。
2. pandas.DataFrame.apply()函数:用于对数据集中的每一列应用给定的函数,可以用于计算每个分箱的IV值。
3. numpy.log()函数:用于计算自然对数。
4. pandas.DataFrame.sum()函数:用于计算数据集中的每一列之和。
5. pandas.DataFrame.eval()函数:用于计算表达式的值。
6. pandas.concat()函数:用于将两个或多个数据集按照指定的轴进行拼接。
具体的计算步骤可以参考以下代码:
``` python
import pandas as pd
import numpy as np
# 计算每个分箱的WOE和IV值
def calc_woe_iv(df, col, target):
total = df.groupby(col)[target].agg(['count', 'sum'])
total.columns = ['total', 'bad']
total['good'] = total['total'] - total['bad']
total['bad_rate'] = total['bad'] / total['total']
total['good_rate'] = total['good'] / total['total']
total['woe'] = np.log(total['good_rate'] / total['bad_rate'])
total['iv'] = (total['good_rate'] - total['bad_rate']) * total['woe']
return total['iv'].sum()
# 计算每个变量的IV值
def calc_iv(df, target):
iv_values = []
for col in df.columns:
if col != target:
iv = calc_woe_iv(df, col, target)
iv_values.append((col, iv))
iv_values = sorted(iv_values, key=lambda x: x[1], reverse=True)
return pd.DataFrame(iv_values, columns=['Variable', 'IV'])
# 计算数据集的IV值
iv = calc_iv(df, target)
print(iv)
```
其中,`calc_woe_iv()`函数用于计算每个分箱的IV值,`calc_iv()`函数用于计算每个变量的IV值,最终得到的结果是一个DataFrame,其中包含了每个变量的名称和对应的IV值。
阅读全文