跟李沐学AI——04数据处理

        

目录

        1、数据操作

获取张量的形状

生成特定的张量(多维数组)

运算

广播机制

索引和切片

2、数据预处理

处理缺失值 


最近由于国创项目的需要,在b站上发现了李沐老师的深度学习零基础视频,在这写点复习笔记,用来监督自己坚持一个月学完这些内容吧~

        1、数据操作

首先对于pytorch我们需要使用语句进行导入

import torch

首先是一个关于张量的概念,张量在这里其实也就是一个多维数组,在pytorch内创建一个行向量可以使用torch.arange语句进行

 这里我理解的arange语句意思为,可以生成一个一维的行向量,括号内的表示元素的个数。下边代码的意思为生成一个0-11元素的行向量。

x=torch.arange(12)

另外经过度娘了解到了arange的其他用法

arange(x,y,z)

其中的x表示起始位置,y表示终止位置(这里的终止位置意思为在此前终止),z表示间隔的步长。

获取张量的形状

这里可以采用shape函数,shape函数范围该张量的几行几列(以及多维也可以范围)。

而如果想知道这个张量内部一共有多少个元素,可以采用numel函数进行访问。

x.shape
x.numel()

生成特定的张量(多维数组)

对于全零与全一或者随机数的数组,可以采用以下语句进行生成.

torch.zeros((2,3,4))#生成一个三维的张量,其中高为2,三行四列
torch.ones((2,3,4))
torch.randn(3,4)#生成一个三行四列的张量,每一个元素都是从均值为0、标准差为1的标准正态分布中随机采样

同样,我们也可以对张量进行初始化,格式如下:

torch.tensor([[2,1,4,3],[2,2,3,4],[3,6,7,7]])

运算

可以对张量进行运算,如一下语句都是可以的

x=torch.tensor([1.0,2,4,8])
y=torch.tensor([2,2,2,2])
x+y,x-y,x*y,x/y,
#这里的乘除如果是相同维数的张量,则是对应的元素相乘除加减,不同于之后的矩阵的乘除
x**y#**表示的是求幂运算
torch.exp(x)#表示的是e的x方这样的运算

#两个张量进行比较,可以利用运算符“==”
x==y
#得到的是一些Fales,True的返回值

另外如果有两个tensor,可以将其使用cat函数拼接起来

torch.cat((X,Y),dim=0)#dim=0为竖向拼接,dim=1为横向拼接,dim=2位三维张量拼接

广播机制

对于两个不同维度的数组进行计算时,python默认采用广播机制,就是将现在的数组维度进行拓展,拓展的原则是利用已有的元素。

a=torch.arange(3).reshape((3,1))
b=torch.arange(2).reshape((1,2))
a,b

(tensor([[0],
         [1],
         [2]]),
 tensor([[0, 1]]))

a+b

tensor([[0, 1],
        [1, 2],
        [2, 3]]

索引和切片

我们可以利用索引才对其进行访问

X[-1]#表示访问最后一行的元素
X[1:3]#表示访问第第二行到第三行的元素
#与此同时,我们也可以采用逗号对数组中的特定元素进行访问
X[1,3]#表示访问第二行第三列的元素

2、数据预处理

python中的

os表示的是操作系统,这个库是对操作系统的封装

import os

 可以利用操作系统对文件进行创建



os.makedirs(os.path.join('..', 'data'), exist_ok=True)
#os.makedirs(path, mode=0o777)前者 表示创建目录的路径

data_file = os.path.join('..', 'data', 'house_tiny.csv')

#os.path.join()会将路径使用/进行拼接

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')

也可以利用其对其进行读取与写入 

with open(r'filename.txt') as f:
data_user=pd.read_csv(f)  #文件的读操作
with open('data.txt', 'w') as f:
f.write('hello world')  #文件的写操作

处理缺失值 

 为了处理缺失的数据,典型的方法包括插值删除,其中插值用替代值代替缺失值。而删除则忽略缺失值。在这里,我们将考虑插值。

# 如果没有安装pandas,只需取消对以下行的注释:
# !pip install pandas
import pandas as pd

data = pd.read_csv(data_file)
print(data)

这里的iloc表示的是一个文件的索引,表示对所有行,第一列到第二列赋值给inputs,对所有行,第三列赋值给outputs

 fillna是表示对缺失值进行填充,而mean函数的意为求均值,所以这行代码的意思为用inputs的均值,对inputs的缺失值进行填充

inputs, outputs = data.iloc[:, 0:2], data.iloc[:, 2]
inputs = inputs.fillna(inputs.mean())
print(inputs)

 get_dummies函数是对所要操作的表格进行自动转换为两列,将其增加两个分类标准

inputs = pd.get_dummies(inputs, dummy_na=True)
print(inputs)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值