python实现数据离散化

本文介绍了数据挖掘中连续型属性离散化的必要性及两种常见方法:等宽分箱法与等频分箱法。重点讲解了等宽分箱法的实现过程,并提供了具体的Python代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据挖掘中有些算法,特别是分类算法,只能在离散型数据上进行分析,然而大部分数据集常常是连续值和离散值并存的。因此,为了使这类算法发挥作用,需要对数据集中连续型属性进行离散化操作。

那么,如何对连续型属性离散化呢?常见的有等宽分箱法等频分箱法

等宽分箱法的思想是,将数据均匀划分成n等份,每份的间距相等

等频分箱法的思想是,将观察点均匀分成n等份,每份的观察点数相同

在对数据离散化前,需要先处理异常点敏感问题,即我们需要首先设定一个阈值将异常数据移除。有两种思路:

1.设定阈值为90%,将数据从小到大排序,移除全部数据最小的5%和最大的5%数据

2.  设定阈值为90%,将数据从小到大排序,然后对所有数据求和,并计算每个数据占总和的比例,移除占比10%的数据

在这里,我们实现的方法是等宽分箱法,针对连续型数据集,代码比较简单基础,在此抛砖引玉,大家可以在代码的基础上增添自己需要的功能。

def dataDiscretize(dataSet):
    m,n = shape(dataSet)    #获取数据集行列(样本数和特征数)
    disMat = tile([0],shape(dataSet))  #初始化离散化数据集
    for i in range(n-1):    #由于最后一列为类别,因此遍历前n-1列,即遍历特征列
        x = [l[i] for l in dataSet] #获取第i+1特征向量
        y = pd.cut(x,10,labels=[0,1,2,3,4,5,6,7,8,9])   #调用cut函数,将特征离散化为10类,可根据自己需求更改离散化种类
        for k in range(n):  #将离散化值传入离散化数据集
            disMat[k][i] = y[k]    
    return disMat


评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值