news 2026/5/30 9:58:46

【动手学深度学习】第三课 数据预处理

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【动手学深度学习】第三课 数据预处理

一、pandas

形象地来说,pandas 是 Python 里专门用来处理“表格型数据”的 “超级工具包”。

为什么机器学习离不开它?

机器学习的第一步是数据预处理,而pandas是完成这个步骤最称手的工具。

  • 拿到的原始数据往往是 CSV/Excel 格式,需要用 pandas 读取并清洗。
  • 它能把杂乱的原始数据,整理成模型可以直接输入的干净特征。
  • 处理完后,通过to_numpy()转成Numpy数组,再转成tensor,就能传给 PyTorch训练模型了。

二、读取数据集

下面步骤都需要进行跟练。

我们首先创建一个人工数据集,并存储在csv文件里。

然后,我们要从这个csv文件中读取原始数据集。

于是,导入pandas包,调用read_csv函数来读取数据集。


三、处理缺失值*

NaN代表缺失值,而机器学习模型无法直接处理包含NaN的数据。因此,处理缺失值(NaN)是数据预处理中必不可少的一步。

首先,通过位置索引iloc,将data分为inputs和outputs。

1. 数值

(1)均值填充

对于inputs中缺少的数值,我们一般采用均值填充法。即用这一列的均值来替换NaN。

inputs.mean()求均值,numeric_only即只针对数值型。

(2)删除法

当然,在实际应用中,如果某一列缺失值占比极高,我们还会采用删除法,见作业第一题。

2. 类别值、离散值

对于inputs中缺少的类别值或离散值,我们将NaN看作一个类别☝️。

比如Alley这一列,它就只有两个类别值:Pave和NaN,pandas会自动将这一列转换为“Alley_Pave”和“Alley_NaN”,然后用0和1来表示这一行的类别值。


四、转换格式

现在inputs和outputs里都是数值类型,我们需要将它转换为Tensor格式。

先要通过to_numpy转成Numpy格式,再通过torch.tensor转成Tensor格式。


五、作业*

创建包含更多行和列的原始数据集。

(懒得自己输,让ai帮我生成了一个学生-成绩表)

1. 删除缺失值最多的列。

第一反应是循环,而pandas的核心优势之一就是向量化操作—— 它会对整个表格进行批量处理,而不需要像操作原生 Python 列表 那样手动写for循环。

(1)首先,读取数据集后,统计每一列的缺失值数量:

  • data.isnull():表格里每个值是否缺失,返回一个跟data一样大的数组
  • data.isnull().sum():默认按列求和

(2)然后,找到缺失值最多的那一列:

  • missing_count.idxmax:返回最大值对应的索引,即列名。

(3)最后,删掉这一列

总的来说,上面是新手建议一步步写的,其实可以写成一句:

2. 将预处理后的数据集转换为张量格式。

(1)先均值填充缺失值

(2)转换

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/30 13:11:29

基于JavaWeb的网上书城网站的设计与实现 开题报告(2)

目录 研究背景与意义系统功能模块技术选型数据库设计示例系统特色预期成果 项目技术支持可定制开发之功能亮点源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作 研究背景与意义 随着电子商务的快速发展,网上书城成为用户购书的重…

作者头像 李华
网站建设 2026/5/30 9:21:35

【读书笔记】《演讲的本质》

MIT传奇教授Patrick Winston的演讲课:如何在关键时刻让人真正听你说话 一个残酷的事实 90%的人不是不会说话,而是一开口就让人走神。他们逻辑完整,内容正确,PPT精美,但台下的人却在想:中午吃什么?手机有没有消息?这人什么时候讲完? Patric…

作者头像 李华
网站建设 2026/5/30 9:21:18

基于Simulink的根轨迹法控制器设计与仿真建模示例

目录 手把手教你学Simulink 一、引言:为什么工程师仍要学“根轨迹法”? 二、理论基础:根轨迹法核心思想 1. 闭环特征方程 2. 根轨迹绘制法则(简要) 三、示例系统:位置伺服系统 1. 被控对象传递函数 四、MATLAB 中绘制根轨迹 步骤1:定义系统并绘图 步骤2:分析根…

作者头像 李华
网站建设 2026/5/29 6:27:21

day73(2.1)——leetcode面试经典150

127. 单词接龙 127. 单词接龙 这个跟昨天的题还是有点不一样的,这个如果按照昨天的方法,会超时,因为时间已经到了50000 题目: 题解: class Solution {public int ladderLength(String beginWord, String endWord, …

作者头像 李华