欢迎光临散文网 会员登陆 & 注册

连续数据离散化之等频法

2023-05-22 12:17 作者:tevop2000  | 我要投稿

    等频法是将相同数量的记录放在每个区间,保证每个区间的数量基本一致。即将属性值分为具有相同宽度的区间,区间的个数k根据实际情况来决定。比如有60个样本,我们要将其分为k=3部分,则每部分的长度为20个样本。

    我们随机产生200个人的年龄数据,然后通过等宽离散化,并进行可视化。这里主要使用的是pandas库中的qcut函数。其缺点是边界易出现重复值,如果为了删除重复值可以设置 duplicates=‘drop’,但易出现于分片个数少于指定个数的问题。其函数定义如下:

知识点:

pd.qcut(x, q, labels=None, retbins=False, precision=3, duplicates='raise')

x :一维数组或者Serise

q : 表示分位数的整数或者数组,

  • 如果是分位数的整数,例如10用于十分位,4用于四分位

  • 如果是分位数数组,例如[0,0.25,0.5,0.75,1]用于四分位数

labels : 数组或者布尔值,默认为none,用于指定每个箱体的标签

  • 如果是数组,长度要与分箱个数一致,比如用四分位数分箱,需要指定四个标签

  • 如果为False,则仅返回分箱的整数指示符,即当前数据位于哪个箱子中

rebines :布尔值,可选。 是否显示分箱的分界值。(由于是按照分位数进行分箱,在不知道分位数具体数值的情况下,可以通过这个参数设置显示分界值即分位数的具体数值)

precision:整数,默认3,存储和显示分箱标签的精度。

duplicates:如果分箱临界值不唯一,则引发ValueError或丢弃非唯一

pd.qcut()的参数就是这些了,并不是所有的参数都常用,下边我们通过代码示例来看一下常用参数的应用。

我们利用pandas的qcut函数来进行案例讲解:

根据上面可以看出,每个区间数量大致相同。

连续数据离散化之等频法的评论 (共 条)

分享到微博请遵守国家法律