点击上方“算法猿的成长“,关注公众号,选择加“星标“或“置顶”

总第 120 篇文章,本文大约 1200 字,阅读大约需要 3 分钟

今天这篇文章主要是介绍在特征工程中,对数值型特征进行分桶操作的方法。


简介

分桶是离散化的常用方法,将连续型特征离线化为一系列 0/1 的离散特征;

当数值特征跨越不同的数量级的时候,模型可能会只对大的特征值敏感,这种情况可以考虑分桶操作。

分桶操作可以看作是对数值变量的离散化,之后通过二值化进行 one-hot 编码。

分桶的数量和宽度可以根据业务领域的经验来指定,但也有一些常规的做法:

  1. 等距分桶。每个桶的宽度是固定的,即值域范围是固定的,比如是 0-99,100-199,200-299等;这种适合样本分布比较均匀的情况,避免出现有的桶的数量很少,而有的桶数量过多的情况;

  2. 等频分桶,也称为分位数分桶。也就是每个桶有一样多的样本,但可能出现数值相差太大的样本放在同个桶的情况;

  3. 模型分桶。使用模型找到最佳分桶,比如聚类,将特征分成多个类别,或者树模型,这种非线性模型天生具有对连续型特征切分的能力,利用特征分割点进行离散化。

分桶的优点

  • 分桶后得到的稀疏向量,内积乘法运算速度更快,计算结果更方便存储;

  • 对异常数据有很强的鲁棒性

需要注意的是

  • 要让桶内的属性取值变化对样本标签的影响基本在一个不大的范围,即不能出现单个桶内,样本标签输出变化很大的情况;

  • 每个桶内都有足够的样本,如果样本太少,随机性太大,不具有统计意义上的说服力;

  • 每个桶内的样本进行分布均匀;

等距分桶

对于等距分桶的操作:

  • 当数字跨越多个数量级时,最好用10个幂(或任何常数的幂)来分组:0-9、10-99、100-999、100-9999等。

  • 容器宽度呈指数增长,从O(10)、O(100)到O(1000)和以上。要从计数映射到bin,取计数的log值

对数变换是处理具有重尾分布的正数的有力工具。(重尾分布在尾部范围内的概率比高斯分布的概率大)。它将分布在高端的长尾压缩成较短的尾部,并将低端扩展成较长的头部。

下面是展示的代码例子:

数值较少的例子:

import numpy as np
# 生成 20 个 0-99 之间的随机整数
small_counts = np.random.randint(0, 100, 20)# 进行分箱操作, 通过对数据除以 10 分到 0-9 总共 9 个箱里,
# 返回的结果就是对应数据应该划分到的箱的编号
np.floor_divide(small_counts, 10)

数据之间的间隔较大的例子:

# 构造一个间隔更大的数组例子,可以通过取对数 log10 来进行分箱
large_counts = [296, 8286, 64011, 80, 3, 725, 867, 2215, 7689, 11495, 91897, 44, 28, 7971, 926, 122, 22222]
np.floor(np.log10(large_counts))

等频分桶

对于等频分桶,也称为按分位数分桶,为了计算分位数和映射数据到分位数箱,我们可以使用 Pandas 库。pandas.DataFrame.quantilepandas.Series.quantile 用于计算分位数。pandas.qcut 将数据映射到所需数量的分位数。

代码例子如下:

large_counts = [296, 8286, 64011, 80, 3, 725, 867, 2215, 7689, 11495, 91897, 44, 28, 7971, 926, 122, 22222]
# 将数据映射到所需数量的分位数
pd.qcut(large_counts, 4, labels=False)
# 计算指定分位数点的数据
large_counts_series = pd.Series(large_counts)
large_counts_series.quantile([0.25, 0.5, 0.75])

参考文章:

  • 浅谈微视推荐系统中的特征工程

  • http://fe4ml.apachecn.org/#/docs/2.简单数字的奇特技巧



精选AI文章

1. 机器学习入门学习资料推荐

2.初学者的机器学习入门实战教程!

3.常用机器学习算法汇总比较(完)

4.特征工程之数据预处理(上)

5.实战|手把手教你训练一个基于Keras的多标签图像分类器

精选python文章

1. Python 基础入门--简介和环境配置

2. python版代码整洁之道

3. 快速入门 Jupyter notebook

4. Jupyter 进阶教程

5. 10个高效的pandas技巧

精选教程资源文章

1. [资源分享] TensorFlow 官方中文版教程来了

2. [资源]推荐一些Python书籍和教程,入门和进阶的都有!

3. [Github项目推荐] 推荐三个助你更好利用Github的工具

4. Github上的各大高校资料以及国外公开课视频

5. GitHub上有哪些比较好的计算机视觉/机器视觉的项目?

欢迎关注我的微信公众号--算法猿的成长,或者扫描下方的二维码,大家一起交流,学习和进步!

如果觉得不错,在看、转发就是对小编的一个支持!

一日一学--如何对数值型特征进行分桶相关推荐

  1. ML之FE:利用FE特征工程(分析两两数值型特征之间的相关性)对AllstateClaimsSeverity(Kaggle2016竞赛)数据集实现索赔成本值的回归预测

    ML之FE:利用FE特征工程(分析两两数值型特征之间的相关性)对AllstateClaimsSeverity(Kaggle2016竞赛)数据集实现索赔成本值的回归预测 目录 输出结果 设计思路 核心代 ...

  2. pandas判断标称型和数值型特征数据

    现已使用Pandas读取数据集studentmath.csv加粗样式 请获取该数据集各个特征的数据类型,将标称型特征存为nominal_array,数值型特征存为numerical_array 要求: ...

  3. python 离散化_利用Python将数值型特征进行离散化操作的方法

    利用Python将数值型特征进行离散化操作的方法 如下所示: data = np.random.randn(20) factor = pd.cut(data,4) pd.get_dummies(fac ...

  4. K-modes聚类-全中文特征-非数值型特征

    最近对K-modes聚类进行了简单尝试,产生了一点小小感悟,在此和大家分享一下,若有不妥之处欢迎大家留言讨论. 场景:所有用于聚类的变量都是中文类别变量,非常懒非常硬核就是不想数值化之后再聚类,选择了 ...

  5. 入门必学 | R语言数值型、字符型及因子型数据之间的差异与转换

    字符型.数值型及因子型数据之间的转换 数据类型的基本知识 不同数据类型之间的差异 数值型与字符型或因子型绘图时的差异 数值型与因子型和字符型的模型构建时的差异 三种数据类型之间进行转换    常用的三 ...

  6. 【数据处理】python变量分箱常见手法:分类型、数值型、卡方、自定义

    """ 分箱逻辑:1.类别型特征: 1)类别数在5个以下,可以直接根据类别来分箱 (binning_cate) 2)类别数在5个以上,建议做降基处理,再根据降基后的类别做 ...

  7. python分箱统计个数_【数据处理】python变量分箱常见手法:分类型、数值型、卡方、自定义...

    """ 分箱逻辑: 1.类别型特征: 1)类别数在5个以下,可以直接根据类别来分箱 (binning_cate) 2)类别数在5个以上,建议做降基处理,再根据降基后的类别 ...

  8. CatBoost 模型中标称型特征转换成数字型特征

    接上一篇文章 CatBoost 模型中标称特征的处理 ,这篇说一下CatBoot中实现的标称特征处理方法. 可以查看官网原文 Transforming categorical features to ...

  9. CatBoost 是如何自动高级处理类别型特征的?

    我们知道,CatBoost可以很好地处理类别型数据.然而,它还具有大量的训练参数,可以更好地对类别型特征进行预处理.本文中,小猴子将和大家一起学习如何使用这些参数处理类别型特征的. CatBoost是 ...

最新文章

  1. SAMBA的一些特殊设置
  2. 设计模式之观察者模式学习笔记
  3. 设置弹性框项目之间距离的更好方法
  4. 应用宝上架审核要求_【建议收藏】安卓应用商店上架经验,含流程,方法
  5. 利用jquery操作ajax,利用jquery对ajax操作,详解原理(附代码)
  6. L2-024. 部落-PAT团体程序设计天梯赛GPLT
  7. Citrix StoreFront无法正常初始化
  8. hibernate(五)之继承关系
  9. 新代数控车床操作系统模拟器_新代数控系统模拟器 下载
  10. 麦子学院cocos2d听课截图
  11. 你永远赢不了“凯利公式”
  12. Boosting Crowd Counting via Multifaceted Attention
  13. 艾永亮:耐克阿迪都慌了,成功逆袭的李宁,产品创新战略是什么
  14. 商用向南,家用向北丨DOMOTEX asia 2020地毯馆大布局
  15. 博图 Portal v16 相关资源
  16. 缺氧游戏黑科技计算机,缺氧实用黑科技研究分享
  17. Maven tomcat7:run 配置
  18. 全局对比度的图像显著性检测算法
  19. 11个热门物联网开发平台的比较
  20. Failed to execute goal on project ...: Could not resolve dependencies for project ...

热门文章

  1. python管理数据库设计_Pycharm+Django+Python+MySQL开发 后台管理数据库
  2. 碧蓝航线8.20服务器维护,碧蓝航线半人马来袭 8.20更新公告
  3. Linux SD卡驱动开发(四) —— SD 控制器之真正的硬件操作
  4. sockaddr和sockaddr_in的区别
  5. vue组件化通信之兄弟组件传值
  6. React开发(230):ant design table固定表头
  7. 前端学习(3043):vue+element今日头条管理-组件目录和组件名
  8. [html] 如何禁止input输入的历史记录
  9. [html] html5点击返回键怎样不让它返回上一页
  10. [vue] 说说你对slot的理解有多少?slot使用场景有哪些?