总结2(9.13-9.19)
作者:互联网
开学第二周,本周除了对常规课程的学习,我主要完成了李沐深度学习0-5课的学习,并完成了相关的编程作业题。以下是我的总结和作业题代码。
一、数据操作作业题
张量:表示由一个数值组成的数组,这个数组可能有多个维度,可以用坐标系表示,tensor。
广播机制:当张量的形状不同时,仍然可以仍然可以通过调用广播机制来执行按元素操作。
import torch
a = torch.arange(3).reshape((3, 1))
b = torch.arange(2).reshape((1, 2))
a, b,a+b
(tensor([[0],
[1],
[2]]),
tensor([[0, 1]]),
tensor([[0, 1],
[1, 2],
[2, 3]]))
由于a
和b
分别是3×1和1×2矩阵,如果我们让它们相加,它们的形状不匹配。我们将两个矩阵广播为一个更大的3×2矩阵,然后再按元素相加。
1.1 运行本节中的代码。将本节中的条件语句 X == Y 更改为 X < Y 或 X > Y,然后看看你可以得到什么样的张量。
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]])
X,Y,X<Y,X>Y
运行结果:
(tensor([[ 0., 1., 2., 3.],
[ 4., 5., 6., 7.],
[ 8., 9., 10., 11.]]),
tensor([[2., 1., 4., 3.],
[1., 2., 3., 4.],
[4., 3., 2., 1.]]),
tensor([[ True, False, True, False],
[False, False, False, False],
[False, False, False, False]]),
tensor([[False, False, False, False],
[ True, True, True, True],
[ True, True, True, True]]))
1.2 用其他形状(例如三维张量)替换广播机制中按元素操作的两个张量。结果是否与预期相同?
a = torch.arange(3).reshape((1,1,3))
b = torch.arange(2).reshape((2,1,1))
a, b,a+b
运行结果:
(tensor([[[0, 1, 2]]]),
tensor([[[0]],
[[1]]]),
tensor([[[0, 1, 2]],
[[1, 2, 3]]]))
注意:广播时,从尾部维度开始,满足尺寸大小相等或其中一个为1或其中一个不存在。
二、 数据预处理作业题
os.path.join()函数用于路径拼接文件路径
.
表示当前目录..
表示当前目录的上一级目录。./
表示当前目录下的某个文件或文件夹,视后面跟着的名字而定../
表示当前目录上一级目录的文件或文件夹,视后面跟着的名字而定。
创建包含更多行和列的原始数据集。
2.1 删除缺失值最多的列。
##创建数据
import os
import pandas as pd
os.makedirs(os.path.join('.','test'),exist_ok=True)
test_file=os.path.join('.','test','testdata.csv')
with open(test_file,'w') as t:
t.write("Height,Weight,Sex,Year\n")
t.write("190,78,male,20\n")
t.write("185,70,male,25\n")
t.write("NA,NA,female,33\n")
t.write("178,NA,NA,35\n")
data=pd.read_csv(test_file)
print(data)
运行结果:
Height Weight Sex Year
0 190.0 78.0 male 20
1 185.0 70.0 male 25
2 NaN NaN female 33
3 178.0 NaN NaN 35
#参考https://blog.csdn.net/qq_42890800/article/details/115287227
c_list = data.count() ##计算每列数据有效值
min_loc, mini, i = 0, 10, 0 ##分别表示有效值数量最少的列,最小的有效值数量,i是第几列
for c in c_list: ##找出数据有效值最少的一列
if c < mini:
min_loc = i
mini = c
i += 1
del data[c_list.index[min_loc]]##删除这一列数据
data
运行结果:
Height Sex Year
0 190.0 male 20
1 185.0 male 25
2 NaN female 33
3 178.0 NaN 35
2.2将预处理后的数据集转换为张量格式。
data = data.fillna(data.mean()) #缺失数据用均值代替
data = pd.get_dummies(data, dummy_na=True)##将“NaN”视为一个类别0/1
data
运行结果:
Height Year Sex_female Sex_male Sex_nan
0 190.000000 20 0 1 0
1 185.000000 25 0 1 0
2 184.333333 33 1 0 0
3 178.000000 35 0 0 1
data = torch.tensor(data.values)##转化为tensor
data
运行结果:
tensor([[190.0000, 20.0000, 0.0000, 1.0000, 0.0000],
[185.0000, 25.0000, 0.0000, 1.0000, 0.0000],
[184.3333, 33.0000, 1.0000, 0.0000, 0.0000],
[178.0000, 35.0000, 0.0000, 0.0000, 1.0000]],
dtype=torch.float64)
标签:总结,False,tensor,9.19,True,torch,9.13,0.0000,data 来源: https://blog.csdn.net/xyjaixuexi/article/details/120384179