【动手学深度学习】2.2. 数据预处理


目录

    • 2.2. 数据预处理
      • 1)读取数据集
      • 2)处理缺失值
      • 3)转换为张量格式
      • 4)小结


.

2.2. 数据预处理

本节我们将简要介绍使用Pythonpandas预处理原始数据,并将原始数据转换为张量格式的步骤。

.

1)读取数据集

创建CSV文件:生成包含三列(NumRooms, Alley, Price)的模拟数据并保存。

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,Alley,Price\n')
    f.write('NA,Pave,127500\n')
    f.write('2,NA,106000\n')
    f.write('4,NA,178100\n')
    f.write('NA,NA,140000\n')

加载数据:使用 pandas 读取 CSV 文件。

import pandas as pd
data = pd.read_csv(data_file)
print(data)

输出

   NumRooms Alley   Price
0       NaN  Pave  127500
1       2.0   NaN  106000
2       4.0   NaN  178100
3       NaN   NaN  140000

.

2)处理缺失值

对数值缺失值用均值插值,对类别缺失值编码为独立特征。

分离输入与输出

inputs, outputs = data.iloc[:, 0:2], data.iloc[:, 2]

填充数值缺失值:用列均值填充 NumRoomsNaN

inputs = inputs.fillna(inputs.mean())
print(inputs)

# 输出:
   NumRooms Alley
0       3.0  Pave
1       2.0   NaN
2       4.0   NaN
3       3.0   NaN

编码类别缺失值:将 Alley 列的 NaN 转为独立类别

inputs = pd.get_dummies(inputs, dummy_na=True)
print(inputs)

# 输出:
   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

.

3)转换为张量格式

最终将数据转为张量格式,适配后续模型训练。

import torch
X = torch.tensor(inputs.to_numpy(dtype=float))
y = torch.tensor(outputs.to_numpy(dtype=float))
print("X:", X)
print("y:", y)

# 输出:
X: tensor([[3., 1., 0.],
           [2., 0., 1.],
           [4., 0., 1.],
           [3., 0., 1.]], dtype=torch.float64)
y: tensor([127500., 106000., 178100., 140000.], dtype=torch.float64)

.

4)小结

  • pandas软件包是Python中常用的数据分析工具中,pandas可以与张量兼容。

  • pandas处理缺失的数据时,我们可根据情况选择用插值法和删除法。

.


声明:资源可能存在第三方来源,若有侵权请联系删除!

你可能感兴趣的:(《动手学深度学习》,深度学习,人工智能)