2. pytorch数据预处理
- 主要通过pandas预处理
2.1 读取数据集
1 | # 1. 先自己准备一个数据集 |
NumRooms Alley Price
0 NaN Pave 127500
1 2.0 NaN 106000
2 4.0 NaN 178100
3 NaN NaN 14000
2.2 缺失值处理
- 删除
- 插值
2.2.1 数值类型
1 | # 1. 位置索引iloc将data分为输入与输出 |
NumRooms Alley
0 3.0 Pave
1 2.0 NaN
2 4.0 NaN
3 3.0 NaN
2.2.2 类别类型或离散值
- 将NaN视为一个类别,根据这一列类别的个数分出n列,每一列代表一个类别,如果该行的值为该列的类别,则为1,否则为0
1 | inputs=pd.get_dummies(inputs, dummy_na=True) |
NumRooms Alley_Pave Alley_nan
0 3.0 1 0
1 2.0 0 1
2 4.0 0 1
3 3.0 0 1
2.3 转换为张量
- torch.tensor()
1 | import torch |
(tensor([[3., 1., 0.],
[2., 0., 1.],
[4., 0., 1.],
[3., 0., 1.]], dtype=torch.float64),
tensor([127500., 106000., 178100., 14000.], dtype=torch.float64))
练习
- 创建一个更多行和列的数据集
1 | import os |
NumRooms Alley Price test
0 NaN Pave 127500 1
1 2.0 NA 106000 0
2 4.0 NA 178100 0
3 NaN NA 140000 1
4 2.0 Pave 127500 0
- 删除缺失值最多的列
1 | #删除缺失值最多的列 |
NumRooms 2
Alley 0
Price 0
test 0
dtype: int64
NumRooms
Alley Price test
0 Pave 127500 1
1 NA 106000 0
2 NA 178100 0
3 NA 140000 1
4 Pave 127500 0
- 将处理后的数据集转换为张量
1 | #将数据集转换为张量格式 |
Alley Price test
0 Pave 127500 1
1 NA 106000 0
2 NA 178100 0
3 NA 140000 1
4 Pave 127500 0
(5, 3)
Price test Alley_ NA Alley_ Pave Alley_nan
0 127500 1 0 1 0
1 106000 0 1 0 0
2 178100 0 1 0 0
3 140000 1 1 0 0
4 127500 0 0 1 0
tensor([[1.2750e+05, 1.0000e+00, 0.0000e+00, 1.0000e+00, 0.0000e+00],
[1.0600e+05, 0.0000e+00, 1.0000e+00, 0.0000e+00, 0.0000e+00],
[1.7810e+05, 0.0000e+00, 1.0000e+00, 0.0000e+00, 0.0000e+00],
[1.4000e+05, 1.0000e+00, 1.0000e+00, 0.0000e+00, 0.0000e+00],
[1.2750e+05, 0.0000e+00, 0.0000e+00, 1.0000e+00, 0.0000e+00]],
dtype=torch.float64)