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

作者:沙与沫2025.10.15 19:27浏览量:2

简介:本文提供Python机器学习与深度学习核心代码速查指南,涵盖Scikit-learn、TensorFlow/PyTorch关键操作,包含数据预处理、模型构建、训练评估全流程代码示例,助力开发者快速实现AI项目落地。

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

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

1. 数据预处理核心操作

数据清洗是机器学习的第一步,Pandas库提供了高效的数据处理工具:

  1. import pandas as pd
  2. import numpy as np
  3. # 缺失值处理
  4. df = pd.DataFrame({'A': [1,2,np.nan], 'B': [5,np.nan,np.nan]})
  5. df_filled = df.fillna(method='ffill') # 前向填充
  6. df_dropped = df.dropna(thresh=2) # 保留非空值≥2的行
  7. # 特征缩放
  8. from sklearn.preprocessing import StandardScaler, MinMaxScaler
  9. scaler = StandardScaler()
  10. X_scaled = scaler.fit_transform([[1,2], [3,4], [5,6]]) # 标准化
  11. mm_scaler = MinMaxScaler(feature_range=(0,1))
  12. X_mm = mm_scaler.fit_transform([[10,20], [30,40]]) # 归一化

2. 特征工程关键方法

特征转换直接影响模型性能:

  1. from sklearn.preprocessing import OneHotEncoder, LabelEncoder
  2. from sklearn.feature_extraction.text import TfidfVectorizer
  3. # 类别编码
  4. le = LabelEncoder()
  5. y_encoded = le.fit_transform(['cat','dog','cat'])
  6. # 独热编码
  7. ohe = OneHotEncoder(sparse=False)
  8. X_ohe = ohe.fit_transform([[0], [1], [2]]) # 需先数值编码
  9. # 文本特征提取
  10. corpus = ['This is good', 'That is bad']
  11. tfidf = TfidfVectorizer()
  12. X_tfidf = tfidf.fit_transform(corpus).toarray()

3. 经典模型实现

Scikit-learn提供了标准化建模接口:

  1. from sklearn.linear_model import LogisticRegression
  2. from sklearn.ensemble import RandomForestClassifier
  3. from sklearn.model_selection import train_test_split
  4. # 数据划分
  5. X_train, X_test, y_train, y_test = train_test_split(
  6. X, y, test_size=0.3, random_state=42)
  7. # 逻辑回归
  8. lr = LogisticRegression(penalty='l2', C=1.0)
  9. lr.fit(X_train, y_train)
  10. y_pred = lr.predict(X_test)
  11. # 随机森林
  12. rf = RandomForestClassifier(n_estimators=100, max_depth=5)
  13. rf.fit(X_train, y_train)
  14. print(rf.feature_importances_) # 特征重要性

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

1. TensorFlow基础操作

TensorFlow 2.x的即时执行模式简化了开发流程:

  1. import tensorflow as tf
  2. from tensorflow.keras import layers, models
  3. # 张量操作
  4. a = tf.constant([[1,2], [3,4]])
  5. b = tf.constant([[5,6], [7,8]])
  6. c = tf.matmul(a, b) # 矩阵乘法
  7. # 模型构建
  8. model = models.Sequential([
  9. layers.Dense(64, activation='relu', input_shape=(784,)),
  10. layers.Dropout(0.2),
  11. layers.Dense(10, activation='softmax')
  12. ])
  13. model.compile(optimizer='adam',
  14. loss='sparse_categorical_crossentropy',
  15. metrics=['accuracy'])
  16. # 自定义训练循环
  17. @tf.function
  18. def train_step(x, y):
  19. with tf.GradientTape() as tape:
  20. predictions = model(x)
  21. loss = loss_fn(y, predictions)
  22. gradients = tape.gradient(loss, model.trainable_variables)
  23. optimizer.apply_gradients(zip(gradients, model.trainable_variables))

2. PyTorch实现要点

PyTorch的动态计算图提供了更大灵活性:

  1. import torch
  2. import torch.nn as nn
  3. import torch.optim as optim
  4. # 神经网络定义
  5. class Net(nn.Module):
  6. def __init__(self):
  7. super(Net, self).__init__()
  8. self.fc1 = nn.Linear(784, 128)
  9. self.fc2 = nn.Linear(128, 10)
  10. def forward(self, x):
  11. x = torch.relu(self.fc1(x))
  12. x = self.fc2(x)
  13. return x
  14. # 数据加载
  15. from torch.utils.data import DataLoader, TensorDataset
  16. dataset = TensorDataset(torch.randn(100,784), torch.randint(0,10,(100,)))
  17. loader = DataLoader(dataset, batch_size=32, shuffle=True)
  18. # 训练过程
  19. model = Net()
  20. criterion = nn.CrossEntropyLoss()
  21. optimizer = optim.Adam(model.parameters(), lr=0.001)
  22. for epoch in range(10):
  23. for inputs, labels in loader:
  24. optimizer.zero_grad()
  25. outputs = model(inputs)
  26. loss = criterion(outputs, labels)
  27. loss.backward()
  28. optimizer.step()

三、进阶技巧与优化

1. 模型调优方法

  1. from sklearn.model_selection import GridSearchCV, RandomizedSearchCV
  2. # 网格搜索
  3. param_grid = {
  4. 'C': [0.1, 1, 10],
  5. 'penalty': ['l1', 'l2']
  6. }
  7. grid_search = GridSearchCV(LogisticRegression(), param_grid, cv=5)
  8. grid_search.fit(X_train, y_train)
  9. # 随机搜索
  10. from scipy.stats import uniform
  11. param_dist = {
  12. 'n_estimators': range(50,200),
  13. 'max_depth': [3,5,7,None],
  14. 'learning_rate': uniform(0.01, 0.2)
  15. }
  16. random_search = RandomizedSearchCV(
  17. RandomForestClassifier(), param_distributions=param_dist, n_iter=20)

2. 模型部署关键代码

  1. # TensorFlow模型保存
  2. model.save('my_model.h5') # 完整模型保存
  3. converter = tf.lite.TFLiteConverter.from_keras_model(model)
  4. tflite_model = converter.convert() # 转换为TFLite格式
  5. # PyTorch模型保存
  6. torch.save(model.state_dict(), 'model_weights.pth') # 仅保存参数
  7. loaded_model = Net()
  8. loaded_model.load_state_dict(torch.load('model_weights.pth'))
  9. # ONNX格式转换
  10. dummy_input = torch.randn(1, 784)
  11. torch.onnx.export(model, dummy_input, "model.onnx")

四、实用工具推荐

  1. 数据可视化:Matplotlib/Seaborn进行特征分布分析

    1. import seaborn as sns
    2. sns.pairplot(df[['feature1','feature2','target']], hue='target')
  2. 模型解释:SHAP值解释预测结果

    1. import shap
    2. explainer = shap.TreeExplainer(rf)
    3. shap_values = explainer.shap_values(X_test)
    4. shap.summary_plot(shap_values, X_test)
  3. 自动化机器学习:PyCaret快速原型开发

    1. from pycaret.classification import *
    2. clf = setup(data=df, target='target')
    3. best_model = compare_models()

五、最佳实践建议

  1. 代码组织:采用模块化设计,将数据预处理、模型训练、评估分离为不同模块
  2. 版本控制:使用MLflow跟踪实验参数和结果

    1. import mlflow
    2. mlflow.start_run()
    3. mlflow.log_param("learning_rate", 0.01)
    4. mlflow.log_metric("accuracy", 0.95)
  3. 性能优化

    • 使用Numba加速数值计算
    • 采用Dask处理大规模数据集
    • 利用CUDA加速GPU计算
  4. 调试技巧

    • 使用TensorBoard可视化训练过程
    • 通过PyTorch的torch.autograd.set_detect_anomaly(True)捕获梯度异常
    • 使用Scikit-learn的check_estimator验证自定义模型

本速查表覆盖了从数据预处理到模型部署的全流程核心代码,建议开发者

  1. 建立个人代码库,分类整理常用代码片段
  2. 结合Jupyter Notebook创建可交互的代码模板
  3. 定期更新知识库以适配框架新版本特性
  4. 在实际项目中验证代码片段的适用性

通过系统化整理和实战演练,这些代码模式将显著提升AI开发效率,帮助开发者更专注于业务逻辑的实现而非底层技术细节。