【特征工程】分类变量:简洁而高效的频数编码(Frequency Encoding)

频数编码(Frequency Encoding):一个简洁而高效的特征编码方法

1. 频数编码是什么?

频数编码的主要思想是用每个类别在数据集中出现的频率来替代原始的类别标签。这样可以用一个单一的数值来代表每个类别,而不引入高维度或额外的关系。

这里引入一个数学概念——基数(Cardinality)

基数,即集合中不同元素的数量,也可以用于描述关系数据库中表中列的唯一值的数量。
比如现在有A、B两个集合,其中:

  • 集合 A:[ A = {1, 2, 3, 4, 5, 6, 7} ]
  • 集合 B:[ B = {2, 4, 6, 8, 10} ]

所以,集合 A 的基数是 7,而集合 B 的基数是 5。

**频数编码通常适用于具有高基数(Cardinality)的分类特征。**高基数表示该特征有大量不同的类别或水平。对于低基数的分类特征,意味着元素或值的种类相对较,通常使用独热编码等方法更为合适。

以下是适合使用频数编码的一些情况:

  1. 城市/地区名称: 如果你有一个表示城市或地区的分类特征,并且有大量不同的城市或地区,那么使用频数编码可能是一个合理的选择。
  2. 用户ID或产品ID: 对于表示用户或产品的唯一标识符的分类特征,如果类别数量很大,频数编码可能会比独热编码更有效。
  3. 标签或类别型变量: 当你处理具有大量不同标签或类别的变量时,例如商品类别、文章标签等,频数编码也可以考虑使用。
  4. 自然语言处理中的词汇: 在文本数据中,如果你将文本中的词汇转换为分类特征,并且词汇量很大,频数编码可能是一个有用的工具。

2. 优缺点

优点:

  • 简单直观: 频数编码是一种简单而直观的方法,不引入复杂的转换规则,易于理解和实现。
  • 适用于树状模型: 频数编码特别适用于树状模型,如决策树、随机森林和梯度提升树等,因为这些模型能够有效地处理数值型特征。

缺点:

  • 忽略类别之间的内在关系: 频数编码并不考虑类别之间的内在关系,可能无法捕捉潜在的信息。
  • 对于线性模型效果有限: 在处理线性模型时,频数编码可能效果较差,因为线性模型通常更适用于数值型变量。

3. 参考代码案例

以下是使用Python进行频数编码的简单示例:

import pandas as pd# 创建示例数据
data = {'Category': ['A', 'B', 'A', 'B', 'A', 'A', 'B', 'A']}
df = pd.DataFrame(data)# 计算每个类别的频数
frequency_map = df['Category'].value_counts(normalize=True).to_dict()
#frequency_map = df.groupby('Category').size()/len(df)# 将频数编码应用到数据集
df['Category_Frequency'] = df['Category'].map(frequency_map)# 打印编码后的数据
print(df[['Category', 'Category_Frequency']])

输出结果:
在这里插入图片描述

计算代码解释

代码:df['Category'].value_counts(normalize=True).to_dict()
这行代码的最终目的是返回一个字典,其中包含了’Category’列中每个唯一值的相对频率。 下面是代码的解释:

  1. df['Category']: 选择DataFrame中名为’Category’的列,返回一个Series对象,其中包含了该列的所有数值。
  2. .value_counts(): 对该列中的每个唯一值进行计数,返回一个包含唯一值及其对应计数的Series。这个Series按计数值从高到低排序。
  3. normalize=True: 在进行计数时,将计数值除以总数,得到每个唯一值的相对频率(归一化),而不是绝对计数。这样可以得到每个唯一值在列中的比例。
  4. .to_dict(): 将上一步得到的Series转换为一个字典,其中唯一值是字典的键,相对频率是字典的值。

代码: df.groupby('Category').size()/len(df)
这行代码的目的是计算每个’Category’值在整个数据集中的相对频率。结果是一个Series,其中索引是’Category’的唯一值,而值是每个唯一值的相对频率。下面是代码的解释:

  1. df.groupby('Category'): 根据’Category’列的唯一值进行分组,返回一个GroupBy对象。这意味着数据根据’Category’列中的不同值被划分成多个组。
  2. .size(): 对每个分组计算其大小,即每个’Category’值出现的次数。
  3. /len(df): 将每个分组的大小除以整个DataFrame的长度,即总行数。这一步得到的是每个分组的相对频率,因为它是该分组大小占整个数据集大小的比例。

4. 适合的模型类型

频数编码主要适用于树状模型,包括但不限于:决策树、随机森林、梯度提升树……

这是因为这些模型能够更好地利用频数编码所提供的信息,而且频数编码的简洁性使得它在处理大规模数据时表现出色。在实际应用中,特别是在树状模型的训练中,频数编码是一个轻量而高效的特征工程方法。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024-01-19(SpringCloudThreadLocal)

1.Seata的TC服务注册到Nacos注册中心当中 2.Seata为我们提供了AT,TCC,SAGA,XA事务解决方案。 3.XA规范是一种分布式事务处理标准,XA规范描述了全局的TM与局部的RM之间的接口,几乎所有的主流的数据库都对XA规范提供了…

innoDB存储引擎

1.逻辑存储结构 行数据->行->页->区->段->表空间 表空间(ibd文件),一个mysql实例可以对应多个表空间,来存储记录,索引等数据。 段:分为数据段和索引段,回滚段,数据段就是B树的叶子节点&am…

红队渗透靶机:TOPPO: 1

目录 信息收集 1、arp 2、nmap 3、nikto 4、whatweb 5、dirsearch WEB tips1 tips2 SSH登录 提权 系统信息收集 本地 信息收集 1、arp ┌──(root㉿ru)-[~/kali] └─# arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:69:c7:bf, IPv4: 192.168.110…

Python连接数据库的梳理

我们通常用的数据库类型主要有关系型数据库,非关系型数据库等,其中关系型数据库主要有Microsoft SQL Server ,MySQL,Oracle,SQLite等,常用的非关系型数据库包括Redis、DynamoDB,MongoDB等 ​​​​​​​ 一 关系型…

策略路由与NQA联动示例

某公司网络使用SwitchA做汇聚层交换机,接入层交换机LSW做用户网关,LSW和SwitchA之间路由可达。汇聚层交换机SwitchA通过两条链路连接到两个核心交换机上,一条是高速链路,网关为10.1.20.1/24;另外一条是低速链路&#x…

2024 年 8 款最好的免费 OCR 软件

2024 年 8 款最佳 OCR 软件通过使用最好的 OCR 软件,您可以快速扫描文章、表格和其他文本,并将它们保存为 PDF 格式。OCR 代表光学字符识别,因此当您需要优化工作流程并通过将发票、报告和其他办公室文档转换为更易于存储和与同事共享的数字文…

AI新工具(20240119):Coach 微软推出独立 AI 工具辅助提高学习者阅读能力,Tweetify长文转换

Reading Coach-微软推出独立 AI 工具辅助提高学习者阅读能力 微软的Reading Coach是一款面向学生群体的生成式AI工具,旨在通过个性化和有吸引力的练习帮助学习者提高阅读能力。用户只需要登录微软账号,就能在课堂或者家中免费使用这款工具。Reading Coa…

Oracle命令大全

文章目录 1. SQL*Plus命令(用于连接与管理Oracle数据库)2. SQL数据定义语言(DDL)命令3. SQL数据操作语言(DML)命令4. PL/SQL程序块5. 系统用户管理6. 数据备份与恢复相关命令1. SQL*Plus命令(用…

JAVA SECS发送Report C#处理SECS Report SECS发送事件资料大全 S6F11 建立通讯S1F13

发送S6F11非常简单,只需5~6行代码,最核心是代码清晰易懂。 任何人都可以一看就能上手,如果说用代码可读性作为不可替代性的壁垒就无话可说了。 private void buttonS6F11_Click(object sender, EventArgs e) {int nTransaction 0;// 数据部…

扫一扫计数的工具有哪些?分享3款实用的!

在数字化时代,扫描计数软件已经成为我们日常生活和工作中不可或缺的工具。无论是需要快速统计物品数量、识别文字还是测量长度,这些软件都能提供方便快捷的解决方案。本文将为您介绍3款实用的扫描计数软件,帮助您轻松解决各种计数难题&#x…

ADVANTECH研华触摸屏 工业平板电脑维修TPC1551T/H

研华工控机触摸屏常见故障原因及处理: 一、空气中的可颗粒物多工厂内的原料大多需要粉料进行加工,加上外界空气流动大、沙尘多,工控机内容易集积大量粘糊状积尘,造成工控机内局部温度过高,带来硬件损坏。这种情况多发…