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

文章目录

  • 导读
  • 一、主题与提纲
    • 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.rhkb.cn/news/480804.html

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

相关文章

Tülu 3:重新定义开源大模型的后训练范式

一、引言 在大型语言模型(LLM)的发展历程中,预训练阶段往往受到最多关注,动辄需要数百万美元算力投入和数万亿token的训练数据。然而,一个鲜为人知但同样关键的事实是:预训练完成的模型实际上并不能直接投…

【机器学习】机器学习的基本分类-监督学习-逻辑回归(Logistic Regression)

逻辑回归是一种分类算法,尽管名字中包含“回归”,但其主要用于解决二分类和多分类问题。它通过学习一个逻辑函数,预测输入属于某个类别的概率。 1. 逻辑回归的基本概念 目标 逻辑回归的目标是找到一个函数 h(x),输出一个概率值 …

PyMOL操作手册

PyMOL 操作手册 The man will be silent, the woman will be tears. – itwangyang ​ 翻译整理:itwangyanng 2024 年 11月 29 日 目录 初识 PyMOL… 5 0.1 安装 PyMOL… 5 0.1.1 Windows 系统开源版 PyMOL 的安装… 5 0.1.2 教育版 PyMOL 的下载安装……

麒麟系统x86安装达梦数据库

一、安装准备前工作 操作系统:银河麒麟V10,CPU: x86_64 架构 下载地址,麒麟官网:https://www.kylinos.cn/ 数据库:dm8_20220915_x86_kylin10_64 下载地址,达梦数据库官网:https://…

Hot100 - 搜索二维矩阵II

Hot100 - 搜索二维矩阵II 最佳思路: 利用矩阵的特性,针对搜索操作可以从右上角或者左下角开始。通过判断当前位置的元素与目标值的关系,逐步缩小搜索范围,从而达到较高的效率。 从右上角开始:假设矩阵是升序排列的&a…

docker服务容器化

docker服务容器化 1 引言2 多个容器间网络联通2.1 单独创建关联2.2 创建时关联 3 服务搭建3.1 镜像清单3.2 容器创建 4 联合实战4.2 flink_sql之kafka到starrocks4.2 flink_sql之mysql到starrocks 5 文献借鉴 1 引言 ​ 利用docker可以很效率地搭建服务,本文在win1…

011变长子网掩码

变长子网掩码: 使用变长子网掩码(VLSM)优化地址分配 目标: 根据需求使用VLSM分配IP地址,减少浪费,并配置静态路由。 网络拓扑 创建一个包含三台路由器(R1、R2、R3)和五台PC&#x…

SpringBoot小知识(2):日志

日志是开发项目中非常重要的一个环节,它是程序员在检查程序运行的手段之一。 1.日志的基础操作 1.1 日志的作用 编程期调试代码运营期记录信息: * 记录日常运营重要信息(峰值流量、平均响应时长……) * 记录应用报错信息(错误堆栈) * 记录运维过程数据(…

大数据新视界 -- 大数据大厂之 Hive 数据安全:权限管理体系的深度解读(上)(15/ 30)

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

智能探针技术:实现可视、可知、可诊的主动网络运维策略

网络维护的重要性 网络运维是确保网络系统稳定、高效、安全运行的关键活动。在当今这个高度依赖信息技术的时代,网络运维的重要性不仅体现在技术层面,更关乎到企业运营的方方面面。网络运维具有保障网络的稳定性、提升网络运维性能、降低企业运营成本等…

RT-DETR融合Inner-IoU及相关改进思路

RT-DETR使用教程: RT-DETR使用教程 RT-DETR改进汇总贴:RT-DETR更新汇总贴 《Inner-IoU: More Effective Intersection over Union Loss with Auxiliary Bounding Box》 一、 模块介绍 论文链接:https://arxiv.org/abs/2311.02877 代码链接&a…

在Springboot项目中实现将文件上传至阿里云 OSS

oss介绍 阿里云对象存储服务(OSS)是一种高效、安全和成本低廉的数据存储服务,可以用来存储和管理海量的数据文件。本文将教你如何使用 Java 将文件上传到阿里云 OSS,并实现访问文件。 1. 准备工作 1.1 开通 OSS 服务 登录阿里云…

Java项目中加缓存

Java项目中加缓存 1.更新频率低;但读写频率高的数据很适合加缓存; 2.可以加缓存的地方很多:浏览器的缓存;CDN的缓存;服务器的缓存; 本地内存;分布式远端缓存; 加缓存的时候不要…

Vuex —— Day1

vuex概述 vuex是vue的状态管理工具,可以帮我们管理vue通用的数据(多组件共享的数据) vuex的应用场景: 某个状态在很多个组件中都会使用(eg.个人信息)多个组件共同维护一份数据(eg.购物车&…

【前端】Next.js 服务器端渲染(SSR)与客户端渲染(CSR)的最佳实践

关于Next.js 服务器端渲染(SSR)与客户端渲染(CSR)的实践内容方面,我们按下面几点进行阐述。 1. 原理 服务器端渲染 (SSR): 在服务器上生成完整的HTML页面,然后发送给客户端。这使得用户在首次访问时能够…

基于FPGA的FM调制(载波频率、频偏、峰值、DAC输出)-带仿真文件-上板验证正确

基于FPGA的FM调制-带仿真文件-上板验证正确 前言一、FM调制储备知识载波频率频偏峰值个人理解 二、代码分析1.模块分析2.波形分析 总结 前言 FM、AM等调制是学习FPGA信号处理一个比较好的小项目,通过学习FM调制过程熟悉信号处理的一个简单流程,进而熟悉…

Scala学习记录,统计成绩

统计成绩练习 1.计算每个同学的总分和平均分 2.统计每个科目的平均分 3.列出总分前三名和单科前三名,并保存结果到文件中 解题思路如下: 1.读入txt文件,按行读入 2.处理数据 (1)计算每个同学的总分平均分 import s…

路由策略与路由控制实验

AR1、AR2、AR3在互联接口、Loopback0接口上激活OSPF。AR3、AR4属于IS-IS Area 49.0001,这两者都是Level-1路由器,AR3、AR4的系统ID采用0000.0000.000x格式,其中x为设备编号 AR1上存在三个业务网段A、B、C(分别用Loopback1、2、3接…

第J7周:对于RenseNeXt-50算法的思考

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 文章目录 一、前言1、导入包2、分组卷积模块3、残差单元4、堆叠残差单元5、搭建ResNeXt-50网络 二、问题思考 电脑环境: 语言环境:Pyth…

某充电桩业务服务内存监控和程序行为分析

原作者:展贝 原文地址:https://mp.weixin.qq.com/s/nnYCcVtwowvmj7Zn9XLIUg 在当今数据驱动的环境中,理解内存指标和程序行为对于确保应用程序的性能和可靠性至关重要。在依赖实时数据处理和高可用性的行业中尤其如此。通过利用可观测工具&am…