深度学习3:数据预处理使用Pandas与PyTorch的实践

news/2024/11/30 7:52:13/

文章目录

  • 导读
  • 一、主题与提纲
    • 1.1. 读取数据集
    • 1.2. 处理缺失值
    • 1.3. 转换为张量格式
  • 二、结论

在这里插入图片描述

本文是经过严格查阅相关权威文献和资料,形成的专业的可靠的内容。全文数据都有据可依,可回溯。特别申明:数据和资料已获得授权。本文内容,不涉及任何偏颇观点,用中立态度客观事实描述事情本身

导读

深度学习的实践中,数据预处理是至关重要的一步。原始数据往往需要进行清洗、转换和格式化,才能被模型有效地利用。本文将介绍如何使用Pandas进行数据预处理,并通过PyTorch将处理后的数据转换为张量格式,为后续的模型训练做好准备。

一、主题与提纲

  • 主题深度学习数据预处理
  • 提纲
    1. 读取数据集
    2. 处理缺失值
    3. 转换为张量格式
    4. PyTorch实现与代码展示

核心内容深入分析

1.1. 读取数据集

深度学习中,我们通常从CSV、Excel或数据库等文件中读取原始数据。Pandas提供了强大的数据读取功能,可以方便地加载这些数据。

import pandas as pd
import os# 创建数据目录(如果不存在)
os.makedirs('data', exist_ok=True)# 数据文件路径
data_file = os.path.join('data', 'house_tiny.csv')# 写入示例数据到CSV文件
with open(data_file, 'w') as f:f.write('NumRooms,Alley,Price\n')f.write('NA,Pave,127500\n')f.write('2,NA,106000\n')f.write('4,NA,178100\n')f.write('NA,NA,140000\n')# 使用Pandas读取CSV文件
data = pd.read_csv(data_file)
print(data)

执行结果

NumRoomsAlleyPrice
NaNPave127500
2.0NaN106000
4.0NaN178100
NaNNaN140000

1.2. 处理缺失值

缺失值是数据预处理中常见的问题。Pandas提供了多种方法来处理缺失值,如插值法和删除法。在这里,我们将使用插值法,用同一列的均值替换缺失值。

# 分离输入和输出数据
inputs, outputs = data.iloc[:, 0:2], data.iloc[:, 2]# 对输入数据中的缺失值进行插值处理
inputs = inputs.fillna(inputs.mean())
print(inputs)# 对类别值进行独热编码处理,将NaN视为一个类别
inputs = pd.get_dummies(inputs, dummy_na=True)
print(inputs)

执行结果

插值后

NumRoomsAlley
3.0Pave
2.0NaN
4.0NaN
3.0NaN

(注意:这里的NumRooms列的NaN被替换为了该列的均值,即(2+4+0)/3=2,但考虑到原始数据中NumRooms的NaN应理解为缺失数据,我们在此处简化为用非NaN值的均值3进行替换,以保持示例的简洁性。)

独热编码后

NumRoomsAlley_PaveAlley_nan
3.010
2.001
4.001
3.001

1.3. 转换为张量格式

处理完缺失值并进行了独热编码后,我们需要将数据转换为PyTorch张量格式,以便进行后续的模型训练。

import torch# 将Pandas DataFrame转换为PyTorch张量
X = torch.tensor(inputs.to_numpy(dtype=float), dtype=torch.float32)
y = torch.tensor(outputs.to_numpy(dtype=float), dtype=torch.float32)print(X)
print(y)

执行结果(由于篇幅限制,这里仅展示张量的形状和类型):

X张量

tensor([[3., 1., 0.],[2., 0., 1.],[4., 0., 1.],[3., 0., 1.]], dtype=torch.float32)

y张量

tensor([127500., 106000., 178100., 140000.], dtype=torch.float32)

(注意:实际执行结果中的数值会根据Pandas和PyTorch的版本以及系统环境有所不同,但形状和类型应保持一致。)

二、结论

本文介绍了如何使用Pandas进行数据预处理,并通过PyTorch将处理后的数据转换为张量格式。这些步骤是深度学习实践中不可或缺的一部分,有助于提升模型的性能和准确性。通过本文的介绍和代码示例,读者可以掌握这些技能,并在自己的项目中加以应用。

参考文献:
动手学深度学习在线课程(https://zh-v2.d2l.ai/chapter_introduction/index.html)


http://www.ppmy.cn/news/1551139.html

相关文章

设计模式学习之——观察者模式

观察者模式是一种行为型设计模式,它用于在对象之间建立一对多的依赖关系。 一、定义与角色 定义: 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察…

记录学习《手动学习深度学习》这本书的笔记(一)

这几天在看同学推荐的这本书,看到了大概百来页,感觉受益匪浅,很多老师上课没讲到的东西在书里都有详细介绍。 平时上课做机器学习的作业实验基本都是调用模型直接套,没有去关注具体的方法,这本书都帮我巩固了很多知识…

深度学习之Mask-R-CNN

1.1 Mask-RCNN 的网络结构示意图 其中黑色部分为原来的Faster-RCNN,红色部分为在Faster网络上的修改:    1)将ROI Pooling层替换成了ROIAlign;    2)添加并列的FCN层(Mask层);  …

彻底理解quadtree四叉树、Octree八叉树 —— 点云的空间划分的标准做法

1.参考文章: (1)https://www.zhihu.com/question/25111128 这里面的第一个回答,有一幅图: 只要理解的四叉树的构建,对于八叉树的构建原理类比方法完全一样:对于二维平面内的随机分布的这些点&…

百度在下一盘大棋

这两天世界互联网大会在乌镇又召开了。 我看到一条新闻,今年世界互联网大会乌镇峰会发布“2024 年度中国互联网企业创新发展十大典型案例”,百度文心智能体平台入选。 这个智能体平台我最近也有所关注,接下来我就来讲讲它。 百度在下一盘大棋…

【Oracle11g SQL详解】GROUP BY 和 HAVING 子句:分组与过滤

GROUP BY 和 HAVING 子句:分组与过滤 在 Oracle 11g 中,GROUP BY 子句用于根据一个或多个列对查询结果进行分组,而 HAVING 子句用于对分组后的结果进行过滤。这两者常结合聚合函数使用,用以实现复杂的数据统计和分析。本文将系统…

android 新增一个系统服务

android如何新增一个系统服务呢? 两个方案,一个是新增一个systemserver下的binder服务,一个是新增一个native的独立进程服务 这里选的是第一种,但坐下来感觉第二种更简单一些 因为systemserver要遵循的规则特别多 先是在startOthe…

【Python-Open3D学习笔记】004Mesh生成方法

PointCloud的TriangleMesh生成方法 本文使用csv文件作为点云数据(csv —> DataFrame —> PointCloud) 文章目录 PointCloud的TriangleMesh生成方法0. 数据展示1. Poisson表面重建2. Alpha Shapes3. 检测边界4. 小结 0. 数据展示 数据可视化方法…