logo

Python机器学习与深度学习速查宝典:从基础到进阶的代码指南

作者:carzy2025.09.19 17:05浏览量:0

简介:本文为Python开发者提供机器学习与深度学习的核心代码速查表,涵盖Scikit-learn、TensorFlow/Keras、PyTorch三大框架,包含数据预处理、模型构建、训练调优等全流程示例,助力快速实现AI项目落地。

一、机器学习基础代码速查

1.1 数据预处理核心模块

Scikit-learn数据标准化

  1. from sklearn.preprocessing import StandardScaler
  2. scaler = StandardScaler()
  3. X_train_scaled = scaler.fit_transform(X_train) # 训练集拟合+转换
  4. X_test_scaled = scaler.transform(X_test) # 测试集直接转换

标准化是消除特征量纲影响的关键步骤,尤其适用于基于距离的算法(如SVM、KNN)。需注意测试集必须使用训练集的scaler参数,避免数据泄露。

类别特征编码

  1. from sklearn.preprocessing import OneHotEncoder, LabelEncoder
  2. # 独热编码(适用于非序数类别)
  3. encoder = OneHotEncoder(sparse_output=False)
  4. X_cat_encoded = encoder.fit_transform(X_cat.reshape(-1,1))
  5. # 标签编码(适用于序数类别)
  6. label_encoder = LabelEncoder()
  7. y_encoded = label_encoder.fit_transform(y)

独热编码会显著增加稀疏矩阵维度,对于高基数类别特征可考虑目标编码(Target Encoding)等进阶方法。

1.2 经典模型实现

线性回归与正则化

  1. from sklearn.linear_model import LinearRegression, Ridge, Lasso
  2. # 普通线性回归
  3. lr = LinearRegression().fit(X_train, y_train)
  4. # L2正则化(岭回归)
  5. ridge = Ridge(alpha=1.0).fit(X_train, y_train)
  6. # L1正则化(Lasso回归)
  7. lasso = Lasso(alpha=0.1).fit(X_train, y_train)

正则化参数alpha控制模型复杂度,可通过交叉验证选择最优值。Lasso在特征选择场景下具有天然优势。

树模型集成方法

  1. from sklearn.ensemble import RandomForestClassifier, GradientBoostingClassifier
  2. # 随机森林
  3. rf = RandomForestClassifier(n_estimators=100, max_depth=5)
  4. rf.fit(X_train, y_train)
  5. # 梯度提升树
  6. gbm = GradientBoostingClassifier(n_estimators=200, learning_rate=0.1)
  7. gbm.fit(X_train, y_train)

树模型对异常值不敏感,但需注意max_depth、min_samples_split等参数调优。对于大规模数据,XGBoost/LightGBM可提升训练效率。

二、深度学习框架核心代码

2.1 TensorFlow/Keras速查

全连接网络构建

  1. import tensorflow as tf
  2. from tensorflow.keras import layers, models
  3. model = models.Sequential([
  4. layers.Dense(64, activation='relu', input_shape=(784,)),
  5. layers.Dropout(0.2),
  6. layers.Dense(10, activation='softmax')
  7. ])
  8. model.compile(optimizer='adam',
  9. loss='sparse_categorical_crossentropy',
  10. metrics=['accuracy'])
  11. model.fit(X_train, y_train, epochs=10, batch_size=32)

关键点:

  • 输入shape需与数据维度匹配
  • Dropout层防止过拟合,典型值0.2-0.5
  • 对于多分类问题,输出层激活函数使用softmax

CNN图像分类

  1. model = models.Sequential([
  2. layers.Conv2D(32, (3,3), activation='relu', input_shape=(28,28,1)),
  3. layers.MaxPooling2D((2,2)),
  4. layers.Conv2D(64, (3,3), activation='relu'),
  5. layers.Flatten(),
  6. layers.Dense(64, activation='relu'),
  7. layers.Dense(10, activation='softmax')
  8. ])

CNN设计原则:

  • 浅层提取边缘特征,深层提取抽象特征
  • 常用3×3卷积核,步长默认为1
  • 池化层通常采用2×2最大池化

2.2 PyTorch实现范式

动态计算图示例

  1. import torch
  2. import torch.nn as nn
  3. import torch.optim as optim
  4. class Net(nn.Module):
  5. def __init__(self):
  6. super(Net, self).__init__()
  7. self.fc1 = nn.Linear(784, 128)
  8. self.fc2 = nn.Linear(128, 10)
  9. def forward(self, x):
  10. x = torch.relu(self.fc1(x))
  11. x = self.fc2(x)
  12. return x
  13. model = Net()
  14. criterion = nn.CrossEntropyLoss()
  15. optimizer = optim.Adam(model.parameters(), lr=0.001)
  16. # 训练循环
  17. for epoch in range(10):
  18. optimizer.zero_grad()
  19. outputs = model(X_train_torch)
  20. loss = criterion(outputs, y_train_torch)
  21. loss.backward()
  22. optimizer.step()

PyTorch核心优势:

  • 动态图机制支持灵活模型设计
  • 手动梯度清零(zero_grad())避免梯度累积
  • 支持GPU加速只需model.to(‘cuda’)

三、进阶技巧与最佳实践

3.1 模型调优策略

学习率调度

  1. # TensorFlow学习率衰减
  2. lr_schedule = tf.keras.optimizers.schedules.ExponentialDecay(
  3. initial_learning_rate=1e-2,
  4. decay_steps=1000,
  5. decay_rate=0.9)
  6. optimizer = tf.keras.optimizers.Adam(learning_rate=lr_schedule)
  7. # PyTorch余弦退火
  8. scheduler = optim.lr_scheduler.CosineAnnealingLR(optimizer, T_max=50)

常见调度策略:

  • 指数衰减:适合稳定收敛阶段
  • 余弦退火:帮助跳出局部最优
  • 预热学习率:防止训练初期震荡

3.2 分布式训练示例

TensorFlow多GPU训练

  1. strategy = tf.distribute.MirroredStrategy()
  2. with strategy.scope():
  3. model = create_model() # 在strategy作用域内创建模型
  4. model.compile(...)
  5. model.fit(train_dataset, epochs=10)

PyTorch数据并行

  1. model = nn.DataParallel(model).cuda() # 自动使用所有可见GPU
  2. # 需确保batch_size是GPU数量的整数倍

分布式训练要点:

  • 同步更新需处理梯度聚合
  • 通信开销随GPU数量增加而增大
  • 批大小(batch_size)需相应调整

四、生产环境部署代码

4.1 模型导出与加载

TensorFlow SavedModel格式

  1. # 导出模型
  2. model.save('path/to/model')
  3. # 加载模型
  4. loaded_model = tf.keras.models.load_model('path/to/model')

PyTorch TorchScript

  1. # 跟踪模式导出
  2. traced_script_module = torch.jit.trace(model, example_input)
  3. traced_script_module.save("model.pt")
  4. # 加载模型
  5. loaded_model = torch.jit.load("model.pt")

模型导出注意事项:

  • 包含自定义层时需注册
  • 检查输入输出shape是否匹配
  • 量化模型可减小体积但可能损失精度

4.2 ONNX跨框架转换

  1. # PyTorch转ONNX
  2. dummy_input = torch.randn(1, 784)
  3. torch.onnx.export(model, dummy_input, "model.onnx")
  4. # TensorFlow转ONNX
  5. import tf2onnx
  6. model_proto, _ = tf2onnx.convert.from_keras(model, output_path="model.onnx")

ONNX优势:

  • 跨框架部署(支持TensorRT、OpenVINO等)
  • 硬件加速优化
  • 版本兼容性管理

本速查表覆盖了从数据预处理到生产部署的全流程代码模板,开发者可根据具体场景调整参数和结构。建议结合官方文档进行深度学习,例如TensorFlow的tf.keras.utils.plot_model()可视化工具和PyTorch的torchsummary库可辅助模型调试。实际应用中需特别注意数据泄露问题,确保在交叉验证或训练测试分割时严格遵循时间顺序(针对时序数据)或独立同分布原则。

相关文章推荐

发表评论