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

news2024/11/14 15:44:47

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博客

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

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

相关文章

剪映课+短视频综合课程:抖音底层算法

课程内容: 01-直播回放精选:2024抖音4_5月新知识.mp4 02-直播回放:核心算法讲解.mp4 03-直播回放:推流人群顺序和赛马依据.mp4 04-直播回放:从0-1kw推流细节.mp4 05-直播回放:抖加投放①.mp4 06-直播回…

调试模式下如何调试看门狗?

大家在调试GD32 MCU系统的时候,若开了看门狗外设,是否会碰到进入调试模式看门狗就会咬狗造成无法调试的问题? 碰到这种情况,一般是将看门狗关闭,然后再进行调试,但这个时候看门狗外设就无法工作了&#xf…

SSH远程服务器MobaXterm PuTTY XShell Tabby

云服务器运维SSH远程工具软件, PuTTY 相比有很大的优势,有兼顾 SSH 和 FTP一体的工具。 SSH的软件,而且有支持 Mac 、Windows 、Linux等跨平台的。 1、XShell 官网地址:https://www.xshell.com/en/xshell/ 免费地址:h…

Kimi居然能做PPT了,是职场人的得力助手还是噱头满满?

你们有没有发现,Kimi最近搞了个大新闻——它竟然能做PPT了!是的,你没听错,就是那个让我们又爱又恨的演示PPT。这不,我一看到公告,就激动得像打了鸡血,连夜把市面上其他的几款主流AI PPT产品测了…

数据工程解决的十大数据生命周期问题

欢迎来到雲闪世界。解决关键痛点的明确策略 使用Kandinsky 的AI 生成图像 在本文中,我想解决数据工程师在整个数据生命周期中使用管道时面临的一些最大挑战。了解如何管理数据生命周期是我们不断变化的领域的关键。作为一名数据工程师,我经常处理大量不同…

【Spring Boot】用 Spring Security 实现后台登录及权限认证功能

用 Spring Security 实现后台登录及权限认证功能 1.引入依赖2.创建权限开放的页面3.创建需要权限验证的页面4.配置 Spring Security4.1 配置 Spring MVC4.2 配置 Spring Security 5.创建登录页面6.测试权限 1.引入依赖 使用前需要引入相关依赖,见以下代码&#xff…

DeDe-cms 漏洞

一、文件管理上传shell 我们写一个一句话木马, 上传 点击访问后使用工具连接 连接成功 二、修改模板文件拿shell 找到index.html修改 保存,进行如下操作 更新html 访问返回的地址 拿工具连接 三、后台任意命令执行拿shell 写入一个木马 添加成功后点击代码 这里是文…

python-鼠标绘画线条程序

闲来无聊简单编写了一个绘图小程序。 主要思路 主要是基于Python中的内置模块turtle编写的,简单扩展了一下,通过绑定事件能够达到鼠标绘制、删除、存储已经绘制图案的线条这几个功能。 路径结构 -draw- define.py- main.py- myturtle.py使用 点住鼠…

zabbix7.0TLS-01-部署

文章目录 1 介绍1.1 架构1.2 主要概念和名词1.3 最新 7.0 TLS 版本的部分新特性更灵活的资源发现和管理 2 官方部署指导地址3 在 Rocky Linux 9 上安装 zabbix3.1 安装软件包3.2 创建初始化数据库3.3 配置zabbix-server3.4 启动Zabbix server和agent进程3.5 默认监听端口3.6 访…

电脑新加的硬盘如何分区?新加硬盘分区选MBR还是GPT

最近有网友问我,电脑新加的硬盘如何分区?电脑新加的硬盘分区选MBR还是GPT要看引导模式采用uefi还是传统的legacy模式,如果采用的是uefi引导模式,分区类型对应的就是gpt分区(guid),如果引导模式采用的是legacy,对应的分区类型为mb…

springboot专家门诊预约管理平台-计算机毕业设计源码79775

摘要 随着互联网技术的快速发展,医疗健康领域数字化需求日益增长,专家门诊预约管理平台应运而生。本研究基于Spring Boot框架开发了一款专家门诊预约管理平台。该平台涵盖了患者用户、专家用户和管理员三个角色,实现了患者的预约、评价、信息…

Java:进程和线程

文章目录 进程线程的概念和区别总结如何创建线程1.继承Thread重写run2.实现Runnable重写run3.继承Thread重写run,通过匿名内部类来实现4. 实现Runnable重写run,通过匿名内部类来实现5.基于lambda表达式来创建 虚拟线程 并发编程: 通过写特殊的代码,把多个CPU核心都利…

C# OpenCvSharp 打开4K高清摄像头

一、前言 整了个1200w像素的usb摄像头,使用 OpenCvSharp读取,读取和设置分辨率代码耗时居然10几秒,查询资料发现,必须对VideoCapture进行设置,使用DSHOW模式打开,并且设置分辨率代码下必须增加 指定MJPG编码…

php的mysql操作可实现简单登录功能

文章目录 1. 表单和请求(1) 表单操作(2) 网络请求(3) $_REQUEST超全局变量 2. mysql数据库操作1) mysqli连接操作2) 操作数据库3) 预处理语句4) pdo操作数据库5) 创建连接并执行查询语句 1. 表单和请求 主要使用到**$_GET** 和 $_POST这两个超全局变量,分别对应两种请求 (1) …

【2024蓝桥杯/C++/B组/小球反弹】

题目 分析 Sx 2 * k1 * x; Sy 2 * k2 * y; (其中k1, k2为整数) Vx * t Sx; Vy * t Sy; k1 / k2 (15 * y) / (17 * x); 目标1:根据k1与k2的关系,找出一组最小整数组(k1, k2)&#xff…

北京崇文门中医院贾英才主任解读头晕:症状与根源

头晕是一种常见的症状,可能由多种原因引起。为了更深入地了解头晕这一症状,我们有幸邀请到了北京崇文门中医院的贾英才主任,听听他对于头晕的见解。 北京崇文门中医院贾英才主任指出,头晕并非一种单一的疾病,而是许多潜…

鉴权-RBAC模型

文章目录 1.技术选型1.网址2.Sa-Token介绍3.[Sa-Token 功能一览](https://sa-token.cc/doc.html#/?idsa-token-功能一览) 2.鉴权数据模型设计1.数据模型图2.SQL1.用户信息表2.角色表3.用户角色表(关联表)4.权限表5.角色权限表(关联表&#x…

1518.换水问题

1.题目描述 超市正在促销,你可以用 numExchange 个空水瓶从超市兑换一瓶水。最开始,你一共购入了 numBottles 瓶水。 如果喝掉了水瓶中的水,那么水瓶就会变成空的。 给你两个整数 numBottles 和 numExchange ,返回你 最多 可以喝到…

辩论赛评委依据什么标准进行评分呢

在辩论赛中,评委依据什么标准进行对参赛个人和团队进行评分呢?下面对这两部分介绍一些常用评分标准。 一、 个人评分标准 语言表达 1、普通话标准、语速适中; 2、语调平仄合理; 3、口头、肢体语言和谐; 4、修辞得当、…

C基础项目(学生成绩管理系统)

目录 一、项目要求 二、完整代码实例 三、分文件编写代码实例 一、项目要求 1.系统运行,打开如下界面。列出系统帮助菜单(即命令菜单),提示输入命令 2.开始时还没有录入成绩,所以输入命令 L 也无法列出成绩。应提…