安装jupyter
pip install jupyter d2l torchvision下载jupyter
jupyter是一款Python编程语言或其他编程语言的,交互式集成开发环境
- 如果要安装《动手学深度学习》ppt的话进入github.com/d2l-ai/d2l-…
git clone到电脑本地,并用jupyter notebook打开
Jupyter Notebook是以网页的形式打开,可以在网页页面中直接编写代码和运行代码,代码的运行结果也会直接在代码块下显示的程序。如在编程过程中需要编写说明文档,可在同一个页面中直接编写,便于作及时的说明和解释
数据操作
N维数组是机器学习和神经网络的主要数据结构
-
3-d RGB图片; 4-d RGB图片批量
-
创建数据需要
- 形状:例如3✖️4矩阵
- 每个元素的数据类型
- 每个元素的值
-
三维数组:有x,y,z三个平面数组
- int a[1][3][4] = {{{1,2,3,4},{1,2,3,4},{1,2,3,4}}}; x=1表示一个一维数组,y=3表示一个一维数组中有三个一维数组,z=4表示3个一维数组里有四个一维数组
-
访问元素
- 数组[1,2] :第一行第二列
线性代数
- 特征向量:不被矩阵改变方向的向量
- 特征值:对称矩阵总是可以找到特征向量
数组操作
x = torch.arange(12,dtype=torch.float32).reshape(3,4)
y = torch.tensor([[2.0,1,4,3],[1,2,3,4],[4,3,2,1]])
torch.cat((x,y),dim=0),torch.cat((x,y),dim=1)
# dim=0,是在第一个维度合并 , dim=1,是在第二个维度合并
数据处理
以易于机器理解的方式存储数据的文件格式称为机器可读格式。常见的机器可读格式包括:
- CSV(逗号分隔值)
- JSON(javascript对象符号)
- XML(可扩展标记语言)
CSV
- 以列表的格式读取CSV文件
import csv
csvfile = open('./data.csv', 'r')
reader = csv.reader(csvfile)
for row in reader:
print(row)
- 以字典的格式读取
import csv
csvfile = open('./data.csv', 'r')
reader = csv.DictReader(csvfile)
for row in reader:
print(row)
数据的预处理
创建人工数据集
处理缺失项
处理缺失项有两种方法,这里用的是插值法
inputs, outputs = data.iloc[:, 0:2], data.iloc[:, 2] #iloc就是indexlocation
inputs = inputs.fillna(inputs.mean(numeric_only=True)) #填值,mean就是均值
print(inputs)
mean()函数默认为numeric_only=True,也就是仅对数字类型的列生效。但是后面的版本可能会默认为false,这样必须选取数字类型的列或者指定为True才可以使用。因此,我们直接指定为True
输出结果:
补全字符串值
mean函数无法对字符串处理。因此对于inputs中的类别值或离散值,我们将“NaN”视为一个类别。比如RoofType列有"Pave"和“NaN”两个类别,pandas会自动将一列转化为两列,分别命名为“RoofType_Pave”和“RoofType_NaN”,并且转化为的两列中,每一行等于该列对应的类别的取1,否则取0。类似于onehot编码形式
inputs = pd.get_dummies(inputs, dummy_na=True,dtype=int)
print(inputs)
get_dummies方法可以把离散的类别信息转化为onehot编码形式,
dummy_na=True意为是否把nan单独看做一个类别。 dtype=int,将输出的true和false转换成0和1
转换成张量形式
现在数据都是数值,可以转换成张量了
补充:reshape()不会改变地址