数据分箱、分组

 

  • 下列情况下常用到分箱

a、某些数值自变量在测量时存在随机误差,需要对数值进行平滑以消除噪音

b、有些数值自变量有大量不重复的取值,对于使用 <、>、=等基本操作符的算法(如决策树)而言,如果能减少这些不重复取值的个数,就能提高算法的速度

c、有些算法只能使用分类自变量,需要把数值变量离散化

 

数据内被归纳入几个分箱后,可以用每个分箱内数值的均值、中位数或边界值替代分箱内各观测的数值,也可以把每个分箱作为离散化后的一个类别。

例如,

某个自变量的观测值为1,2.1,2.5,3.4,4,5.6,7,7.4,8.2.

假设将它们分为三个分箱,(1,2.1,2.5),(3.4,4,5.6),(7,7.4,8.2),

那么使用分箱均值替代后所得值为(1.87,1.87,1.87),(4.33,4.33,4.33),(7.53,7.53,7.53),

使用分箱中位数替代后所得值为(2.1,2.1,2.1),(4,4,4),(7.4,7.4,7.4),

使用边界值替代后所得值为(1,2.5,2.5),(3.4,3.4,5.6),(7,7,8.2)(每个观测值由其所属分箱的两个边界值中较近的值替代)

 

分箱法分为等深分箱(样本量一致,比等宽好)、等宽分箱(cut函数直接可以获取)

13100142_bH1K.png

 

  • cut函数

可以很方便的将一个连续型变量切割成很小的片段。下面是cut函数的默认形式,用于处理数值向量。该方式实现等宽分箱

#数值形式
cut(x,breaks,labels= NULL,
   include.lowers = F, right = TURE,dig.lab = 3,
   ordered_result = F,...)

x:数值向量(用于转换成一个因子)

breaks:指定分割点数量的整数,或者指定分割点位置的向量

labels:输出因子的水平的标签,默认问:null

include.lowest:逻辑值、当right = T时,表明区间左边的临界点是否应该被包含在区间内;当 right=F时,区间右边的临界点是否应该被包含在区间内,默认为F

rigth:逻辑值,表明区间是否应该是左开右闭的(当right=F,区间左闭右开),默认是T

dig.lab:当产生一个标签时,标签的有效位数(当标签未被显式指定时),默认是3

ordered_results:一个逻辑值,表明返回值是否应该被转换成有序因子,默认是FINS

 

cut函数还可以用来操纵R中的Date对象:

#日期形式
cut(x,breaks,labels=NULL,start.on.monday=T,right=F,...)

cut函数的输入是一个数值向量, 输出是一个因子。因子的每个水平对应输入向量的每个区间范围

 

转载于:https://my.oschina.net/u/1785519/blog/1572568

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值