机器学习之IV编码,分箱&WOE编码

IV的概念与作用

全称是Information Value,中文的意思是信息价值,或者信息量

作用:

1、构建分类模型时,经常需要对特征进行筛选。
2、挑选特征的过程考虑的因素比较多,最主要和最直接的衡量标准是特征的预测能力,而IV就是用来衡量自变量(也就是特征)的预测能力
IV需要用到WOE,而WOE是建立在分箱之上的

分箱:

数据分箱:是一种数据预处理技术,用于减少次要观察误差的影响,是一种将多个连续值分组为较少数量的“分箱”的方法。也就是将连续特征变成离散化特征。
分箱需要用到cut或者qcut
cut是等距分箱,为qcut是等频分箱

使用如下:

import numpy as np
import pandas as pd
# 得到哟组连续型变量
ages = np.linspace(1, 59, num=50)
print(ages.shape)
# 使用分箱对连续型变量进行离散化,bins表示的分组的个数
ages_cut = pd.cut(ages, bins=10, labels=['A','B','C','D','E','F','G','H','I','J'])
# 输出分箱后的结果
print(ages_cut)
print(ages_cut.value_counts())
# 等频分箱
ages_qcut = pd.qcut(ages, q=10)#q表示的箱子的个数
# 等频分箱的结果
print(ages_qcut)
print(ages_qcut.value_counts())

输出结果:

(50,)
['A', 'A', 'A', 'A', 'A', ..., 'J', 'J', 'J', 'J', 'J']
Length: 50
Categories (10, object): ['A' < 'B' < 'C' < 'D' ... 'G' < 'H' < 'I' < 'J']
A    5
B    5
C    5
D    5
E    5
F    5
G    5
H    5
I    5
J    5
dtype: int64
[(0.999, 6.8], (0.999, 6.8], (0.999, 6.8], (0.999, 6.8], (0.999, 6.8], ..., (53.2, 59.0], (53.2, 59.0], (53.2, 59.0], (53.2, 59.0], (53.2, 59.0]]
Length: 50
Categories (10, interval[float64, right]): [(0.999, 6.8] < (6.8, 12.6] < (12.6, 18.4] <
                                            (18.4, 24.2] ... (35.8, 41.6] < (41.6, 47.4] <
                                            (47.4, 53.2] < (53.2, 59.0]]
(0.999, 6.8]    5
(6.8, 12.6]     5
(12.6, 18.4]    5
(18.4, 24.2]    5
(24.2, 30.0]    5
(30.0, 35.8]    5
(35.8, 41.6]    5
(41.6, 47.4]    5
(47.4, 53.2]    5
(53.2, 59.0]    5
dtype: int64

什么是WOE?

WOE全称Weight of Evidence,也就是证据权重的意思,WOE是对原始特征的一种编码形式。要对一个特征进行WOE编码,需要首先吧这个变量进行分组处理(也叫离散化,分箱等等。),分组后,

WOE计算公式

你可能感兴趣的:(机器学习,人工智能)