【动手学深度学习】1.数据操作 + 数据预处理

前言

这一部分笔记讲解的是数据的一些操作及其预处理,涉及torch库,numpy库,以及pandas库,有疑问可以直接搜这些库。


数据操作

1. N维数组是机器学习和神经网络的主要数据结构。
下面是N维数组样例:


2. 创建数组

访问元素
在jupyter中实践一下,import numpy引入numpy库
定义一个二维数组:

而后访问一些元素:

前四个访问都好理解,只需要注意索引是从0开始,和别的编程语言一样,且冒号左右指的是一个左闭右开的区间,然后最后一个子区域[::3,::2]中的元素,指的是每跳3行且每跳2列访问元素,具体语法可以学习numpy中的数组操作。
python中的数组其实叫列表,不过这并不重要 🤪


3. 张量 表示一个数值组成的数组,但这个数组可能有多个维度。

我们可以通过shape属性访问张量的 形状 和张量中元素的总数

注意numel()是直接返回int类型的元素个数

要改变一个张量的形状而不改变元素数量和元素值,使用reshape函数

使用全0、全1、其他常量或者从特定分布中随机采样的数字

通过提供包含数值的 Python 列表(或嵌套列表)来为所需张量中的每个元素赋予确定值

常见的标准算术运算符(+、-、*、/ 和 **)都可以被升级为按元素运算

还有许多其他运算,比如指数运算

把张量 连结(concatenate) 在一起

这里dtype是指定float32类型,dim是指定维度。

通过 逻辑运算符 构建二元张量

对张量中的所有元素进行求和会产生一个只有一个元素的张量

即使形状不同,我们仍然可以通过调用 广播机制 (broadcasting mechanism) 来执行按元素操作

广播机制
由于广播机制的存在,要十分注意代码的逻辑,防止出现意外的数组结果,这会导致代码在运行,但结果可能完全不对,而你又找不到问题出在哪儿…

可以用 [-1] 选择最后一个元素,可以用 [1:3] 选择第二个和第三个元素

除读取外,我们还可以通过指定索引来将元素写入矩阵

为多个元素赋值相同的值,我们只需要索引所有元素,然后为它们赋值

运行一些操作可能会导致为新结果分配内存

执行原地操作

如果在后续计算中没有重复使用 X,我们也可以使用 X[:] = X + Y 或 X += Y 来减少操作的内存开销

转换为 NumPy 张量

将大小为1的张量转换为 Python 标量


数据预处理

创建一个人工数据集,并存储在csv(逗号分隔值)文件

从创建的csv文件中加载原始数据集

为了处理缺失的数据,典型的方法包括 插值删除 , 这里,我们将考虑插值
在这里插入图片描述
对于inputs中的类别值或离散值,我们将“NaN”视为一个类别

这里的操作是将原来 Alley列进行特征处理,变成Alley_Pave列和Alley_nan列,其中Alley_Pave列指的是如果值原来为Pave则填充1,否则填充0,Alley_nan列则与反过来填充。

现在inputs和outputs中的所有条目都是数值类型,它们可以转换为张量格式


突然意识到自己都是贴的图片,应该把代码放上来
本文源代码 lesson01
链接:https://pan.baidu.com/s/1tj6qHFFuQ1GmVuWzwS1TLw
提取码:d2lc

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值