【数据清洗 | 数据规约】数据类别型数据 编码最佳实践,确定不来看看?

在这里插入图片描述

🤵‍♂️ 个人主页: @AI_magician
📡主页地址: 作者简介:CSDN内容合伙人,全栈领域优质创作者。
👨‍💻景愿:旨在于能和更多的热爱计算机的伙伴一起成长!!🐱‍🏍
🙋‍♂️声明:本人目前大学就读于大二,研究兴趣方向人工智能&硬件(虽然硬件还没开始玩,但一直很感兴趣!希望大佬带带)

在这里插入图片描述

该文章收录专栏
[✨— 《深入解析机器学习:从原理到应用的全面指南》 —✨]

数据归约
特征编码(哑变量 & 独热编码 & 标签编码)

我们首先将类别型数据分为两个类

  1. 定类型变量
    定类类型就是离散数据,不排序,没有逻辑关系.
    当某特征具有k个属性值,那么:
    a. 哑变量(Dummy variable,也称为虚拟变量或指示变量)—— 具有k-1个二进制特征,基准类别将被忽略, 若基准类别选择不合理,仍存在共线性(高度相关线性),建议众数的类别为基准类别
    b. 独热编码——具有k个特征二进制特征。
  2. 定序型变量
    标签编码——用自定义的数字对原始特征进行打标签,适用于有序的分类变量。

编码的意义

不用对变量归一化,加速参数的更新速度;使得一个很大权值管理一个特征,拆分成了许多小的权值管理这个特征多个表示,降低了特征值扰动对模型的影响,模型具有更好的鲁棒性,将数据转换成可训练的格式

编码优缺点

  1. 定类变量
    异常数据具有很强的鲁棒性;离散化之后可以进行特征交叉,引入非线性,提高模型表达能力。
    一个特征被分割多份,损失部分统计信息,学习效果差。
    a. 哑变量:从k-1个变量推论第k个类别,不太直观,但不冗余;
    b. 独热编码:从k个变量看出所有变量类别,比较直观,但特征冗余;独热特征高度相关,易导致共线;

  2. 定序变量

标签编码:可以自定义量化数字,但数值本身没有含义,仅用作排序;可解释性比较差,比如[‘大学’,‘高中’,‘初中’,‘小学’] —>[1,2,3,4],’大学‘和’小学相隔的距离更远。‘

用法

  1. 定类变量
    对数值大小较敏感的模型,如LR SVM

    截距(intercept)是线性模型中的一个参数,它表示当所有自变量(或哑变量)都为零时,因变量的预期平均值。在线性回归模型中,截距是一个常数,它对应于自变量取值为零时的因变量取值。

    a. 对于哑变量编码,截距表示的是基准类别(通常是编码中的第一个类别)的取值,而哑变量的回归系数表示其他类别与基准类别之间的平均差异。

    b. 在线性模型中,如果有截距项,使用哑变量编码可以处理多余的自由度,因为多余的自由度可以被统摄到截距项中。这意味着,当使用哑变量编码时,只需要使用n-1个哑变量来表示n个类别,其中n是类别的数量。剩下的一个类别可以被认为是基准类别,截距项对应于基准类别的取值。

    c. 如果线性模型有截距项,并且使用正则化技术(如L1或L2正则化),那么使用独热编码可能更合适。正则化会约束系数的大小,使得各个变量的重要性相对均等。这意味着,即使使用了独热编码,每个类别都有一个独立的变量,正则化也可以帮助控制这些变量的影响,使它们不会对模型造成过大的影响。

    d. 如果线性模型没有截距项,而且使用独热编码,那么每个类别都将有一个独立的变量。这种情况下,模型将完全依赖于这些变量的取值来预测因变量,而没有一个基准类别。这种编码方式通常用于特定需求的模型,例如需要明确控制每个类别的影响。

    总之,截距项在线性模型中是一个重要的参数,它 对应于自变量取值为零时的因变量取值。具体使用哪种编码方式(哑变量编码或独热编码)取决于模型的需求以及是否使用正则化等技术。

  2. 定序型变量
    既分类又排序,自定义的数字顺序可以不破坏原有逻辑,并与这个逻辑相对应。对数值大小不敏感的模型(如树模型)不建议使用one-hotencoding

选择建议

算法上:最好是选择正则化 + one-hot,哑变量编码也可以使用,不过最好选择前者。

对于树模型,不推荐使用定类编码,因为样本切分不均衡时,增益效果甚微(如较小的那个拆分样本集,它占总样本的比例太小。无论增益多大,乘以该比例之后几乎可以忽略);

实现上:

哑变量在pandas的get_dummy方法,one-hot在from sklearn.preprocessing import OneHotEncoder

pandas机制问题需要在内存中把数据集都读入进来,要是数据量大的话,太消耗资源,one-hot可以读数组,因此大规模数据集很方便。

模板代码

from sklearn.preprocessing import OneHotEncoder
import pandas as pd
df = pd.DataFrame([  
            ['green' , 'A'],   
            ['red'   , 'B'],   
            ['blue'  , 'A']])  
df.columns = ['color',  'class'] 
#one-hot编码
onehot=OneHotEncoder(sparse=False)
data=onehot.fit_transform(df[['color']])
print("one-hot编码结果如下:")
print(data)
#哑变量编码
#pd.get_dummies()方法即可以用于产生One-Hot编码,也可以用于产生哑变量编码
#当drop_first=True时为哑变量编码,当为False时为One-Hot编码
#哑变量编码是将One-Hot编码的第一列结果去掉即可。
data=pd.get_dummies(df['color'],drop_first=True)
print("哑变量编码结果如下:")
print(data)

参考文章:

https://blog.51cto.com/u_16099322/8207171

https://www.cnblogs.com/HuZihu/p/9692554.html

https://blog.csdn.net/yeshang_lady/article/details/103940513

在这里插入图片描述

						  🤞到这里,如果还有什么疑问🤞
					🎩欢迎私信博主问题哦,博主会尽自己能力为你解答疑惑的!🎩
					 	 🥳如果对你有帮助,你的赞是对博主最大的支持!!🥳

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

回文链表,剑指offer 27,力扣 61

目录 题目: 我们直接看题解吧: 解题方法: 难度分析: 审题目事例提示: 解题分析: 解题思路(数组列表双指针): 代码说明补充: 代码实现: 代码实现&a…

Pix2Pix 使用指南:一副图像到另一副图像的转换

Pix2Pix Pix2Pix 介绍:使用条件 GAN 进行图像到图像的转换Pix2Pix 原理Pix2Pix 模型结构生成器:Unet结构判别器:PatchGAN目标函数目标函数总结 Pix2Pix 项目使用 Pix2Pix 介绍:使用条件 GAN 进行图像到图像的转换 Pix2Pix 论文&a…

第十八章,Swing窗体

概述 String包的层次结构和继承关系如下 常用的Swing组件如下表 Swing常用窗体 JFrame 窗体 JFrame 类的常用构造方法包括以下两种形式: public JFrame():创建一个初始不可见、没有标题的窗体。 public JFrame(String title)&a…

网络基础『发展 ‖ 协议 ‖ 传输 ‖ 地址』

🔭个人主页: 北 海 🛜所属专栏: 神奇的网络世界 💻操作环境: CentOS 7.6 阿里云远程服务器 文章目录 🌤️前言🌦️正文1.网络发展1.1.背景1.2.类型 2.网络协议2.1.什么是协议2.2.协议…

Bilateral Guided Upsampling

Abstract 我们提出了一种加速一大类图像处理算子的算法。给定低分辨率参考输入和输出对,我们通过拟合将输入映射到输出的局部曲线来对算子进行建模。然后,我们可以通过在全分辨率输入上评估这些低分辨率曲线来生成全分辨率输出。我们证明,这…

经典策略梯度算法

经典策略梯度算法 DDPG算法 DDPG 算法被提出的初衷其实是 DQN 算法的一个连续动作空间版本扩展。深度确定性策略梯度算法( deep deterministic policy gradient,DDPG),是一种确定性的策略梯度算法。 由于DQN算法中动作是通过贪…

DCDC前馈电容与RC串并联电路

一、RC串并联电路特性分析 1、RC串联电路 RC 串联的转折频率: f01/(2πR1C1),当输入信号频率大于 f0 时,整个 RC 串联电路总的阻抗基本不变了,其大小等于 R1。 2、RC并联电路 RC 并联电路的转折频率&…

学习笔记三十六:通过Ingress-nginx实现灰度发布

通过Ingress-nginx实现灰度发布 灰度发布原理将新版本灰度给部分用户切一定比例的流量给新版本 部署两个版本的服务以 nginx 为例,先部署一个 v1 版本:部署一个 v2 版本再创建一个 Ingress,对外暴露服务,指向 v1 版本的服务:访问验证 基于 He…

csdn最新最全面的Jmeter接口测试:jmeter_逻辑控制器_循环控制器

循环控制器 循环次数:设置该控制器下的请求的循环执行次数 永远:勾选上的话,会一直循环,即所谓死循环 注意:如果线程组本身已经设置了循环次数的话,那循环控制元件控制的子节点 的循环次数为线程组设置的…

高级IO select 多路转接实现思路

文章目录 select 函数fd_set 类型timeval 结构体select 函数的基本使用流程文件描述符就绪条件以select函数为中心实现多路转接的思路select 缺陷 select 函数 int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout); selec…

科普:什么是合同生命周期管理?

在当前,企业面临自身转型升级与行业数字建设的挑战,急需一种系统化的解决方案,帮助企业在自身运作方面实现降本增效,为拓展业务获得发展提供助力,而合同生命周期管理在其中就扮演着十分重要的角色。 一、合同生命周期…

解读《陆奇最新演讲实录—我的大模型世界观》

腾讯科技频道记者张小珺一篇《陆奇最新演讲实录—我的大模型世界观》刷爆朋友圈。文章知识点丰富、字里行间处处流淌着创业方法论和AI应用商机,含金量极高! PS:一家之言、不求苟同。如有不爽之处,欢迎来 找我。 腾讯新闻原文&am…

宝塔mongodb启动失败

宝塔mongodb启动失败 尝试以下步骤: 命令行启动看报错信息 /etc/init.d/mongodb start出现 error:14,查看 mongodb.log 提示 MongoDB –无法解除套接字文件 /tmp/mongodb-27017 的链接 查看 /tmp/mongodb-27017.sock,发现拥有…

STM32CubeIDE(CUBE-MX)----快速移植FreeRTOS实战

文章目录 前言一、Freertos可视化配置二、生成代码三、实验现象总结 前言 FreeRTOS(Real-Time Operating System)是一个开源的实时操作系统内核,专注于嵌入式系统。它提供了一套用于管理任务、调度器、内存管理等的实时操作系统功能&#xf…

注解方式优雅的实现Redisson分布式锁

1.前言 随着微服务的快速推进,分布式架构也得到蓬勃的发展,那么如何保证多进程之间的并发则成为需要考虑的问题。因为服务是分布式部署模式,本地锁Reentrantlock和Synchnorized就无法使用了,当然很多同学脱口而出的基于Redis的se…

[iOS学习笔记]浅谈RunLoop底层

RunLoop是什么? RunLoop是iOS开发中比较重要的知识点,它贯穿程序运行的整个过程。它是线程基础架构的一部分,是一种保障线程循环处理事件而不会退出的机制。同时也负责管理线程需要处理的事件,让线程有事儿时忙碌,没事…

网络基础_1

目录 网络基础 协议 协议分层 OSI七层模型 网络传输的基本流程 数据包的封装和分用 IP地址和MAC地址 网络基础 网络就是不同的计算机之间可以进行通信,前面我们学了同一台计算机之间通信,其中有进程间通信,前面学过的有管道&#xff…

Mendix UI页面布局以案说法

一、前言 试着回想最近一次与公司网站交互的情况,访问了多个页面,并且可能使用了某些功能。有可能基于这种互动,可以向某人介绍公司的一些主要功能。其中一些可能是更肤浅的东西,比如他们的标志是什么样子或他们的主要配色方案是…

第20 章 多线程

20.1线程简介. 20.2创建线程 2.1继承Thread类 Thread 类是java.lang包中的一个类,从这个类中实例化的对象代表线程,程序员启动一个新线程需要建立Thread 实例。Thread类中常用的两个构造方法如下: public Thread():创建一个新的线程对象。 public Threa…

[跑代码]BK-SDM: A Lightweight, Fast, and Cheap Version of Stable Diffusion

Installation(下载代码-装环境) conda create -n bk-sdm python3.8 conda activate bk-sdm git clone https://github.com/Nota-NetsPresso/BK-SDM.git cd BK-SDM pip install -r requirements.txt Note on the torch versions weve used torch 1.13.1 for MS-COCO evaluation…