Skip to content

Latest commit

 

History

History
94 lines (71 loc) · 2.54 KB

t2 P2 数据操作与预处理.md

File metadata and controls

94 lines (71 loc) · 2.54 KB

230320 P2 数据操作与预处理

1数据操作

1.1 创建与修改张量

x=torch.arrange(12)创建一维张量,元素为0-11 x.reshape(3,4)修改张量为二维张量,三行四列

其他

x.shape查看张量维数 torch.zeros(x,y,z,....)创建全0张量,x,y,z..指各维度长度,可塞入元组或列表 torch.randn(*size)创建服从标准正态分布的张量 torch.ones(*size)创建全一张量 x.numel()张量总计元素数 torch.tensor([[....]])也可以从python列表创建张量

1.2 运算符

同维张量间加减乘除与求幂运算**都是按元素运算 X==Y,X>Y对二维张量进行逻辑运算 Z=torch.cat((X,Y),dim=0对张量进行连结计算,dim=0指沿轴0拼接(按行上下拼接),dim=1指按列左右拼接

其他

torch.exp(X)以e为底指数运算 X.sum()对张量所有元素求和。dim可以指定按维度

1.3 广播机制

会适当复制元素来扩展1个或2个数组,以便使两个张量有相同的形状 然后再按元素操作

主要用于向量和张量,标量和张量之间的运算

1.4 索引与切片

与numpy基本一致,切片时左开右闭 X[-1] 最后一行 X[:,2]第三列 X[1,2]定位到第二行第三列 X[0:2,0:2]第一行到第二行,第一列到第二列这一区块

1.5节省内存-原地操作

1.另开一个公共变量专门用于存放计算结果 Z[:]=X+Y 2.用+=等运算符 X+=Y

1.6 转化为其他python对象

ndarray = t.numpy()张量转numpy ndarray t = torch.tensor(ndarray)ndarray转张量

张量转标量

其他

2 数据操作

使用pandas

2.1 读取数据

pandas.read_csv()

2.2 处理缺失值

插值法,插入一个值来替代

# 插入的是平均值
inputs, outputs = data.iloc[:, 0:2], data.iloc[:, 2]
inputs = inputs.fillna(inputs.mean())

#将字符串这种无法求平均值的项,转化为01特征(是否为NaN)
inputs = pd.get_dummies(inputs, dummy_na=True)

删除法,删掉缺失值

# 删除nans数量最多的列
# isna()判断矩阵元素是否为na,sum()列求和 ,再max得到nan最多列有多少个nan
# dropna会丢掉含nan的项,axis=1指定丢弃列,thresh指当该列/行nan个数达到多少时再删除
inputs_ = inputs_.dropna(axis=1, thresh=max(inputs_.isna().sum()))

dataframe转张量

X, y = torch.tensor(inputs.values), torch.tensor(outputs.values)

其他

在jupyter中先用鼠标选中,在按下tap+shift,可以查看官方文档