Python机器学习与深度学习速查指南:代码精要与实战技巧
2025.09.19 17:05浏览量:0简介:本文为Python机器学习与深度学习开发者提供一份速查表,涵盖核心库(NumPy、Pandas、Scikit-learn、TensorFlow/Keras、PyTorch)的常用代码片段与实战技巧,帮助快速解决数据预处理、模型构建、训练优化等关键问题。
一、核心库与基础操作速查
1.1 NumPy数组操作
NumPy是机器学习的基础计算库,其核心功能包括多维数组创建、数学运算和线性代数操作。
import numpy as np
# 创建数组
arr = np.array([[1, 2], [3, 4]])
zeros = np.zeros((2, 3)) # 全零数组
ones = np.ones((2, 2)) # 全1数组
# 数组运算
arr_sum = np.sum(arr) # 求和
arr_mean = np.mean(arr, axis=0) # 按列求均值
# 矩阵乘法
matrix_a = np.array([[1, 2], [3, 4]])
matrix_b = np.array([[5, 6], [7, 8]])
result = np.dot(matrix_a, matrix_b) # 矩阵乘法
应用场景:在特征工程中,NumPy用于数据标准化(如Z-Score)、多项式特征生成及矩阵分解。
1.2 Pandas数据预处理
Pandas提供高效的数据结构(DataFrame)和操作接口,是数据清洗的核心工具。
import pandas as pd
# 读取数据
df = pd.read_csv('data.csv')
# 数据清洗
df_clean = df.dropna() # 删除缺失值
df_filled = df.fillna(df.mean()) # 用均值填充缺失值
# 特征选择与转换
df['new_feature'] = df['feature1'] * df['feature2'] # 创建新特征
df_scaled = (df - df.mean()) / df.std() # 标准化
实战技巧:使用df.describe()
快速查看数据分布,结合df.corr()
分析特征相关性。
二、Scikit-learn机器学习速查
2.1 监督学习模型
Scikit-learn提供从线性回归到集成模型的完整实现,代码简洁且易于扩展。
from sklearn.linear_model import LinearRegression, LogisticRegression
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
# 数据分割
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
# 线性回归
lr = LinearRegression()
lr.fit(X_train, y_train)
y_pred = lr.predict(X_test)
# 随机森林分类
rf = RandomForestClassifier(n_estimators=100)
rf.fit(X_train, y_train)
accuracy = rf.score(X_test, y_test)
调参建议:通过GridSearchCV
进行超参数优化,例如:
from sklearn.model_selection import GridSearchCV
param_grid = {'n_estimators': [50, 100, 200]}
grid_search = GridSearchCV(RandomForestClassifier(), param_grid)
grid_search.fit(X_train, y_train)
best_params = grid_search.best_params_
2.2 无监督学习与评估
聚类与降维是探索性数据分析的关键步骤。
from sklearn.cluster import KMeans
from sklearn.decomposition import PCA
from sklearn.metrics import silhouette_score
# K-Means聚类
kmeans = KMeans(n_clusters=3)
clusters = kmeans.fit_predict(X)
score = silhouette_score(X, clusters) # 轮廓系数评估
# PCA降维
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X)
可视化技巧:使用matplotlib
绘制PCA结果:
import matplotlib.pyplot as plt
plt.scatter(X_pca[:, 0], X_pca[:, 1], c=clusters)
plt.xlabel('PCA1')
plt.ylabel('PCA2')
plt.show()
三、深度学习框架速查
3.1 TensorFlow/Keras模型构建
Keras提供高级API,简化神经网络定义与训练流程。
import tensorflow as tf
from tensorflow.keras import layers, models
# 定义模型
model = models.Sequential([
layers.Dense(64, activation='relu', input_shape=(784,)),
layers.Dropout(0.2),
layers.Dense(10, activation='softmax')
])
# 编译与训练
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
model.fit(X_train, y_train, epochs=10, batch_size=32)
优化技巧:使用EarlyStopping
防止过拟合:
from tensorflow.keras.callbacks import EarlyStopping
early_stop = EarlyStopping(monitor='val_loss', patience=3)
model.fit(..., callbacks=[early_stop])
3.2 PyTorch动态计算图
PyTorch以动态图机制和灵活性著称,适合研究型项目。
import torch
import torch.nn as nn
import torch.optim as optim
# 定义模型
class Net(nn.Module):
def __init__(self):
super(Net, self).__init__()
self.fc1 = nn.Linear(784, 64)
self.fc2 = nn.Linear(64, 10)
def forward(self, x):
x = torch.relu(self.fc1(x))
x = self.fc2(x)
return x
# 训练循环
model = Net()
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.parameters())
for epoch in range(10):
optimizer.zero_grad()
outputs = model(X_train)
loss = criterion(outputs, y_train)
loss.backward()
optimizer.step()
GPU加速:通过model.to('cuda')
将模型移至GPU。
四、实战技巧与性能优化
4.1 数据增强与正则化
- 图像数据增强(TensorFlow示例):
from tensorflow.keras.preprocessing.image import ImageDataGenerator
datagen = ImageDataGenerator(rotation_range=20, width_shift_range=0.2)
augmented_images = datagen.flow(X_train, y_train)
- L2正则化(PyTorch示例):
from torch.nn import L2Loss
loss_fn = nn.CrossEntropyLoss() + 0.01 * L2Loss() # 权重衰减
4.2 模型部署与序列化
- Scikit-learn模型保存:
import joblib
joblib.dump(model, 'model.pkl')
loaded_model = joblib.load('model.pkl')
- TensorFlow模型导出:
model.save('my_model.h5') # HDF5格式
# 或使用SavedModel格式
tf.saved_model.save(model, 'saved_model_dir')
五、常见问题与解决方案
梯度消失/爆炸:
- 使用
BatchNormalization
层(Keras)或nn.BatchNorm1d
(PyTorch)。 - 采用梯度裁剪(
tf.clip_by_value
或torch.nn.utils.clip_grad_norm_
)。
- 使用
类别不平衡:
- 在Scikit-learn中使用
class_weight='balanced'
。 - 在深度学习中采用加权损失函数(如
class_weight
参数)。
- 在Scikit-learn中使用
训练速度慢:
- 减小
batch_size
或使用混合精度训练(tf.keras.mixed_precision
)。 - 启用数据并行(
tf.distribute.MirroredStrategy
)。
- 减小
六、总结与扩展资源
本文覆盖了Python机器学习与深度学习的核心代码片段,从基础库操作到模型部署。建议开发者结合以下资源深入学习:
- 书籍:《Hands-On Machine Learning with Scikit-Learn, Keras & TensorFlow》
- 文档:Scikit-learn官方示例库、TensorFlow教程
- 社区:Stack Overflow、Kaggle竞赛讨论区
通过速查表与实战技巧的结合,开发者可快速解决项目中的技术痛点,提升开发效率。
发表评论
登录后可评论,请前往 登录 或 注册