在机器学习中,连续变量的离散化过程,一般用pandas的 qcut或者cut函数来进行分箱。
qcut和cut的区别
关于这两个函数的联系和区别,网上有各种说法,典型的有以下几种:
- qcut用于指定箱子个数,cut用于指定分箱边界。
- qcut用于等频分箱,cut用于等距分箱。
- qcut用于值比较多的情况,cut用于值比较少。
这些说法都是不准确或者不对的,归根结底来说,qcut和cut的区别,是分箱思路的不同。也就是分箱时,你关注的是箱子的容量(即箱子中样本的多少),还是关注箱子的尺寸(即边界值,以及边界值之间的距离)。
如果关注的是箱子的容量,比如希望等频分箱,或者第一个箱子装50%,剩下的平分,那么就用qcut。
如果关注的是箱子的尺寸,比如0-100的装在一个箱子里面,100-200的装另外一个,或者说等距分箱,那么就用cut。
具体解释下qcut和cut的各个参数以及返回值的含义。
qcut 基于分位数的离散化方法
不仅可以等频分箱,而且可以指定每个箱子的分位数。
out, bins = pandas.qcut(x, q, labels=None, retbins=False, precision=3, duplicates=‘raise’)
参数名 | 取值 | 说明 |
---|---|---|
x | 1d ndarray |