目录:pytorch / chapter_preliminaries / ndarray.ipynb
pytorch / chapter_preliminaries / pandas.ipynb
(一)数据操作
首先认识深度学习中使用最多的数据类型——张量(tensor),张量即为n维数组。具有一个轴的张量对应数学上的向量(vector); 具有两个轴的张量对应数学上的矩阵(matrix)。
张量的常用操作:
x = torch.arange(12) //创建行向量
x.shape //访问张量形状
x.numel() //张量中元素总数
X = x.reshape(3, 4) //改变张量的形状
torch.zeros((2, 3, 4)) //创建形状为(2,3,4)的全0张量
torch.ones((2, 3, 4)) //创建形状为(2,3,4)的全1张量
torch.randn(3, 4) //元素从均值为0、标准差为1的标准高斯分布(正态分布)中随机采样
torch.tensor([[2, 1, 4, 3], [1, 2, 3, 4], [4, 3, 2, 1]]) //嵌套列表为张量中的每个元素赋值
张量的索引和切片:
与任何Python数组一样:第一个元素的索引是0,最后一个元素索引是-1; 可以指定范围以包含第一个元素和最后一个之前的元素。
(二)数据预处理
接着对数据进行预处理,通常接收到的数据文件格式为csv
csv文件的创建和写入:
import os
os.makedirs(os.path.join('..', 'data'), exist_ok=True)
data_file = os.path.join('..', 'data', 'house_tiny.csv')
with open(data_file, 'w') as f:
f.write('NumRooms,RoofType,Price\n')
f.write('NA,NA,127500\n')
f.write('2,NA,106000\n')
f.write('4,Slate,178100\n')
f.write('NA,NA,140000\n')
读取csv文件:read_csv
import pandas as pd
data = pd.read_csv(data_file)
数据的分割:.iloc
inputs , outputs = data.iloc[: , 0:2] , data.iloc[: , 2]
遇到的问题:
(1)写csv文件的代码开始是将所有的数据和内容放在一起,使用一个f.write(''' ''')实现的,运行后发现第0列的NA没有表示为NaN,每行分开写之后显示为NaN。
(2)可能由于python版本更新,在求均值操作中需要加上numeric_only=True,否则也会报错。
inputs = inputs.fillna(inputs.mean(numeric_only=True))
(3)get_dummies结果显示True和False,转换为0和1
inputs = pd.get_dummies(inputs, dummy_na=True ,dtype=int)