关于分箱的一些介绍

news2024/11/18 17:36:05

在这篇文章中,我将介绍一种数据预处理的技术——分箱,然会将会从概念、步骤、分类、应用场景、注意事项与实际操作等方面去介绍它。

一、概念

分箱(Binning)是一种数据预处理技术,在数据分析和机器学习中经常使用。它的主要目的是将连续型数值变量转换为离散的区间或类别,从而简化数据处理过程,并且有时候可以提高模型的性能。分箱可以应用于各种场景,包括但不限于金融风险评估、市场分析以及客户行为预测等。

实际上,我们就是将一组连续的数值放入到在特征的输入范围内划分成的个数固定的箱子(bin)中去,以此来实现离散化。

二、步骤

在知道概念后,我们来正式明确下分箱的具体步骤:

1.确定区间数量,即明确我们将划分的箱子的个数。至于如何确定它则需要考虑这些因素:数据分布(如果数据分布均匀,则需要较少的箱数量,反之则需要较多的数量)、数据量(当数据较大时,我们需要考虑数据划分后的粒度,否则可能会出现过拟合等问题)、业务需求(比如在金融领域,我们可以根据业务上对于信贷风险评估的划分等级来确定箱子数量)等。此外,还常常会用等宽分箱、等宽分箱以及信息增益与信息熵来确定数量。

通常情况下,我们可以选择4到7个箱子,因为大部分情况下用这个范围内的箱子数量都不会出现划分过细或过粗略等问题;

2.确定区间边界。关于确定区间边界,我们可以考虑使用等宽分箱、等宽分箱、自定义分箱、基于统计量进行分箱等;

3.分配数据点。根据之前确定好的箱子,直接将数据集中的数据点进行分配即可。

三、分类

其实可以说分箱如何分类就是根据上述中如何确定箱子数量与边界而确定的,所以,关于分箱的分类可以分为如下几种:

3.1 基于区间宽度的分箱

等宽分箱:

将数据范围分割成具有相同宽度的区间。这种方法简单直观,但可能不适合数据分布不均匀的情况。

举个例子:

假设有如下年龄数据(单位:岁): 23,28,31,35,38,42,45,47,50,52,55,58,60,62,65,68,70,72,75,78。

然后我们欲将之分为5个箱子来放之。

所以我们先找到最大值与最小值,分别为78与23。那么我们就可的区间宽度为:\frac{78-23}{5}=11,所以关于边界的问题也可以得到答案:

第一个区间:[23, 34)

第二个区间:[34, 45)

第三个区间:[45, 56)

第四个区间:[56, 67)

第五个区间:[67, 78]

3.2 基于数据频率的分箱

等频分箱:

将数据分割成包含相同数量数据点的区间。这种方法能够较好地处理数据分布不均匀的情况。

同样举个例子:

问题不变,还是那些数据与5个箱子,但这时我们要做的第一件事不同,不是找最值而是前去进行一个排序,然后可以得到:23,28,31,35,38,42,45,47,50,52,55,58,60,62,65,68,70,72,75,78

一共有20个数据点,要分5个箱子,则每个箱子包含的数据点为:\frac{20}{5}=4

那么关于边界的划分同样明确了:

第一个区间:前 4 个数据点

第二个区间:第 5 到第 8 个数据点

第三个区间:第 9 到第 12 个数据点

第四个区间:第 13 到第 16 个数据点

第五个区间:最后 4 个数据点

3.3 基于统计量的分箱

百分位数分箱:

根据数据的百分位数来划分区间。

四分位数分箱:

将数据分为四个部分,分别对应四分之一、二分之一、四分之三和全部数据。

举个例子:

假设有如下年龄数据(单位:岁): 23,28,31,35,38,42,45,47,50,52,55,58,60,62,65,68,70,72,75,78。

我们去找这组数据的四分位位置是哪个数,如此往后而可进行分箱,即:

对于给定的数据集(因为已排序,所以不必重复排序操作,如果数据集在开始时是乱的则还需要排序),我们首先计算四分位数:

最小值(Min):23

第一四分位数(Q1):第 25% 的位置,即第 5 个数据点(38)

中位数(Q2):第 50% 的位置,即第 10 个数据点(52)

第三四分位数(Q3):第 75% 的位置,即第 15 个数据点(65)

最大值(Max):78

所以,根据四分位数,我们可以确定以下区间边界:

第一个区间:[Min, Q1) 即 [23, 38)

第二个区间:[Q1, Q2) 即 [38, 52)

第三个区间:[Q2, Q3) 即 [52, 65)

第四个区间:[Q3, Max] 即 [65, 78]

3.4 自定义分箱

根据某些业务需求,就像之前说的金融信贷问题去分箱等。在此不赘述。

3.5 组合分箱

我们还可以将上述的情况在某些特定情况下组合使用。

四、应用场景

异常值处理:通过分箱可以将异常值的影响降到最低。

模式识别:在某些情况下,分箱可以帮助发现数据中的模式。

模型构建:分箱后的数据更容易用于分类算法,尤其是在处理非线性关系或者与连续变量相关的复杂关系时。

五、注意事项

我们在分箱的过程中是很容易出现过度分箱和分箱不足的情况的,这样就会导致信息丢失与细节的不足,所以需要我们及时发现与修正。

此外,在划分边界上,我们需要考虑那些在边界上的点以确保数据的准确性。

六、python实践

import pandas as pd

# 创建数据
data = {
    'Age': [23, 28, 31, 35, 38, 42, 45, 47, 50, 52, 55, 58, 60, 62, 65, 68, 70, 72, 75, 78]
}

# 创建 DataFrame
df = pd.DataFrame(data)
print(df)

# 等宽分箱
# 设定区间数量
num_bins = 5

# 计算每个区间的宽度
width = (df['Age'].max() - df['Age'].min()) / num_bins

# 使用 Pandas 的 cut 函数进行分箱
df['Age_Bins'] = pd.cut(df['Age'], bins=num_bins, right=False)

# 显示结果
print("Equal-Width Binning:")
print(df)

# 等频分箱
# 设定区间数量
num_bins = 5

# 使用 Pandas 的 qcut 函数进行分箱
df['Age_Bins'] = pd.qcut(df['Age'], q=num_bins, duplicates='drop')

# 显示结果
print("Equal-Frequency Binning:")
print(df)

输出为:

    Age
0    23
1    28
2    31
3    35
4    38
5    42
6    45
7    47
8    50
9    52
10   55
11   58
12   60
13   62
14   65
15   68
16   70
17   72
18   75
19   78

Equal-Width Binning:
    Age        Age_Bins
0    23    [23.0, 34.0)
1    28    [23.0, 34.0)
2    31    [23.0, 34.0)
3    35    [34.0, 45.0)
4    38    [34.0, 45.0)
5    42    [34.0, 45.0)
6    45    [45.0, 56.0)
7    47    [45.0, 56.0)
8    50    [45.0, 56.0)
9    52    [45.0, 56.0)
10   55    [45.0, 56.0)
11   58    [56.0, 67.0)
12   60    [56.0, 67.0)
13   62    [56.0, 67.0)
14   65    [56.0, 67.0)
15   68  [67.0, 78.055)
16   70  [67.0, 78.055)
17   72  [67.0, 78.055)
18   75  [67.0, 78.055)
19   78  [67.0, 78.055)

Equal-Frequency Binning:
    Age        Age_Bins
0    23  (22.999, 37.4]
1    28  (22.999, 37.4]
2    31  (22.999, 37.4]
3    35  (22.999, 37.4]
4    38    (37.4, 48.8]
5    42    (37.4, 48.8]
6    45    (37.4, 48.8]
7    47    (37.4, 48.8]
8    50    (48.8, 58.8]
9    52    (48.8, 58.8]
10   55    (48.8, 58.8]
11   58    (48.8, 58.8]
12   60    (58.8, 68.4]
13   62    (58.8, 68.4]
14   65    (58.8, 68.4]
15   68    (58.8, 68.4]
16   70    (68.4, 78.0]
17   72    (68.4, 78.0]
18   75    (68.4, 78.0]
19   78    (68.4, 78.0]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2178469.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java8 用流收集数据之归约汇总

目录 规约汇总最大值 (max)・最小值 (min)统计总数 (count)统计求和 (summingInt・summingLong・summingDouble・sum)平均值 (averagingInt・averagingLong・averagingInt・average)统计梗概 (summarizingInt・summarizingLong・summarizingDouble・summ…

AI周报(9.22-9.28)

AI应用-Siipet宠物沟通师 Siipet是一款由SiiPet公司推出的创新宠物行为分析相机,旨在通过尖端技术加深宠物与主人之间的情感联系。这款相机利用先进的AI算法,能够自动识别和分析家中宠物的行为,并提供定制化的护理建议。 SiiPet相机的核心功…

益而益集团荣获2024年江苏省智能制造车间称号

近日,江苏省工信厅公示2024年江苏省智能制造车间名单,苏州益而益电器制造有限公司以其卓越的智能化转型成果,荣获2024年度江苏省级智能制造车间称号。 此次获评,是江苏省政府对益而益集团智能化高质量转型发展的认可及肯定&#…

活动在线报名小程序源码系统 自主提交表单+创建表单 带完整的安装代码包以及搭建部署教程

系统概述 随着各类活动的日益丰富和多样化,传统的报名方式逐渐显现出其局限性。纸质报名表格繁琐易错、人工统计费时费力,难以满足现代活动管理的需求。因此,开发一款集自主提交表单和创建表单功能于一体的活动在线报名小程序源码系统成为必…

mit6824-01-MapReduce详解

文章目录 MapReduce简述编程模型执行流程执行流程排序保证Combiner函数Master数据结构 容错性Worker故障Master故障 性能提升定制分区函数局部性执行缓慢的worker(slow workers) 常见问题总结回顾参考链接 MapReduce简述 MapReduce是一个在多台机器上并行计算大规模数据的软件架…

C++进阶知识2 多态

多态 1. 多态的概念2. 多态的定义及实现2.1 多态的构成条件2.1.2 虚函数2.1.3 虚函数的重写/覆盖2.1.5 虚函数重写的⼀些其他问题2.1.6 override和final关键字2.1.7 重载/重写/隐藏的对⽐ 3. 多态的原理3.2 多态的原理3.2.1 多态是如何实现的3.2.2 动态绑定与静态绑定3.2.3 虚函…

828华为云征文|部署在线文档应用程序 CodeX Docs

828华为云征文|部署在线文档应用程序 CodeX Docs 一、Flexus云服务器X实例介绍二、Flexus云服务器X实例配置2.1 重置密码2.2 服务器连接2.3 安全组配置2.4 Docker 环境搭建 三、Flexus云服务器X实例部署 CodeX Docs3.1 CodeX Docs 介绍3.2 CodeX Docs 部署3.3 CodeX…

SpringBoot整合JPA 基础使用

一、什么是JPA ‌‌1.JPA的定义和基本概念‌‌ ‌JPA(Java Persistence API)‌是Java中用于进行持久化操作的一种规范,它定义了一系列用于操作关系型数据库的API接口。通过这些接口,开发人员可以方便地进行数据库的增删改查等操…

ArcgisEngine开发中,Ifeatureclass.Addfield 报错0x80040655处理方法

1、ArcgisEngine开发中,Ifeatureclass.Addfield 报错0x80040655。如下图所示。 2、经分析,这是由于字段类型错误,经检查,是由于字段名为中文名,超出shp格式的最大字段长度量,看资料说是5个中文字符&#xf…

fastadmin 搜索提交重置按钮文本修改

默认 修改require-backend.min.js文件 效果 当然最好还是去需修改lang文件 效果 如果修改没生效记得清楚一下缓存,再刷新 完结 赠人玫瑰,手有余香!如果文章内容对你有所帮助,请不要吝啬你的点赞评论和关注,你…

校园跑腿系统二手市场校园搭子校园社团活动系统2000的和4800的有什么区别

校园跑腿系统、二手市场、校园搭子、校园社团活动系统在不同价格档位(如2000元和4800元)之间可能存在多方面的区别,这些区别主要体现在功能丰富性、技术支持、用户体验、定制化程度以及后续服务等方面。然而,由于具体的价格差异和…

TDengine 流计算与窗口机制的深度解析:揭示计数窗口的关键作用

在 TDengine 3.2.3.0 版本中,我们针对流式计算新增了计数窗口,进一步优化了流式数据处理的能力。本文将为大家解读流式计算与几大窗口的关系,并针对新增的计数窗口进行详细的介绍,帮助大家进一步了解 TDengine 流式计算&#xff0…

趣味SQL | 从围棋收官到秦楚大战的数据库SQL实现(下)

目录 0 上集回顾 1 双先量化,得失权衡 2 各守城池,妥协攻守 3 SQL演算,三策评详 4 寸土必争,利益倍增 5 SQL再演,策略精进 6 棋道相通,治国有术 如果觉得本文对你有帮助,那么不妨也可…

这是我见过最强的AI大模型教程书籍!免费白嫖,可以上车!!

这是LLM入门级书籍,共145页,主要介绍了大型语言模型(LLM)的基本原理和底层技术。 阅读本书,您将能够掌握 LLM 的基本概念,了解自然语言处理(NLP)的发展历程,理解 Transf…

家中浮毛太多怎么办?希喂、米家、安德迈更推荐哪款?

在现代养宠家庭生活中,宠物空气净化器已经成为不可或缺的家电之一。 而在众多空气净化器类型中,宠物空气净化器以其独特的设计和卓越的净化效果,逐渐赢得了越来越多养宠家庭的青睐。 它不仅能有效地吸附空中飞舞的浮毛,还能高效…

召回10 Deep Retrieval召回

Deep Retrieval召回:给定用户特征采用beam search算法召回路径,根据路径召回物品,对物品排序,最终用分数高的物品作为召回结果。 双塔模型是将向量表征作为用户和物品之间的中介。 Deep Retrieval是将路径作为用户和物品之间的中介…

基于Java+VUE+echarts大数据智能道路交通信息统计分析管理系统的设计与实现

大数据智能交通管理系统是一种基于Web的系统架构,通过浏览器/服务器(B/S)模式实现对城市交通数据的高效管理和智能化处理。该系统旨在通过集成各类交通数据,包括但不限于车辆信息、行驶记录、违章情况等,来提升城市管理…

场地预约系统小程序的设计

管理员账户功能包括:系统首页,个人中心,用户管理,场地类型管理,场地信息管理,我的预约管理,场地使用管理 微信端账号功能包括:系统首页,场地信息,我的预约&a…

简易CPU设计入门:取指令(三),ip_buf与rd_en的非阻塞赋值

在开篇,还是请大家首先准备好本项目所用的源代码。如果已经下载了,那就不用重复下载了。如果还没有下载,那么,请大家点击下方链接,来了解下载本项目的CPU源代码的方法。 下载本项目代码 准备好了项目源代码以后&…

图形化编程-在DevC++中集成EasyX图形库

1、EasyX介绍 EasyX (EasyX Graphics Library)是针对 C/C++ 的图形库,可以帮助使用C/C++语言的程序员快速上手图形和游戏编程,可以用EasyX 很快的画一个房子,或者一辆移动的小车,也可以编写俄罗斯方块、贪吃蛇、黑白棋等小游戏,可以练习图形学的各种算法等等。 EasyX …