mcpField
S
senior-data-scientist

senior-data-scientist

github.com/pixel-process-ug数据与数据库384 次安装33 周前更新
代码仓库

关于 senior-data-scientist

用于构建端到端数据科学工作流的技能,覆盖数据集探索到模型部署。内容包括预处理、特征工程、模型评估、实验跟踪、统计检验、可视化和 Notebook 实践。

主要功能

  1. 01数据集分析与探索
  2. 02预处理和特征工程
  3. 03模型选择与交叉验证
  4. 04超参数调优与评估
  5. 05使用 MLflow 或 W&B 跟踪实验
  6. 06统计检验与可视化

适用场景

  1. 01训练模型前建立基线
  2. 02通过交叉验证比较候选模型
  3. 03跟踪实验并评估结果
  4. 04准备模型工作流以供部署

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/pixel-process-ug/superkit-agents --skill senior-data-scientist

安装后在 Claude Code 中输入/senior-data-scientist确认已加载。

详细介绍

高级数据科学家

概述

构建端到端数据科学工作流,涵盖从数据探索到模型部署的全过程。此技能涵盖数据预处理、特征工程、模型选择、超参数调优、交叉验证、使用 MLflow/W&B 跟踪实验、统计检验、使用 matplotlib/seaborn/plotly 进行可视化,以及 Jupyter notebook 最佳实践。

开始时声明:“我正在使用 senior-data-scientist 技能处理数据科学工作流。”


阶段 1:理解数据

**目标:**分析数据集并在建模前建立基准。

操作
  1. 加载并分析数据集(形状、类型、分布)
  2. 识别缺失值、异常值和数据质量问题
  3. 执行探索性数据分析(EDA)
  4. 定义目标变量和成功指标
  5. 建立基准性能
基准模型(始终从这里开始)
任务基准模型原因
分类多数类分类器准确率的下限
分类逻辑回归简单、易解释
回归均值预测器RMSE 的下限
回归线性回归简单、易解释
时间序列朴素预测(前一个值)MAE 的下限
时间序列季节性朴素预测捕捉基本季节性
停止 — 在进入阶段 2 之前,不要继续:
  • 已分析数据集(形状、类型、分布)
  • 已记录缺失值和异常值
  • 已定义目标变量
  • 已选择成功指标
  • 已建立基准性能

阶段 2:特征工程

**目标:**将原始数据转换为可提升模型性能的特征。

操作
  1. 处理缺失值(填补策略)
  2. 对分类变量进行编码
  3. 缩放/归一化数值特征
  4. 创建派生特征
  5. 特征选择(移除冗余/无关特征)
缺失值策略决策表
策略适用场景实现方式
删除行缺失率 < 5%,MCARdf.dropna()
均值/中位数数值型、无异常值SimpleImputer(strategy='median')
众数分类变量SimpleImputer(strategy='most_frequent')
KNN 填补器结构化缺失模式KNNImputer(n_neighbors=5)
迭代填补复杂关系IterativeImputer()
标记 + 填补缺失情况本身具有信息添加 is_missing 列 + 填补
分类变量编码决策表
方法适用场景基数
独热编码名义型、低基数< 10 个类别
标签/序数编码序数特征任意
目标编码高基数名义型> 10 个类别
频率编码频率具有意义时任意
二进制编码极高基数> 50 个类别
缩放决策表
缩放器适用场景对异常值稳健?
StandardScaler默认选择(均值=0,标准差=1)否
RobustScaler存在异常值时(中位数/IQR)是
MinMaxScaler神经网络、基于距离的方法 [0,1]否
特征类型与工程方法
特征类型技术
数值型对数变换、多项式、分箱、交互项(A*B、A/B)
时间型小时、星期几、is_weekend、距事件的时间、周期性(sin/cos)、滞后值
文本TF-IDF、词数、情感分数、命名实体、嵌入
分类编码(见上文)、与数值特征交互
特征选择决策表
方法类型适用场景
相关性矩阵过滤法初步探索
互信息过滤法非线性关系
递归特征消除包装法特定模型的选择
L1 正则化嵌入法线性模型
特征重要性嵌入法基于树的模型
置换重要性与模型无关最终验证
停止——在进入阶段 3 之前,请勿继续:
  • 使用合理且有依据的策略处理缺失值
  • 适当地对类别变量进行编码
  • 对数值特征进行缩放
  • 仅使用训练数据,在训练集/测试集拆分之前完成特征工程
  • 如有需要,通过特征选择降低维度

阶段 3:建模

目标: 选择、训练并评估候选模型。

操作
  1. 选择候选算法
  2. 设置交叉验证策略
  3. 训练并评估候选模型
  4. 调整超参数
  5. 最终模型选择与评估
算法决策表
数据特征优先尝试也可考虑
表格数据,行数 < 10KRandom Forest、XGBoostLogistic/Linear Regression
表格数据,行数 > 10KXGBoost、LightGBMCatBoost、Neural Network
高维数据Lasso/Ridge、SVM配合特征选择的 Random Forest
时间序列Prophet、ARIMALSTM、带滞后特征的 XGBoost
文本分类微调后的 transformerTF-IDF + Logistic Regression
图像分类预训练 CNN(ResNet、EfficientNet)Vision Transformer
回归XGBoost、Random ForestLinear Regression、Neural Network
异常检测Isolation ForestLOF、Autoencoder
交叉验证策略决策表
策略适用情况代码
K-Fold(k=5)默认选择,数据均衡KFold(n_splits=5)
Stratified K-Fold分类、数据不平衡StratifiedKFold(n_splits=5)
Time Series Split时间序列数据TimeSeriesSplit(n_splits=5)
Group K-Fold分组观测数据GroupKFold(n_splits=5)
Leave-One-Out数据集非常小LeaveOneOut()
评估指标决策表
任务主要指标次要指标
二分类AUC-ROCF1、Precision、Recall、AP
多分类Macro F1Accuracy、Confusion Matrix
回归RMSEMAE、R-squared、MAPE
排序NDCGMAP、MRR
异常检测F1、APPrecision@K、Recall@K
超参数调优决策表
方法计算预算搜索空间实现方式
Grid Search低(< 100 种组合)范围较小且已知GridSearchCV
Random Search中范围大且不确定RandomizedSearchCV
Bayesian(Optuna)任意范围大、计算开销高optuna.create_study()
Successive Halving高候选项较多HalvingRandomSearchCV
常见超参数(XGBoost/LightGBM)
param_space = {
    'n_estimators': [100, 300, 500, 1000],
    'max_depth': [3, 5, 7, 9],
    'learning_rate': [0.01, 0.05, 0.1],
    'subsample': [0.7, 0.8, 0.9],
    'colsample_bytree': [0.7, 0.8, 0.9],
    'min_child_weight': [1, 3, 5],
}
停止——在进入阶段 4 之前,请勿继续:
  • 至少评估 2 个候选模型
  • 使用交叉验证(而非仅进行训练集/测试集拆分)
  • 结果优于阶段 1 的基线
  • 有依据地选出最佳模型
  • 检查过拟合情况(训练集与验证集之间的差距)

阶段 4:部署

目标: 序列化模型,在生产环境中提供服务并进行监控。

操作
  1. 序列化模型和预处理流程
  2. 创建预测 API 或批处理流程
  3. 设置数据漂移和模型性能下降监控
  4. 编写模型卡文档(输入、输出、局限性、偏差)
停止——满足以下条件时,部署完成:
  • 模型及预处理流程已序列化
  • 预测 API 或批处理流程端到端运行正常
  • 已配置数据漂移监控
  • 已编写模型卡文档

实验跟踪

MLflow 模式
import mlflow

mlflow.set_experiment("customer-churn-prediction")

with mlflow.start_run(run_name="xgboost-v2"):
    mlflow.log_params(params)
    mlflow.log_metrics({"auc": auc_score, "f1": f1_score})
    mlflow.log_artifact("confusion_matrix.png")
    mlflow.sklearn.log_model(pipeline, "model")
    mlflow.set_tag("version", "2.1")
跟踪内容
类别内容
参数所有超参数、随机种子
指标训练集和验证集指标
数据数据版本/哈希值、特征列表
工件图表、报告、模型文件
元数据训练时长、模型大小

统计检验决策表

问题检验假设条件
两组均值是否不同?t 检验(独立样本)正态分布
两组数据(非正态)?Mann-Whitney U 检验无
配对测量?配对 t 检验差值服从正态分布
3 组或更多组的均值?ANOVA正态分布、方差相等
分类变量是否相关?卡方检验期望频数 > 5
分布是否为正态分布?Shapiro-Wilk 检验n < 5000
两个分布是否不同?Kolmogorov-Smirnov 检验连续数据
P 值指南
  • p < 0.05:具有统计显著性(常用标准)
  • 始终同时报告效应量和 p 值
  • 对多重比较进行校正(Bonferroni、FDR)
  • 统计显著性不等于实际显著性

可视化决策表

数据类型图表库
分布直方图、KDE、箱线图seaborn
比较条形图、分组条形图matplotlib
相关性散点图、热力图seaborn
趋势折线图matplotlib/plotly
构成堆叠条形图、饼图(最多 5 个扇区)matplotlib
交互式散点图、折线图、仪表板plotly
可视化规则
  • 为每张图表添加描述性标题
  • 为坐标轴标注单位
  • 使用适合色盲人士的调色板(seaborn: colorblind)
  • 条形图的 y 轴从 0 开始
  • 直接在图表上标注关键发现

Jupyter Notebook 结构

1. ## Setup (imports, configuration)
2. ## Data Loading
3. ## Exploratory Data Analysis
4. ## Data Preprocessing
5. ## Feature Engineering
6. ## Modeling
7. ## Evaluation
8. ## Conclusions
Notebook 最佳实践
  • 分享前重启内核并运行全部单元格
  • 保持单元格内容聚焦、顺序清晰
  • 使用 Markdown 单元格进行说明
  • 将可复用代码提取到 .py 模块中
  • 使用 nbstripout 进行版本控制
  • 固定所有依赖项的版本

反模式 / 常见错误

反模式错误原因正确做法
使用测试数据进行训练数据泄漏,指标虚高严格区分训练集和测试集
在拆分数据前进行特征工程测试集信息泄漏到特征中仅使用训练数据进行特征工程
报告训练指标无法泛化报告验证集/测试集指标
在类别不平衡的数据上使用准确率会产生误导(多数类占优)使用 F1、AUC-ROC 或 AP
在测试集上调参对测试数据过拟合使用验证集调参
不与基线比较无法衡量改进程度始终先建立基线
挑选评估示例存在选择偏差在完整评估集上报告结果
部署时不监控漂移模型性能悄然下降监控输入分布

集成点

技能关系
senior-prompt-engineer提示词评估会用到统计检验方法
testing-strategyML 测试遵循评估方法
performance-optimization模型推理优化遵循测量周期
acceptance-testing模型性能阈值成为验收标准
llm-as-judge主观输出评估使用 LLM-as-judge
code-review对 Notebook 和流水线代码进行质量审查

技能类型

灵活型 — 根据具体的数据特征、业务需求和计算资源限制,调整预处理、建模和评估方法。强烈建议采用四阶段流程并跟踪实验。建模前务必先建立基线。

评论

支持 Markdown