其他分享
首页 > 其他分享> > 总结2(9.13-9.19)

总结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]]))

      由于ab分别是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