【机器学习300问】49、数据预处理时如何处理类别型特征?

news/2024/4/27 17:16:59/文章来源:https://blog.csdn.net/qq_39780701/article/details/136989309

        关于特征是什么?以及特征工程是什么意思?在先前我写的文章中已经为大家详细的介绍过了。本文想继续深入特征中的其中一种——类别型特征,来解答一个我自己遇到的困惑,同时记录成文章供大家一起学习。

【机器学习300问】14、什么是特征工程?icon-default.png?t=N7T8http://t.csdnimg.cn/q7lng

一、什么是类别型特征?

        特征是用于描述或刻画数据实例的属性、变量或指标。每一个特征代表了原始数据的一个特定维度上的信息,它们是模型进行学习和预测的基础。知道了特征的概念后,再来理解类别型特征就很轻松了。

(1)举个例子吧

        现在有一件衣服,我想让你描述一下具体这件衣服。你的衣服可能按颜色分为“红色”、“蓝色”、“绿色”,按款式分为“T恤”、“衬衫”、“毛衣”。在这里一件具体的衣服=数据实例;衣服的颜色=第一个特征;衣服的款式=第二个特征。

(2)类别型特征的定义

        类别型特征是指哪些在有限可能选项中取值的特征。这些有限可能选项通常是离散的,而且大多数情况下是字符串形式的,除了少数模型能够直接处理类别型特征,对于大多数模型来说都需要对类别型特征进行必要的处理,转换成数值型特征才能正常工作。

        但有些模型是可以直接处理类别型特征的,比如决策树、随机森林。

二、有哪些处理类别型特征的方式?

        在上面的类别特征定义的末尾谈到了类别特征的特点,它一般是非数字的,所以有必要对其进行转换,那么常见的处理类别型特征的方式有哪些呢:

(1)序号编码(Ordinal Encoding)

        序号编码通常处理类别特征之间存在明确的顺序关系(即等级或次序意义)时。比如学习成绩可以分为高中低三个档次,序号编码会按照大小关系对类别型特征赋予一个数值ID,在学习成绩这个特征中就可以按照高=3,中=2,低=1的规则来转换,转换后的编码保留了原有的大小关系。

教育程度序号编码
小学0
中学1
高中2
专科3
本科4
硕士5
博士6

 

(2)标签编码(Label Encoding)

        标签编码方式是说将每一个类别赋予一个唯一的整数标签,但并不表达类别之间的顺序关系。有点想强行硬对应起来,如果模型不关心类别之间的顺序,就可以使用这种方法。

车辆类型标签编码
轿车0
卡车1
巴士2
摩托车3
自行车4

(3)独热编码(One-hot Encoding)

        对于类别间不存在大小关系或顺序意义的特征,最常用的是独热编码。这种方法将每一个类别转化为一个二进制向量,向量中只有一个位置为1(类别存在时为1),其余均为0。独热中的“独”就是指只有一个,“热”就是指1。

        例如,性别(男、女)会被编码为二维向量特征:[1, 0] 表示男性,[0, 1] 表示女性。 

        例如,血型(A型、B型、AB型、O型)会被编码为四维向量特征:[1,0,0,0]表示A型,[0,1,0,0]表示B型,[0,0,1,0]表示AB型,[0,0,0,1]表示O型。

血型A型B型AB型O型
A型1000
B型0100
AB型0010
O型0001

        独热编码是一种有效的离散特征编码手段,但在实际应用中,使用独热编码时需要注意几个问题:

① 使用稀疏向量节省空间

        当类别很多时,独热编码会导致特征空间的维度急剧增加,尤其是对于那些低频的类别,可能会产生大量的零值。这时,可以利用稀疏矩阵存储这些特征向量,以节省存储空间和计算资源。

② 配合特征选择降低维度

        在高维数据环境下,由于维度灾难等问题,所有独热编码生成的特征不一定都对模型性能有帮助,反而可能导致过拟合。因此,需要结合特征选择的方法来剔除冗余或不相关的特征,减少维度,提高模型效率和泛化能力。

(4)二进制编码(Binary Encoding)

        二进制编码是介于独热编码和标签编码之间的方法,它将类别转换为二进制代码,从而减少新的变量维度。它主要分为两步:

  1. 用序号编码给每个类别赋予一个数值型类别ID
  2. 将类别ID对应的二进制编码作为编码结果
血型序号编码二进制编码
A型1001
B型2010
AB型3011
O型4100

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

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

相关文章

C++实现FFmpeg音视频实时拉流并播放

1.准备工作: 下载rtsp流媒体服务器rtsp-simple-server,安装go开发环境并编译 编译好后启动流媒体服务器 准备一个要推流的mp4视频文件,如db.mp4 使用ffmpeg开始推流 推流命令: ffmpeg -re -stream_loop -1 -i db.mp4 -c copy -rtsp_transport tcp -f rtsp rtsp://192.168.16…

前端学习之路-创建一个vue项目

每日吐槽:以工作为目的的学习就应该倒着推,任何一个岗位都可以先进去再学习,不管是培训班还是学校,知识点都有滞后性,虽然react被疯狂鼓吹但是Vue依然很抗打,学习的方法依然是百度老师的,以作记…

把本地文件上传到HDFS上操作步骤

因为条件有限,我这里以虚拟机centos为例 实验条件:我在虚拟机上创建了三台节点,部署了hadoop,把笔记本上的数据上传到hdfs中 数据打包上传到虚拟机节点上 采用的是rz命令,可以帮我们上传数据 没有的话可以使用命令安装…

开源流程图表库(02):Draw.io在线绘制各类图表,导出html使用

一、什么是Draw.io及其功能 Draw.io是一款免费的在线图表绘制工具,用于创建各种类型的图表和图形,如流程图、组织结构图、UML图、网络拓扑图、思维导图等。它提供了一个直观易用的界面,可以通过拖放和连接不同的图形元素来创建和编辑图表。 …

图神经网络实战(6)——使用PyTorch构建图神经网络

图神经网络实战(6)——使用PyTorch构建图神经网络 0. 前言1. 传统机器学习与人工智能2. 人工神经网络基础2.1 人工神经网络组成2.2 神经网络的训练 3. 图神经网络4. 使用香草神经网络执行节点分类4.1 数据集构建4.2 模型构建4.3 模型训练 5. 实现香草图神…

微服务篇-C 深入理解第一代微服务(SpringCloud)_V 深入理解Config分布式配置中心

原创作者:田超凡(程序员田宝宝) 版权所有,引用请注明原作者,严禁复制转载 Part 1 理论部分 1 什么是SpringCloud Config? 当一个系统中的配置文件发生改变的时候,我们需要重新启动该服务&am…

电脑访问网页获取路由器WAN口内网IP

因为运维过程中容易出现路由器配置了固定IP但是没人知道后台密码,不确定这个办公室的IP地址,且使用tracert路由追踪也只会出现路由器的LAN口网关并不会出现WAN口IP。 今日正好遇到了个好方法,经过测试可以正常使用。 方法如下: 内…

Jenkins用户角色权限管理

Jenkins作为一款强大的自动化构建与持续集成工具,用户角色权限管理是其功能体系中不可或缺的一环。有效的权限管理能确保项目的安全稳定,避免敏感信息泄露。 1、安装插件:Role-based Authorization Strategy 系统管理 > 插件管理 > 可…

大话设计模式之模板方法模式

模板方法模式(Template Method Pattern)是一种行为设计模式,它定义了一个算法的框架,将特定步骤的实现延迟到子类中。模板方法模式通过在父类中定义算法的骨架,而将具体步骤的实现留给子类来完成,从而使子类…

c++的学习之路:5、类和对象(1)

一、面向对象和面向过程 在说这个定义时,我就拿c语言举例,在c语言写程序的时候,基本上就是缺什么函数,就去手搓一个函数,写的程序也只是调用函数的,而c就是基于面向对象的开发,他关注的不再是单…

5、双亲委派机制

双亲委派机制指的是:当一个类加载器接收到加载类的任务时,会自底向上查找是否加载过, 再由顶向下进行加载。 详细流程: 每个类加载器都有一个父类加载器。父类加载器的关系如下,启动类加载器没有父类加载器&#xff1…

WPF使用外部字体,思源黑体,为例子

1.在工程中新建文件夹&#xff0c;命名为“Font"。 2.将下载好的字体文件复制到Font文件夹。 3.在工程中&#xff0c;加入静态资源 <Window.Resources><FontFamily x:Key"SYBold">/AnalyzeImage;Component/Font/#思源黑体 CN Bold</FontFamily…

【亲测】如何注册使用Midjourney

文章目录 1.Midjourney是什么2.Midjourney适合哪些人群3.如何订阅Midjourney3.1&#xff1a;注册登录步骤3.2&#xff1a;选择订阅方案3.3&#xff1a;用虚拟信用卡付费订阅 4.Midjourney基础使用教程 原文链接&#xff1a; Midjourney 如何订阅注册及使用基础教程 OnlyFans …

Python提示‘ModuleNotFoundError: No module named ‘numpy.core._multiarray_umath‘

一、问题背景 在学习Python编程使用matplotlib时&#xff0c;总是提示: ModuleNotFoundError: No module named numpy.core._multiarray_umath 问题大致描述如下&#xff1a; D:\WorkSpace\PythonWorkSpace\Python编程-从入门到实践\venv\Scripts\python.exe D:\WorkSpace\Pyt…

Linux 进程通信:匿名管道、实现进程池

目录 一、进程间通信 1、 为什么需要进程通信 2、发展和分类 二、管道 1、概念 2、特点 2、复制并共享 3、用fork来共享管道原理 4、站在文件描述符角度-深度理解管道 5、站在内核角度-管道本质 三、匿名管道 1、概念 2、创建 3、snprintf 4、父子进程中进行单…

Java Swing游戏开发学习19

内容来自RyiSnow视频讲解 这一节讲的是**Entity ArrayList(Render Order Revised)**实体数组列表&#xff08;渲染顺序修改&#xff09;。 前言 由于NPC和player的实体碰撞区域比他们本身的大小要小&#xff0c;所以会造成一个bug&#xff0c;当前的绘制顺序是&#xff0c;NP…

High 级别反射型 XSS 攻击演示(附链接)

环境准备 如何搭建 DVWA 靶场保姆级教程&#xff08;附链接&#xff09;https://eclecticism.blog.csdn.net/article/details/135834194?spm1001.2014.3001.5502 测试 打开靶场找到该漏洞页面 先右键检查输入框属性 还是和之前一样的&#xff0c;所以直接输入 HTML 标签提交…

StringRedisTemplate与RedisTemplate详解【序列化的方式不同】

spring 封装了 RedisTemplate 对象来进行对redis的各种操作&#xff0c;它支持所有的 redis 原生的 api。在RedisTemplate中提供了几个常用的接口方法的使用&#xff0c;分别是: private ValueOperations<K, V> valueOps; private HashOperations<K, V> hashOps; …

微服务(基础篇-006-Docker安装-CentOS7)

目录 05-初识Docker-Docker的安装_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1LQ4y127n4?p46&spm_id_frompageDriver&vd_source60a35a11f813c6dff0b76089e5e138cc 0.安装Docker 1.CentOS安装Docker 1.1.卸载&#xff08;可选&#xff09; 1.2.安装dock…

HCIP —— 生成树 (下)

目录 STP&#xff08;生成树&#xff09;的角色选举 根网桥 根端口 选举规则&#xff1a; 指定端口 生成树的端口状态 STP的接口状态&#xff1a;禁用、阻塞、侦听、学习、转发 五种状态 禁用状态 阻塞状态 侦听状态 学习状态 转发状态 当生成树拓扑结构发生变化 …