类别型数据的预处理方法

article/2025/8/14 9:24:34

在机器学习过程中,我们往往需要对数据进行预处理。根据数据的取值情况,我们可以把数据总体分为两大类:类别型数据和数值型数据。

对于数值性变量,通常不需要对其进行编码处理。而如何处理类别型数据是一个难题。处理的方法有很多种,各有优缺并且各有适用的范围。

本文在收集相关资料后,试图对目前较为常见的处理方式做一个归纳总结。

 

1. 为什么需要编码

机器学习相关算法对各数据进行衡量时,依赖的大多是其数值关系,如决策树ID3算法依赖于香农熵的计算,线性回归模型依赖于欧式距离的计算。

数值型变量自然是可以直接被算法处理,而算法往往无法直接对分类型变量进行处理,因此在把数据应用于算法训练前,需要对其进行调整,把分类型变量转换成为数值。

 

2. 主要编码方式

2.1 Replace 直接替换

有些时候,在我们要进行特征处理的变量中,并不是所有的取值都需要进行特征处理,只需要对其中部分不符合要求的取值进行替换。

举例如下:

假设 test_df 包含的是8名同学在某次测验中的数学成绩,成绩记录的标准为:

  • 成绩低于60分,记为F

  • 成绩在[60, 70)之间,记为C

  • 成绩在[70, 80)之间,记为B

  • 成绩在[80, 100]之间,记为A

在记录的过程中,由于疏忽,一名同学的成绩被错记为其真实的数值成绩。

所以,在本数据集中需要对其进行特征编码,将该数值根据成绩记录的标准进行替换,以使得最终 math 变量的取值标准统一。

在本案例中,则需要将 93 替换为 A。可以考虑直接使用 Replace() 方法进行处理。

代码如下:

test_dict = {'id': [1, 2, 3, 4, 5, 6, 7, 8],  # 构建测试数据``       'math':['F', 'B', 'B', 'F', 93, 'A', 'C', 'C']}
test_df = pd.DataFrame(test_dict)
# 将math一列中的93替换成A
test_df.replace({'math': {93: 'A'}}, inplace=True)
test_df

显示结果如下:

2.2 map() 替换

除了使用 replace() 方法,也可以应用内置的 map() 方法进行直接替换处理。

map() 可以对 Dataframe 中某列内的元素进行操作,在此情景下的作用是:根据映射关系,为指定列匹配结果并进行替换。其处理原理与使用 replace() 进行直接替换的方式一致,需要自行指定各类别取值应该如何转换为数值。

但其特别之处在于,map() 方法作用于整列变量的元素,因此需要对该列变量中所有可能出现的取值指定映射关系,否则没有指定映射关系的取值将会被转换成NaN。因此,不适用于取值类别特别多的时候。

例一:没有指定全部映射关系,出现 NaN

借用讲述 replace() 部分的案例,我们要做的工作是将93转换成为A。

如果使用 map() 方法,并只对93进行转换,而没有对所有取值指定映射关系。上例案例可以修改为:

test_df['math'] = test_df['math'].map({93: 'A'})
test_df

处理后的数据对比:

可以看出,这里的 map() 只对93进行了转换,而 math 变量中其余取值都变成了 NaN。

例二:将 art 变量的取值全部进行映射处理

假设art变量共5个取值:[a1, a2, a3, b1, b2]。现在需要将[a1, a2, a3]转换为a,[b1, b2]转换为b。

代码如下:

import pandas as pd​
test_df2 = pd.DataFrame({'id': [1, 2, 3, 4, 5],'art': ['a1', 'a2', 'b1', 'a3', 'b2']})
# 对art变量的取值一一构建映射关系,并进行替换
test_df2['art'] = test_df2['art'].map({'a1': 'a', 'a2': 'a', 'a3': 'a','b1': 'b', 'b2': 'b'})
test_df2

显示结果如下:

2.3 LabelEncoding 标签编码

直接替换方法适用于原始数据集中只存在少量数据需要人工进行调整的情况。如果需要调整的数据量非常大且数据格式不统一,直接替换的方法也可以实现我们的目的,但是这种方法需要的工作量会非常大。因此, 我们需要能够快速对整列变量的所有取值进行编码的方法。


http://chatgpt.dhexx.cn/article/inwyRDnm.shtml

相关文章

大数据预处理方法,来看看你知道几个

大数据蕴含巨大价值,引起了社会各界的高度关注。大数据的来源多种多样,从现实世界中采集的数据大体上都是不完整、不一致的脏数据,无法直接进行数据挖掘和分析,或分析挖掘的结果差强人意。为了提高数据分析挖掘的质量,…

机器学习中数据预处理的几种方法

由于实际收集到的机器学习数据集不可避免的会存在数据缺、数据集不平衡和数据集中各类数据非同一量级等情况,对缺失数据进行补全和对异常数据进行清洗、均衡化处理防止类别不平衡和数据标准化处理对于机器学习模型至关重要。 1 数据补全方法 有效地恢复缺失的数据是…

常见近红外/红外光谱数据预处理方法及MATLAB实现

在近红外等光谱数据分析建模过程中,最关键的一步除了特征选择之外就是光谱数据预处理,预处理的原因是光谱数据除了纯光谱(pure spectra)之外还包含基线漂移、噪声等信号,与此同时存在着因样本大小以及环境等因素带来的…

数据预处理常用方法总结

目录 一、数据清理1 处理缺失值2 噪声数据 二、数据集成1 实体识别2 冗余和相关分析3 数值冲突的检测与处理 三、数据变换1 数据规范化2 数据离散化3 概念分层 数据预处理包括多种方法,诸如数据清理、数据集成、数据变换等。 一、数据清理 数据清理主要是处理缺失…

数据预处理的方法有哪些

数据处理的工作时间占整个数据分析项目的70%以上,因此,数据的质量直接决定了分析模型的准确性。那么,数据预处理的方法是什么呢?例如数据清理、数据集成、数据规范、数据转换等,其中最常用的是数据清理和数据集成&…

数据预处理(方法总结)

数据预处理(方法总结) 转自-https://www.cnblogs.com/sherial/archive/2018/03/07/8522405.html 一、概述 在工程实践中,我们得到的数据会存在有缺失值、重复值等,在使用之前需要进行数据预处理。数据预处理没有标准的流程&…

机器学习算法笔记之6:数据预处理

一、概述 在工程实践中,我们得到的数据会存在有缺失值、重复值等,在使用之前需要进行数据预处理。数据预处理没有标准的流程,通常针对不同的任务和数据集属性的不同而不同。数据预处理的常用流程为:去除唯一属性、处理缺失值、属…

Python的数据分析可视化十种技能总结

常见的可视化试图列举 可视化视图可以分成4大类:比较、联系、构成和分布。他们的特点如下: 1、比较:比较数据之间的各类别的关系,或者是他们随着时间的变化趋势,比如折线图;2、联系:查看两个或…

python 典型变量分析

典型相关分析 1.典型相关分析的基本思想是首先在每组变量中找出变量的线性组合,使其具有最大相关性,然后再在每组变量中找出第二对线性组合,使其分别与第一对线性组合不相关,而第二对本身具有最大的相关性,如此继续下…

脑影像分析|数据分析——单个变量或多个变量与y的皮尔逊相关,同时返回r与p值(python)

| 图源 皮尔逊相关是计算两个变量之间线性相关关系,或者两个向量共线程度的常用指标,应返回衡量相关程度的r值,和相关显著程度的p值。我们熟知的工具包,如pandas,numpy和scipy等,只能计算单个变量x与变量y之…

SPSS处理多自变量多因变量分析以及描述平均值,在不同情况

SPSS处理工具:SPSS25.0 准备好数据 1.分析多自变量对某一个因变量的显著性 在分析里找到,General linear model,然后选择Univariate, 分别把两个自变量TIssue and Speed 输入到Fixed Factor,然后设置Option里的描述,如果需要其他的设置可以…

R语言实现双变量分析教程

双变量分析表示分析两个变量。 双变量分析是为了分析两个变量之间的关系,与单变量、多变量分析对应。主要有三种方式进行双变量分析。 散点图相关系数简单线性回归 下面使用测试数据作为示例来演示三种方法,供包括两个变量,HourStudied表示…

spss实战案例----分析多个变量与因变量之间是否存在关系,方差分析

本案例是IBM SPSS数据分析与挖掘实战案例精粹----第七章的学习记录 案例背景或目标:激素水平是否在对照组和实验组之间存在差异 分析方法:Bootstrap抽样,秩和检验,秩变换方法,cox回归 字段包括:性别&…

Python学习16 ----Seaborn多变量分析绘图

Seaborn多变量分析绘图 代码详见https://github.com/RenDong3/Python_Note 1 读取数据 2 分析绘图 parameters: x,y,hue 数据集变量 变量名data 数据集 数据集名row,col 更多分类变量进行平铺显示 变量名col_warp 每行的最高平铺数 整数estimator 在每个分类中进行矢量到标…

用SPSS进行多变量数据分析

用SPSS进行多变量数据分析 1.将所给的数据输入SPSS 22.0中文版。分别设置变量为温度,体重1、2、3、4;体重,温度5、10、15、20、30。 2.用SPSS进行作图(过程略)。 3.对数据进行多因素变量分析,具体操作如…

解读SPSS多元方差分析中的多因素多变量的相互影响

多元方差分析研究的是多个自变量与多个因变量的相互关系,也被称为多变量分析。在《怎么使用SPSS的多元方差分析法》一文中,我们已经详细学习了IBM SPSS Statistics多元方差分析的设置方法。 本文将会重点介绍如何解读多元方差分析的检验结果。由于多元方…

高维数据中特征筛选方法的思考总结——多变量分析筛选法

前言:之前的文章(高维数据中特征筛选方法的思考总结——单变量分析筛选法)中,对单变量分析筛选变量进行了初步考量,本文将进一步总结多变量分析筛选法。由于本文多处摘录网上的博客,只是进行了归纳整理&…

R语言实现单变量分析教程

单变量分析是理解单个变量的数值分布情况,与之相对的有双变量分析和多变量分析。 加载示例数据 因为csv文件中年收入字段有千分位分隔符,所以先定义转换函数。 setClass("num.with.commas") setAs("character", "num.with.co…

多变量分析绘图及分类属性绘图【知识整理】

多变量分析绘图及分类属性绘图 综述代码模块多指标离散图绘制盒图violin图条形图点图多层面板分类图factorplot()详细说明 小结 综述 学生党整理一些关于数据分析的知识:整理了多变量分析绘图及分类属性绘图的相关代码。主要包括了多指标离散图的绘制、盒图的绘制、…

python多变量相关性分析_多变量相关性分析(一个因变量与多个自变量)

目录:前言 偏相关或复相关 意义与用途 分析方法: 1、 样本相关系数矩阵、相关系数检验 2、 复相关分析 3、 决定系数 (RMSE的介绍) 小结 一、前言: 继上一篇文章,继续探讨相关性分析,这次不再是两个变量,而是3个或者以上的变量之间的相关关系分析。 没读过上…