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

news2024/11/16 15:41:42

在这里插入图片描述

🤵‍♂️ 个人主页: @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.coloradmin.cn/o/1272692.html

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

相关文章

1-3、DOSBox环境搭建

语雀原文链接 文章目录 1、安装DOSBox2、Debug进入Debugrdeautq 1、安装DOSBox 官网下载下载地址:https://www.dosbox.com/download.php?main1此处直接下载这个附件(内部有8086的DEBUG.EXE环境)8086汇编工作环境.rar执行安装DOSBox0.74-wi…

2021年8月18日 Go生态洞察:整合Go的网络体验

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

带大家做一个,易上手的家常炒鸡蛋

想做这道菜 先准备五个鸡蛋 然后将鸡蛋打到碗里面 然后 加小半勺盐 这个看个人喜好 放多少都没问题 不要太咸就好 将鸡蛋搅拌均匀 起锅烧油 油温热了之后 放三个干辣椒进去炒 干辣椒烧黑后 捞出来 味道就留在油里了 然后 倒入鸡蛋液 翻炒 注意翻炒 不要粘锅底 或者 一面糊…

Oracle SQL优化

1、书写顺序和执行顺序 在Oracle SQL中,查询的书写顺序和执行顺序是不同的。 1.1SQL书写顺序如下: SELECTFROMWHEREGROUP BYHAVINGORDER BY 1.2 SQL执行顺序 FROM:数据源被确定,表连接操作也在此步骤完成。 WHERE:对…

防爆执法记录仪、防爆智能安全帽助力海上钻井平台远程可视化监管平台建设

推动远程安全管理,海上钻井"视"界拓新—防爆执法记录仪与防爆智能安全帽的创新应用 在海上钻井作业领域,安全生产一直是萦绕在每一个业者心头的重大课题。由于环境的恶劣及作业的特殊性,一旦发生安全事故,其后果往往极…

【MySQL】视图:简化查询

文章目录 create view … as创建视图更改或删除视图drop view 删除视图replace关键字:更改视图 可更新视图with check option子句:防止行被删除视图的其他优点简化查询减小数据库设计改动的影响使用视图限制基础表访问 create view … as创建视图 把常用…

Scrapy框架中间件(一篇文章齐全)

1、Scrapy框架初识(点击前往查阅) 2、Scrapy框架持久化存储(点击前往查阅) 3、Scrapy框架内置管道(点击前往查阅) 4、Scrapy框架中间件 Scrapy 是一个开源的、基于Python的爬虫框架,它提供了…

分支和循环

通常来说,C语言是结构化的程序设计语言,这里的结构包括顺序结构、选择结构、循环结构,C语言能够实现这三种结构,如果我们仔细分析,我们日常生活中所见的事情都可以拆分为这三种结构或者它们的组合。 下面我会仔细讲解我…

4.7-容器网络之host和none

这一节我们来看一下docker中的另外两种网络,host和none。 docker network inspect none 于是就看到Containers, 里面包含了一个test1 表示这个容器连接到了none。

【【FPGA的 MicroBlaze 的 介绍与使用 】】

FPGA的 MicroBlaze 的 介绍与使用 可编程片上系统(SOPC)的设计 在进行系统设计时,倘若系统非常复杂,采用传统 FPGA 单独用 Verilog/VHDL 语言进行开发的方式,工作量无疑是巨大的,这时调用 MicroBlaze 软核…

tornado模版注入 [护网杯 2018]easy_tornado 1

打开题目 打开flag.txt 告诉我们flag在 /fllllllllllllag下 打开welcome.txt 我们看到了render渲染函数,联想到ssti 打开hints.txt 然后我们留意到每个打开url上面都有filehash 告诉我们如果想要访问/fllllllllllllag下的flag文件,是需要filehash这个GE…

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

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

Selenium——isDisplayed()、isEnabled()、isSelected()

判断页面是否存在某元素 Selenium没有直接提供判断是否存在的方法,可以使用findElements返回的数量判断;或者判断findElement是否抛出异常 webDriver.findElements(By.xpath("(//div[classel-button-group]//button)[1]")).size()isDisplaye…

2023.11.28 使用tensorflow进行“三好“权重分析

2023.11.28 使用tensorflow进行"三好"权重分析 这是最基础的一个神经网络问题。许久没有再使用,用来做恢复训练比较好。 x1w1 x2w2 x3*w3 y,已知x1,x2,x3和y,求w1,w2,w3 这是一个三元一次方程,正常需要三组数据就能…

使用 kubeadm 部署 Kubernetes 集群(一)linux环境准备

一、 初始化集群环境 准备三台 rocky8.8 操作系统的 linux 机器。每台机器配置:4VCPU/4G 内存/60G 硬盘 环境说明: IP 主机名 角色 内存 cpu 192.168.1.63 xuegod63 master 4G 4vCPU 192.168.1.64 xuegod64 worker 4G 4vCPU 192.168.1.62 xuegod62 work…

phpoffice在tp框架中如何实现导入导出功能

安装 phpoffice/phpspreadsheet 库 composer require phpoffice/phpspreadsheet 导入功能 创建一个用于上传文件的视图&#xff0c;可以使用元素来实现文件上传。 <!-- application/view/your/import.html --><form action"{:url(your/import)}" method&q…

提升团队协同效率:2023年值得尝试的6大团队任务管理软件

更好地协作、提高工作效率、追踪任务进度并确保任务按时完成。在市面上有很多团队任务管理工具可供选择&#xff0c;本文将为您推荐6款高效实用的团队任务管理工具。 1、飞项 飞项是一款集任务管理、项目协作、团队沟通于一体的协同办公软件。它提供了任务清单、日程安排、文…

Linux命令--根据端口号查看进程号(PID)

Linux命令–根据端口号查看进程号&#xff08;PID&#xff09; 查找8080端口对应的进程号: netstat -nlp|grep :8297对应的进程号1061,如果想杀掉此进程&#xff0c;可以用一下命令&#xff1a; kill -9 1061

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

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

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

&#x1f52d;个人主页&#xff1a; 北 海 &#x1f6dc;所属专栏&#xff1a; 神奇的网络世界 &#x1f4bb;操作环境&#xff1a; CentOS 7.6 阿里云远程服务器 文章目录 &#x1f324;️前言&#x1f326;️正文1.网络发展1.1.背景1.2.类型 2.网络协议2.1.什么是协议2.2.协议…