关于 machine-learning
使用 PyTorch 和 scikit-learn 构建可复现机器学习流程的技能,涵盖模型选择、评估、调优、可解释性和实验跟踪,适合将笔记本实验整理为规范工作流的从业者。
主要功能
- 01构建 PyTorch 和 scikit-learn 流程
- 02划分训练、验证和测试集
- 03使用 Optuna 调优超参数
- 04通过交叉验证评估模型
- 05使用 SHAP 和特征重要性解释预测
- 06跟踪实验配置、指标和产物
适用场景
- 01开发分类和回归模型
- 02通过交叉验证比较模型
- 03系统地调优模型超参数
- 04为科研或关键业务解释预测结果
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ itallstartedwithaidea/ agent-skills --skill machine-learning安装后在 Claude Code 中输入/machine-learning确认已加载。
详细介绍
机器学习
Agent Skills™ 的一部分,由 googleadsagent.ai™ 提供
描述
机器学习通过 PyTorch 和 scikit-learn 提供端到端的 ML 流水线构建,涵盖模型选择、训练、评估、可解释性、超参数调优和实验跟踪。Agent 构建可复现的 ML 工作流,并遵循软件工程最佳实践:实验版本控制、确定性训练和结果可解释。
从可运行的笔记本到生产级 ML 流水线,差距巨大。这项技能通过强制执行结构化实验管理、恰当的训练集/验证集/测试集划分、分层交叉验证、学习曲线分析和系统化超参数优化,弥合这一差距。Agent 会跟踪每项实验的配置、指标和产物,使任何结果都能在数月后复现。
模型可解释性被视为首要要求,而非可有可无的事后分析。每个模型都附带 SHAP 值、特征重要性排名和部分依赖图,用于解释模型学到了什么,以及它为何做出特定预测。对于科学和业务关键型应用,仅有黑盒预测而没有解释是不够的。
使用场景
- 构建分类或回归模型
- 系统化调优超参数
- 使用 SHAP 或特征重要性解释模型预测
- 为 ML 项目设置实验跟踪
- 通过恰当的交叉验证评估模型性能
- 使用结构化训练循环训练 PyTorch 模型
工作原理
graph TD
A[Dataset] --> B[Train/Val/Test Split]
B --> C[Feature Engineering]
C --> D[Model Selection]
D --> E[Hyperparameter Tuning: Optuna]
E --> F[Cross-Validation]
F --> G[Best Model Training]
G --> H[Evaluation on Test Set]
H --> I[Interpretability: SHAP]
I --> J[Experiment Logging]
J --> K[Model Registry]
该流水线严格区分调优(使用验证数据)和最终评估(使用留出的测试数据)。测试集只会被使用一次,避免因重复评估而导致信息泄漏。
实现
import torch
import torch.nn as nn
from torch.utils.data import DataLoader, TensorDataset
from sklearn.model_selection import StratifiedKFold
from sklearn.metrics import classification_report, roc_auc_score
import optuna
import shap
import numpy as np
class Classifier(nn.Module):
def __init__(self, input_dim: int, hidden_dim: int, dropout: float):
super().__init__()
self.net = nn.Sequential(
nn.Linear(input_dim, hidden_dim),
nn.ReLU(),
nn.Dropout(dropout),
nn.Linear(hidden_dim, hidden_dim // 2),
nn.ReLU(),
nn.Dropout(dropout),
nn.Linear(hidden_dim // 2, 1),
)
def forward(self, x: torch.Tensor) -> torch.Tensor:
return self.net(x)
def train_epoch(model, loader, optimizer, criterion, device):
model.train()
total_loss = 0
for X_batch, y_batch in loader:
X_batch, y_batch = X_batch.to(device), y_batch.to(device)
optimizer.zero_grad()
pred = model(X_batch).squeeze()
loss = criterion(pred, y_batch.float())
loss.backward()
optimizer.step()
total_loss += loss.item() * len(X_batch)
return total_loss / len(loader.dataset)
def hyperparameter_search(X: np.ndarray, y: np.ndarray, n_trials: int = 50) -> dict:
def objective(trial):
hidden = trial.suggest_int("hidden_dim", 32, 256)
lr = trial.suggest_float("lr", 1e-4, 1e-2, log=True)
dropout = trial.suggest_float("dropout", 0.1, 0.5)
skf = StratifiedKFold(n_splits=5, shuffle=True, random_state=42)
scores = []
for train_idx, val_idx in skf.split(X, y):
model = Classifier(X.shape[1], hidden, dropout)
optimizer = torch.optim.Adam(model.parameters(), lr=lr)
criterion = nn.BCEWithLogitsLoss()
train_ds = TensorDataset(torch.tensor(X[train_idx], dtype=torch.float32),
torch.tensor(y[train_idx], dtype=torch.float32))
loader = DataLoader(train_ds, batch_size=64, shuffle=True)
for _ in range(20):
train_epoch(model, loader, optimizer, criterion, "cpu")
model.eval()
with torch.no_grad():
val_pred = model(torch.tensor(X[val_idx], dtype=torch.float32)).squeeze()
scores.append(roc_auc_score(y[val_idx], val_pred.numpy()))
return np.mean(scores)
study = optuna.create_study(direction="maximize")
study.optimize(objective, n_trials=n_trials)
return study.best_params
def explain_model(model, X_sample: np.ndarray, feature_names: list[str]):
model.eval()
explainer = shap.DeepExplainer(model, torch.tensor(X_sample[:100], dtype=torch.float32))
shap_values = explainer.shap_values(torch.tensor(X_sample, dtype=torch.float32))
shap.summary_plot(shap_values, X_sample, feature_names=feature_names, show=False)
最佳实践
- 为 numpy、torch 和 Python 的 random 模块设置随机种子,以确保可复现性
- 对分类任务使用分层划分,以保持类别分布
- 测试集只使用一次——绝不要在测试数据上调优超参数
- 报告交叉验证得出的置信区间,而非单次运行的指标
- 除基线模型外,为每个模型提供 SHAP 或置换重要性
- 记录所有实验参数、指标和产物,以确保可复现性
平台兼容性
| 平台 | 支持情况 | 备注 |
|---|---|---|
| Cursor | 完全支持 | Python + PyTorch + Jupyter |
| VS Code | 完全支持 | ML 扩展生态 |
| Windsurf | 完全支持 | 支持 ML 工作流 |
| Claude Code | 完全支持 | 生成训练脚本 |
| Cline | 完全支持 | 构建 ML 流水线 |
| aider | 部分支持 | 仅代码生成 |
相关技能
关键词
machine-learning pytorch scikit-learn hyperparameter-tuning optuna shap interpretability experiment-tracking cross-validation
© 2026 googleadsagent.ai™ | Agent Skills™ | MIT License