数据的预处理分箱python_数据预处理——数据分箱

本文探讨了数据预处理中变量分箱的重要性,包括异常值处理、模型表达能力提升、降低运算复杂度等方面。同时,介绍了三种变量分箱方法:无序变量分箱采用one-hot编码,有序变量分箱通过映射处理,连续变量分箱则涉及等宽和等频划分。此外,还提供了一个基于卡方检验的有监督分箱Python实现示例。
摘要由CSDN通过智能技术生成

建模数据的预处理的过程中,变量分箱(即变量离散化)往往是较为核心一环。变量分箱的优劣往往会影响模型评分效果。

上一步:数据预处理——缺失值、异常值、重复值处理

下一步:变量显著性检验——计算 WOE、IV

那么本篇文章要解决2个问题:

1. 变量分箱的必要性

2. 三类变量分箱方法的及注意要点

一、变量分箱的必要性

知其然知其所以然:我刚开始接触建模时,只是看着其他建模流程中存在这个操作,但却不知道为什么要进行变量离散化,实践过后发现分箱主要有以下4个好处:

1.1 对异常数据有很强的鲁棒性:比如一个特征是会话时长=702341sec,换算成天是8.1天,这属于明显的异常值。如果特征没有离散化,一个异常数据“会话时长=8.1天”会给模型造成很大的干扰;在很多网页分析系统中,0点之后会话将被强行切分,所以会话时长不可能超过1天。

1.2 在逻辑回归模型中,单变量离散化为N个哑变量后,每个哑变量有单独的权重,相当于为模型引入了非线性,能够提升模型表达能力,加大拟合;

1.3 缺失值也可以作为一类特殊的变量进入模型

1.4 分箱后降低模型运算复杂度,提升模型运算速度,对后后期生产上线较为友好在真正生产环境中,模型的反馈时效是非常重要的指标。一般地,如果反馈时间超过200ms,系统会返回一个超时的默认结果,以避免用户产品体验变差。

二、三类变量分箱方法的及注意要点

3.1 无序变量分箱

举个例子,在实际模型建立当中,有个 job 职业的特征,取值为(“国家机关人员”,“专业技术人员”,“商业服务人员”),对于这一类变量,如果我们将其依次赋值为(国家机关人员=1;专业技术人员=2;商业服务人员=3),就很容易产生一个问题,不同种类的职业在数据层面上就有了大小顺序之分,国家机关人员和商业服务人员的差距是2,专业技术人员和商业服务人员的之间的差距是1,而我们原来的中文分类中是不存在这种先后顺序关系的。所以这么简单的赋值是会使变量失去原来的衡量效果。

怎么处理这个问题呢,“一位有效编码” (one-hot Encoding)可以解决这个问题,通常叫做虚变量或者哑变量(dummpy variable):比如职业特征有3个不同变量,那么将其生成个2哑变量,分别是“是否国家党政职业人员”,“是否专业技术人员” ,每个虚变量取值(1,0)。为什么2个哑变量而非3个?

在模型中引入多个虚拟变量时,虚拟变量的个数应按下列原则确定:

1.回归模型有截距:一般的,若该特征下n个属性均互斥(如,男/女;儿童/青年/中年/老年),在生成虚拟变量时,应该生成 n-1个虚变量,这样可以避免产生多重共线性。

2. 回归模型无截距项:有n个特征,设置n个虚拟变量

【1】国家党政职业人员= 1 &专业技术人员 =0,则为国家党政职业人员;

【2】国家党政职业人员= 0 &专业技术人员 =1,则为专业技术人员;

【3】国家党政职业人员= 0 &专业技术人员 =0,则为商业服务人员;

使用pandas可以很方便的对离散型特征进行one-hot编码:

# python 实现

import pandas as pd

df= pd.DataFrame([['专业技术人员','A',1],['国家机关人员','C',2],['国家机关人员','A',1],['商业人员','C',4],['国家机关人员','B',5]],columns=['job','class','value'])

df = pd.get_dummies(df,columns&#

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值