200_深度学习的地基:PyTorch 数据操作与 Pandas 预处理实战

在机器学习中,N 维数组(Tensor) 是最核心的数据结构。无论是图像、语音还是文本,最终都会转化为数组进行计算。本篇将从 Tensor 的基本操作出发,带你走进数据预处理的真实世界。

1. N 维数组:神经网络的语言

N 维数组(在 PyTorch 中称为 Tensor)是存储和变换数据的核心工具。

  • 0维:标量(Scalar),如一个数字。
  • 1维:向量(Vector),如特征列表。
  • 2维:矩阵(Matrix),如一张灰度图或一个表格。
  • 3维及以上:张量(Tensor),如彩色图片(宽、高、通道)。

2. 核心代码:张量的创建与计算

文件展示了 PyTorch 中最常用的几种 Tensor 操作方法:

Python

复制代码
import torch

# 1. 创建 Tensor
x = torch.arange(12) # 创建 0-11 的一维张量
print(x.shape)      # 查看形状:torch.Size([12])
print(x.numel())    # 查看元素总数:12

# 2. 改变形状 (Reshape)
X = x.reshape(3, 4) # 变为 3 行 4 列的矩阵

# 3. 特殊张量
torch.zeros((2, 3, 4)) # 全 0 张量
torch.ones((2, 3, 4))  # 全 1 张量
torch.randn(3, 4)      # 标准正态分布随机张量

# 4. 张量连接 (Cat)
Y = torch.tensor([[2, 1, 4, 3], [1, 2, 3, 4], [4, 3, 2, 1]])
# 按行连接 (dim=0) 或按列连接 (dim=1)
torch.cat((X, Y), dim=0)

3. 数据预处理:从 CSV 到 Tensor

在现实任务中,数据通常存储在 CSV 文件中,且往往存在缺失值(NaN) 。文件演示了如何利用 pandas 库进行数据清洗。

实战:处理房屋数据

假设我们有一个简单的房屋数据集,其中包含缺失值:

Python

复制代码
import os
import pandas as pd

# 1. 创建虚拟数据集
os.makedirs(os.path.join('.', '01_Data'), exist_ok=True)
data_file = os.path.join('.', '01_Data', '01_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')

# 2. 读取数据
data = pd.read_csv(data_file)

# 3. 处理缺失值:对数值型列用均值填充
inputs, outputs = data.iloc[:, 0:2], data.iloc[:, 2]
inputs = inputs.fillna(inputs.mean())

# 4. 处理类别型缺失值:独热编码 (One-Hot Encoding)
# dummy_na=True 会将 NaN 也作为一个类别处理
inputs = pd.get_dummies(inputs, dummy_na=True)
print(inputs)

# 5. 转换为 PyTorch Tensor
X, y = torch.tensor(inputs.values), torch.tensor(outputs.values)
print(X)

4. 关键技巧解析

广播机制 (Broadcasting Mechanism)

当两个形状不同的 Tensor 进行按元素运算时,PyTorch 会触发广播机制:

  • 自动复制行或列,使两个 Tensor 形状一致后再相加。
  • 条件:至少有一个维度是 1,且其他维度兼容。

内存节省

在进行大规模运算时,频繁的赋值(如 Y = X + Y)会开辟新内存。

  • 建议 :使用原地操作(In-place operation),如 Y += X 或 Y[:] = X + Y,以减少内存开销。

5. 总结:数据处理的闭环

通过对该文件的分析,我们可以梳理出进入模型前的标准步骤:

  1. 读取:用 Pandas 加载原始数据。
  2. 清洗:填充数值型缺失值,转换类别型数据。
  3. 转换:将 Pandas 的 DataFrame 转换为 Torch Tensor。
  4. 计算:利用 Tensor 的高效算子进行前向计算。

💡 学习小结

"Garbage in, Garbage out." 预处理的好坏直接决定了模型的上限。熟练掌握 torch 操作和 pandas 转换,是每一位算法工程师的必修课。

相关推荐
张彦峰ZYF1 小时前
越过边界之前:Reward Seeker 实验如何改写智能体安全的时间逻辑
人工智能·ai agent·anthropic·智能体安全·reward seeker·“控制评价过程”泛化跨领域策略·envbom
拓恒技术1 小时前
无人机巡检AI算法的工程化落地:从需求到交付的5个核心环节
人工智能·算法·无人机
罗西的思考3 小时前
AI 时代的 “房谋杜断”:如何培养能力、品味与判断力
人工智能·算法·机器学习
在世修行4 小时前
智学文枢:页面切换与跨页数据预填
python·桌面应用·signal·1024程序员节·pyside·跨页跳转·状态预填
字节跳动视频云技术团队4 小时前
720P 直升 8K,解密 2026 抖音美好奇妙夜巨幕超分黑科技
人工智能·音视频开发
2601_962885724 小时前
如何用 Python 把 K 线重采样成任意周期?
开发语言·python
打工仔折腾 AI4 小时前
在 Ubuntu ARM64 部署 Q1 V3.0 MuJoCo 模型:加载、单步推理与执行器响应解析
linux·运维·人工智能·python·深度学习·ubuntu·性能优化
逐米时代4 小时前
从试点验证到协同深化:制造业AI转型三年路线图设计方法
人工智能
GlobalInfo5 小时前
全球及中国风电叶片检测机器人行业研究报告(2026版):市场现状、行业前景与占有率分析
运维·网络·人工智能·机器人
信誓旦旦的程序猿5 小时前
【Python量化实战宝典 #21】北向资金跟随手册:聪明钱择时信号(Python 可跑)
python·1024程序员节·股票数据api·股票数据api接口·股票api数据接口·股票量化数据api·股票量化数据接口