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

在这里插入图片描述

🤵‍♂️ 个人主页: @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

在这里插入图片描述

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

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

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

相关文章

030 - STM32学习笔记 - ADC(四) 独立模式多通道DMA采集

030 - STM32学习笔记 - ADC(四) 独立模式多通道DMA采集 中断模式和DMA模式进行单通道模拟量采集,这节继续学习独立模式多通道DMA采集,使用到的引脚有之前使用的PC3(电位器),PA4(光敏…

Linux下删除当前目录下的所有目录

Linux下删除当前目录下的所有目录 Linux下删除当前目录下的所有目录,可以使用命令:rm -rf ./* rm -rf ./*可以得知rm -rf ./命令是删除当前目录下的所有文件和文件夹,但不会删除根目录下的文件。其中,".“代表当前目录&…

Python中的sys模块详解

1. 简介 sys模块是Python标准库中的一个内置模块,提供了与Python解释器和运行环境相关的功能。它包含了一些与系统操作和交互相关的函数和变量,可以用于获取命令行参数、控制程序的执行、管理模块和包、处理异常等。 2. 常用函数和变量 2.1 命令行参数…

动手学深度学习(六)---权重衰退

文章目录 一、理论知识二、代码实现【相关总结】 主要解决过拟合 一、理论知识 1、使用均方范数作为硬性限制(不常用) 通过限制参数值的选择范围来控制模型容量 通常不限制偏移b 小的意味着更强的正则项 使用均方范数作为柔性限制 对于每个都可以找到使…

「Bomkus 博士的试炼」排行榜规则更新

亲爱的玩家们 为了回应我们从社区收到的宝贵反馈,我们希望与大家分享我们为防止在「Bomkus 博士的试炼」排行榜中作弊而采取的措施的最新进展,并就这一主题提供更多说明。 除了在活动开始前采取的反作弊措施外,我们还根据观察到的和报告的行为…

程序员也需要养生——程序员睡不好,重视一下你的情绪吧

程序员也需要养生——程序员睡不好,重视一下你的情绪吧 睡眠是一个复杂的系统工程,可以促进生长发育,修复受损的组织。促进大脑细胞的修复等等。在情绪的失调会影响到我们的睡眠状况。 一、心情差,压力大,睡不好跟这…

基于SpringBoot的在线视频教育平台的设计与实现

摘 要 随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于在线视频教育平台当然也不能排除在外,随着网络技术的不断成熟,带动了在线视频教育平台,它彻底改变了过…

Pycharm新手开发指南

文章目录 前言一、常用功能介绍二、常用高效pycharm使用方法关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Python工具包②Python实战案例③Python小游戏源码五、面试资料六、Python兼职渠道 前言…

Django二转Day03 04

0 cbv执行流程,self问题 path(index/, Myview.as_view()),Myview.as_view() 实例化后返回 变成return Myview.dispatch(request, *args, **kwargs)但是视图函数Myview中没有 dispatch 方法 所以去 父类View中寻找return View.dispatch(request, *args, **kwargs)调用…

XXL-Job详解(二):安装部署

目录 前言环境下载项目调度中心部署执行器部署 前言 看该文章之前,最好看一下之前的文章,比较方便我们理解 XXL-Job详解(一):组件架构 环境 Maven3 Jdk1.8 Mysql5.7 下载项目 源码仓库地址链接: https://github.…

MedicalTransformer论文解读

论文是一个分割任务,但这里的方法不局限于分割,运用到检测、分类都可以。 论文下载 https://www.yuque.com/yuqueyonghupjh9oc/ovceh4/onilw42ux6e9n1ne?singleDoc# 《轴注意力机制》 一个问题 为什么transformer一开始都有CNN:降低H、W…

OFDM通信连路仿真学习

文章目录 前言一、前置知识1、块状导频与梳状导频①、相似点②、区别③、其他 2、其他知识 二、仿真任务及方案1、仿真任务2、仿真方案 三、MATLAB仿真1、MATLAB 源码2、程序流程3、仿真结果①、打印信息③、8PSK 星座图②、脉冲成型图③、ETU300登加AWGN信道下误比特率曲线 四…