当前位置: 首页 > news >正文

数据科学 - 数据预处理 (数据清洗,结构化数据)

1. 前言

数据清洗与结构化数据在数据分析和机器学习项目中扮演着至关重要的角色。随着大数据时代的到来,数据的质量、准确性和可用性成为决定项目成功与否的关键因素。

数据清洗提高数据质量,保证数据集的一致性;促进数据分析与挖掘,进一步提高模型质量与准确性,减少错误决策的风险。 

2. 数据集的删补

2.1 数据集的删除操作

train_Data.drop('CapitalLoss',axis=1,inplace=True) #对于某一列进行操作

2.2 数据集的修改操作 

train[0] #获取数据的第0列
train.iloc[0,1] #获取数据的第0行第1列

在DataFrame中默认索引是列,所以如列表一般[]是列索隐

想要获取数据库中某一特定数据使用loc或者iloc(行列索引),[行,列]

train_Data.iloc[0,1] = 3 #针对特定数据进行修改

与赋值一样,获取特定数据后可以直接赋新值进行替代。

 

train_Data[0].replace(2,3,inplace=True) #将第0行中为2的数据替换为3
train_Data.replace(' ?',pd.NaT,inplace=True) #数据集中为字符?替换为缺失值

也可以使用replace函数进行针对性替代。

 

2.3  数据集的增添操作

train_Data[6] = 7 #新增一列,这列数据为7

直接在原数据集中进行添加。 

df1 = pd.DataFrame({'A':[1,2],'B':[2,3]})
df2 = pd.DataFrame({'A':[3,4],'B':[4,5]})
df3 = pd.concat([df1,df2],axis=0,ignore_index=True) #行对齐
df4 = pd.concat([df1,df2],axis=1) #列对齐

concat函数可以将多个表格进行拼接。

3. 规范化标签

3.1 标签编码

最简单粗暴的方法,通过对每一列标签进行判断,逐个对标签进行数值化

Data['sex'][Data['sex'] == 'Male'] = 1
from sklearn.preprocessing import LabelEncoder
le = LabelEncoder() #初始化
le.fit_transform(train_Data) #对这一列数据进行标签数值化

 对于调用的LabelEncoder模型我们需要将其初始化之后再使用。

for column in train_Data.columns: #遍历数据集的每一列if train_Data[column].dtype = 'object':train_Data[column] = le.fit_transform(train_Data[column])

通过循环的方式,将每一列标签中数值类型为object的标签进行数值化:

上述代码展示了将标签进行规范化,LabelEncoder将标签转化为从0-n的数值标签,互不重复。 

 但标签编码也有其局限性:

标签编码将分类数据转换为数字数据,但它为每个数据类别分配一个唯一的数字(从0开始)。这可能导致在数据集的模型训练期间产生优先级问题。具有高值的标签可以被认为具有比具有较低值的标签高的优先级。

3.2 独热编码

3.2.1 使用pandas库

df1 = pd.DataFrame({'Str':['A','A','B','B','C']})
df1.get_dummies(df1,columns=['Str'])

 

在回归,分类,聚类等机器学习算法中,特征之间距离的计算或相似度的计算是非常重要的,而我们常用的距离或相似度的计算都是在欧式空间的相似度计算,计算余弦相似性,基于的就是欧式空间。

而我们使用one-hot编码,将离散特征的取值扩展到了欧式空间,离散特征的某个取值就对应欧式空间的某个点。

 通俗而言,独热编码将各属性平等化,每一个属性权重,优先级等都一样。

3.2.2 使用Sklearn库

data = pd.DataFrame({'Str':['A','B','A','C']})form sklearn.preprocessing import OneHotEncoder
enc = OneHotEncoder()
enc.fit(data) #将数据库data中的数据编码
enc.transform([['A']]).toarray() #将字符A根据原有规则进行转码
#由于OneHotEncoder返回的是稀疏矩阵,所以需要使用toarray函数将矩阵转换enc.fit_transform(data).toarray()

根据打印结果,字符A代表编码[1,0,0],字符B代表编码[0,1,0],C代表编码为[0,0,1] 

在这里补充一下稀疏矩阵的知识:

import numpy as np  
from scipy.sparse import csr_matrix  # 创建一个稀疏矩阵  
data = np.array([1, 2, 3, 4, 5, 6])  
row_ind = np.array([0, 0, 1, 2, 2, 2])  
col_ind = np.array([0, 2, 2, 0, 1, 2])  
sparse_matrix = csr_matrix((data, (row_ind, col_ind)), shape=(3, 3))  
print(sparse_matrix)dense_matrix = sparse_matrix.toarray()  # 打印转换后的 NumPy 数组  
print("\nDense Matrix:")  
print(dense_matrix)

 

稀疏矩阵是一种用于存储和操作大型矩阵的方法,这些矩阵中大部分元素都是零,因此使用专门的数据结构来存储非零元素及其位置,可以大大节省内存和计算资源。简单来讲稀疏矩阵将矩阵中为0的部分省略,例如上述括号代表数字在矩阵中的位置。

通过toarray函数将矩阵进行还原。

独热编码优缺点:

优点:为处理离散型特征提供了方法,在一定程度上扩充了特征属性。

缺点:当特征的类别很多时,特征空间会变得非常大,在这种情况下,一般可以用PCA来减少维度。

如果离散特征的取值之间没有大小意义时,可以使用独热编码,例如学习成绩优>良>及格。

 

4. 数据集的标签还原

Data['sex'][Data['sex'] == 1] = 'Male' #选中列标签后新增一个中括号[]里面加入判定条件
# 如果你需要查看原始标签到整数的映射  
print(le.classes_)  # 输出: ['bird' 'cat' 'dog'],注意这不是按字母顺序的  # 如果你需要将整数转换回原始标签  
labels_decoded = le.inverse_transform(labels_encoded)  
print(labels_decoded)  # 输出: ['dog' 'cat' 'bird' 'dog' 'cat']

如果通过使用LabelEncoder将标签数值化,也可以使用同样的方式将标签还原 .

5. 参考资料

机器学习:数据预处理之独热编码(One-Hot)详解-CSDN博客

Python中的标签编码和独热编码示例详解_python_脚本之家

Adult数据集分析及四种模型实现-CSDN博客

相关文章:

数据科学 - 数据预处理 (数据清洗,结构化数据)

1. 前言 数据清洗与结构化数据在数据分析和机器学习项目中扮演着至关重要的角色。随着大数据时代的到来,数据的质量、准确性和可用性成为决定项目成功与否的关键因素。 数据清洗提高数据质量,保证数据集的一致性;促进数据分析与挖掘&#xf…...

基于SpringBoot+Vue的校车调度管理系统(带1w+文档)

基于SpringBootVue的校车调度管理系统(带1w文档) 基于SpringBootVue的校车调度管理系统(带1w文档) 如今,因为无线网相关技术的快速,尤其是在网上进行资源的上传下载、搜索查询等技术,以及信息处理和语言开发技术的进步,同时编程语…...

基于改进拥挤距离的多模态多目标优化差分进化(MMODE-ICD)求解无人机三维路径规划(MATLAB代码)

一、无人机多目标优化模型 无人机三维路径规划是无人机在执行任务过程中的非常关键的环节,无人机三维路径规划的主要目的是在满足任务需求和自主飞行约束的基础上,计算出发点和目标点之间的最佳航路。 1.1路径成本 无人机三维路径规划的首要目标是寻找…...

opencascade AIS_Trihedron源码学习 绘制三轴坐标系

opencascade AIS_Trihedron 前言 //! 创建一个可选择的三轴坐标系 //! 该三轴坐标系包括一个原点,三个轴线和三个标签。 //! 标签的默认文本为 “X”, “Y”, “Z”。 //! 可以更改原点和任意轴线的颜色,箭头和标签的颜色也可以改变。 //! 可视化呈现可…...

【C++】C++应用案例-通讯录管理系统

目录 一、整体介绍 1.1、需求和目标 1.2、整体功能描述 二、页面及功能描述 2.1 主菜单 2.2 添加联系人菜单 2.3 显示联系人菜单 2.4 修改联系人菜单 2.5 退出功能 三、流程设计 3.1 主流程 3.2 添加操作流程 3.3 显示联系人操作流程 3.4 修改联系人操作流程 四…...

使用Python自动批量提取增值税发票信息并导出为Excel文件

要批量提取增值税发票的关键信息并将其导出为 Excel 文件,可以使用 Python 脚本结合 pdfplumber(用于解析 PDF 内容)、pandas(用于处理数据并导出 Excel)等库来实现。以下是实现这一目标的详细步骤。 1. 环境设置 首…...

vitis (eclipse) 的Indexer不能搜索、不能跳转到函数和变量定义和声明不能打开调用层次的解决方法

在使用vitis(2021.1) 过程中,有一个非常方便实用的功能,就是在函数或变量等源代码上通过右键菜单或快捷键F3、F4、CtrlAltH,也可以按住Ctrl键然后鼠标停留在函数名或变量名上,点击出现的链接,可以跳转到函数或变量的定…...

最佳HR软件指南:11款高效管理工具

文章介绍了11款人力资源管理工具:Moka、友人才、北森HRSaaS、同鑫eHR、i人事、红海eHR、BambooHR、Skuad、Hibob、OrangeHRM、Verint。 在选择人力资源管理软件时,选错不仅浪费时间和金钱,还会影响团队的工作效率和员工满意度。本文总结了11款…...

家长为孩子出国留学择校的四个步骤

如何为孩子选择最好的学校?无论您是选择公立或私立学校还是在家上学,无论您是否支付学费,都必须仔细规划。在为孩子选择学校的过程中,以下部分有供您考虑的问题。 写下对你来说最重要的五件事 在考虑选择学校时,您可…...

数据挖掘可以挖掘什么类型的模式?

一、挖掘频繁模式、关联和相关性 频繁模式(frequent pettern)是在数据中频繁出现的模式。 频繁项集一般是指频繁的在事务数据集中一起出现的商品的集合。 频繁出现的子序列,如顾客倾向于先买相机,再买内存卡这样的模式就是一个…...

JAVA中的隐式参数this

在Java中,this 关键字是一个非常重要的隐式参数,它代表当前对象的引用。通过 this,你可以访问类中的字段(属性)、方法以及构造函数中的参数(当参数名与字段名相同时,用于区分)。虽然…...

ThreadLocal 使用和详解避坑

在多线程编程中,每个线程都有自己的线程栈和线程本地存储。线程栈用于存储方法调用的信息,而线程本地存储则是每个线程私有的存储空间,用于存储线程的局部变量。ThreadLocal类提供了一种简单的方式来实现线程本地存储,它允许将线程…...

Python中使用类方法的返回值在其他方法中继续调用,return self进行链式调用

文章目录 return self进行链式调用继续思考,以下内容可以不看如果self中没有初始化valueself中定义其他变量,调用类方法外的函数 return self进行链式调用 在Python中,可以使用类方法的返回值在其他方法中继续调用。这通常通过返回类实例&am…...

基于IOT架构的数据采集监控平台!

LP-SCADA数据采集监控平台是蓝鹏测控推出的一款聚焦于工业领域的自动化数据采集监控系统, 助力数字工厂建设的统一监控平台。 为企业提供从下到上的完整的生产信息采集与集成服务,从而为企业综合自动化、工厂数字化及完整的"管控一体化”的解决方案…...

初见scikit-learn之基础教程

初见scikit-learn之基础教程 scikit-learn 基础教程 1. scikit-learn 简介1.1 什么是 scikit-learn?1.2 scikit-learn 的主要功能 2. 安装 scikit-learn2.1 安装方法2.2 验证安装 3. scikit-learn 基本使用3.1 数据加载与预处理3.1.1 加载数据集3.1.2 数据拆分3.1.3…...

基于STM32的嵌入式深度学习系统教程

目录 引言环境准备嵌入式深度学习系统基础代码实现:实现嵌入式深度学习系统 数据采集与预处理深度学习模型训练与优化模型部署与推理实时数据处理与反馈应用场景:智能物联网设备常见问题与解决方案收尾与总结 引言 随着深度学习在各种应用中的广泛采用…...

hive udf去掉map中的一个或者多个key

实现一个hive udf,可以将Map中的某一个或者多个key去掉,这里要继承GenericUDF 这个抽象类,然后Override evaluate这个函数即可,可以把执行这个udf前初始化的一些内容放在initialize方法内,比如参数的判断,函数的返回值类型等等。 代码写好之后,可以用如下方法创建这个函…...

模型量化技术综述:揭示大型语言模型压缩的前沿技术

大型语言模型(LLMs)通常因为体积过大而无法在消费级硬件上运行。这些模型可能包含数十亿个参数,通常需要配备大量显存的GPU来加速推理过程。 因此越来越多的研究致力于通过改进训练、使用适配器等方法来缩小这些模型的体积。在这一领域中&am…...

一文掌握Prompt:万能框架+优化技巧+常用指标

👉目录 1 写在前面 2 Prompt 万能框架 3 框架的细化 4 在框架上增加更多信息(RAG) 5 让大模型更好的思考(CoT) 6 附加技巧 7 优化方式及常用指标 8 写在最后 随着大模型在2023年横空出世,“Prompt 工程” 应…...

Vue 常用组件间通信方式

Vue 常用组件间通信方式 1. 父子组件通信 1.1 Props 父组件通过 props 向子组件传递数据&#xff0c;子组件通过 props 接收数据。 <!-- ParentComponent.vue --> <template><ChildComponent :message"parentMessage"></ChildComponent>…...

2026以后,场站最该升级的系统,也许不是储能,而是预测

大模型时代&#xff0c;新能源功率预测正在经历一场静默革命2026年一季度&#xff0c;一则技术升级消息在新能源圈内引发关注——某区域新能源多时空尺度一体化精确预测系统完成全面升级&#xff0c;新增预测误差分析、消纳水平评估、自定义报告生成等功能模块。这不是一次普通…...

最讽刺的是附语

您敏锐地捕捉到了这个文本中最具张力、也最诚实的一点。确实&#xff0c;这篇系统论证“先验意义场域”与“经验痕迹内外”&#xff0c;并旨在破除对任何固化痕迹&#xff08;包括理论本身&#xff09;之执着的论文&#xff0c;其最终的附语&#xff0c;却流露出一丝对另一套强…...

保姆级教程:用OpenCV SGBM算法从双目图像生成3D点云(附完整Python代码)

从双目图像到3D点云&#xff1a;OpenCV SGBM算法实战指南 双目视觉技术正逐渐成为计算机视觉领域的重要分支&#xff0c;它通过模拟人类双眼的立体视觉机制&#xff0c;能够从两张不同视角拍摄的图像中恢复出场景的三维信息。本文将带领读者从零开始&#xff0c;使用OpenCV中的…...

信创实战:在麒麟V10上构建.NET 6与金仓数据库的完整应用栈

1. 环境准备&#xff1a;从零搭建国产化开发平台 第一次在麒麟V10上折腾.NET 6和金仓数据库时&#xff0c;我踩了不少坑。记得当时为了找个靠谱的安装指南&#xff0c;翻遍了各种论坛和技术文档。现在把完整流程梳理出来&#xff0c;希望能帮你少走弯路。 硬件配置建议&#xf…...

智能Agent新能力:集成BERT文本分割处理复杂用户查询

智能Agent新能力&#xff1a;集成BERT文本分割处理复杂用户查询 你有没有遇到过这种情况&#xff1f;想用AI助手帮你做点复杂的事&#xff0c;比如“帮我查一下明天北京的天气&#xff0c;然后根据天气推荐几个适合的户外活动&#xff0c;最后再把这些活动整理成一个简单的日程…...

华为路由器策略路由(PBR)实战:如何让教师和学生走不同ISP出口?

华为路由器策略路由(PBR)在教育网络中的精细化流量管控实战 校园网络作为教育信息化的核心基础设施&#xff0c;其流量管理一直面临特殊挑战。某重点中学的网络管理员张工最近遇到了一个典型问题&#xff1a;教师办公区的视频会议频繁卡顿&#xff0c;而学生机房的大流量下载却…...

手机检测模型哪家强?实时手机检测-通用实测效果展示

手机检测模型哪家强&#xff1f;实时手机检测-通用实测效果展示 1. 引言&#xff1a;为什么需要一个好的手机检测模型&#xff1f; 想象一下这样的场景&#xff1a;在一个大型会议或考场里&#xff0c;需要快速识别出谁在使用手机&#xff1b;在工厂的生产线上&#xff0c;需…...

告别越狱!用TrollStore在iOS 15上永久安装任意IPA(保姆级教程)

免越狱革命&#xff1a;TrollStore在iOS 15上的终极安装指南 当iOS用户遇到想安装的第三方应用却受限于系统限制时&#xff0c;传统解决方案往往指向越狱——这一伴随风险的操作如今有了更优雅的替代。TrollStore的出现彻底改变了游戏规则&#xff0c;它像一把瑞士军刀&#x…...

脉振方波高频注入仿真程序,永磁同步电机高频方波注入。 1,仿真为离散模型,开关频率5k,注入频...

脉振方波高频注入仿真程序&#xff0c;永磁同步电机高频方波注入。 1&#xff0c;仿真为离散模型&#xff0c;开关频率5k&#xff0c;注入频率取开关频率的一半是2.5k。 2&#xff0c;程序在1.5s加载&#xff0c;在4.1s不再注入方波&#xff0c;从波形可以看到低速区可以带载启…...

从光谱到信号:fNIRS如何解码大脑的“血氧语言”

1. 当近红外光遇见大脑&#xff1a;fNIRS的物理基础 想象你用手电筒照射一块半透明的果冻——光线会部分穿透果冻&#xff0c;部分被吸收&#xff0c;还有部分会向四周散射。fNIRS&#xff08;功能性近红外光谱技术&#xff09;的工作原理与此类似&#xff0c;只不过这里的&quo…...