OptBinning 特征分箱包使用介绍
OptBinning:支持数值型和分类型的最大IV分箱,并可保证分箱单调性,同事方便处理缺失值。作为一个分箱包还是挺好用,这里简答介绍了这个包中OptimalBinning和fit_transform的参数。
1、使用案例
import pandas as pd
from sklearn.datasets import load_breast_cancer
# 数据准备
data = load_breast_cancer()
df = pd.DataFrame(data.data, columns=data.feature_names)
variable = "mean radius"
x = df[variable].values
y = data.target
from optbinning import OptimalBinning
optb = OptimalBinning(name=variable, dtype="numerical", solver="cp",max_n_bins=5) # 通过设置参数建立分箱器
w = optb.fit_transform(x,y,metric='indices') # 通过设置参数进行分箱
optb.binning_table.build() # 展示分箱结果
Bin | Count | Count (%) | Non-event | Event | Event rate | WoE | IV | JS | |
---|---|---|---|---|---|---|---|---|---|
(-inf, 12.33) | 197 | 0.346221 | 6 | 191 | 0.969543 | -2.939364 | 1.489412 | 0.139117 | |
1 | [12.33, 13.09) | 68 | 0.119508 | 7 | 61 | 0.897059 | -1.643814 | 0.226599 | 0.025513 |
2 | [13.09, 15.05) | 132 | 0.231986 | 38 | 94 | 0.712121 | -0.384559 | 0.032326 | 0.004016 |
3 | [15.05, 16.93) | 54 | 0.094903 | 44 | 10 | 0.185185 | 2.002754 | 0.359566 | 0.038678 |
4 | [16.93, inf) | 118 | 0.207381 | 117 | 1 | 0.008475 | 5.283323 | 2.900997 | 0.183436 |
5 | Special | 0.000000 | 0.000000 | 0.0 | 0.000000 | 0.000000 | |||
6 | Missing | 0.000000 | 0.000000 | 0.0 | 0.000000 | 0.000000 | |||
Totals | 569 | 1.000000 | 212 | 357 | 0.627417 | 5.008900 | 0.390760 |
array([12.32999992, 13.09499979, 15.04500008, 16.92500019])
(0.8667089477300354, 5.008900160240071, 0.7286216373341788)
2、OptimalBinning 构建分箱器参数介绍
变量名称、类型和默认值 | 解释 | 可选参数 | 说明 |
---|---|---|---|
name : str, optional (default=“”) | 变量名称 | 不重要 | |
dtype : str, optional (default=“numerical”) | 分箱类型 | numerical;categorical | numerical:数值型;categorical:分类型; |
prebinning_method : str, optional (default="cart | 分箱方法 | cart;mdlp;quantile;uniform | cart:决策树; mdlp:Minimum Description Length Principle ; quantile:分位数,等频率uniform:等宽分箱 |
solver : str, optional (default=“cp”) | 算子 | cp;mip | 不重要,一般按默认算子 |
divergence : str, optional (default=“iv”) | 划分依据 | iv;js;hellinger;triangular | 求解最大化的指标,其他不了解,一般使用iv |
min_n_bins 、max_n_bins: int or None, optional (default=None) | 最小、最大分箱数量 | ||
min_bin_size、max_bin_size : float or None, optional (default=None) | 最小、最大箱数据占比 | ||
min_bin_n_nonevent、max_bin_n_nonevent 、min_bin_n_event 、max_bin_n_event :nt or None, optional (default=None) | 箱中响应和不响应最小(最大)数量 | ||
monotonic_trend: : str or None, optional (default=“auto”) | 单调趋势 | 一般使用的有:ascending,descending,auto_asc_desc,peak,valley | ascending:单调递增; descending:单调递减 auto_asc_desc:自动增减: peak:先增后减 valley:先减后增 |
min_event_rate_diff : float, optional (default=0) | 相隔分箱之间最小差距 | only applies when is “ascending”, “descending”, “peak_heuristic” or “valley_heuristic”. | |
user_splits_fixed | 提前设定的分箱 |
3、optb.fit_transform 数据分箱参数介绍
变量名称、类型和默认值 | 解释 | 可选参数 | 说明 |
---|---|---|---|
x : array-like, shape = (n_samples,) | x | ||
y : array-like, shape = (n_samples,) | y | ||
sample_weight : array-like of shape (n_samples,) (default=None) | 样本权重 | ||
metric : str (default=“woe”) | 编码方式 | woe;event_rate;indices;bins | woe、event_rate:返回区间woe和rate; indices:返回0,1,2,3; bins:返回分箱区间; |
metric_missing :loat or str (default=0) | 缺失值编码 | 缺失值编码的值 |