mcpField
A
autocarver

autocarver

本地服务
autocarver.readthedocs.io数据与分析111 天前更新

关于 autocarver

AutoCarver 是用于监督式特征分箱的 Python 库,面向信用评分、欺诈检测和风险建模。它搜索并验证候选分组,也提供本地 MCP 服务,让 LLM 助手通过工具调用筛选字段并针对目标变量分箱。

主要功能

  1. 01搜索目标关联较强的分组
  2. 02在开发集和交叉验证中检验稳健性
  3. 03支持二分类、多分类、序数和回归目标
  4. 04一次处理多种字段类型
  5. 05查看并调整分箱定义与历史
  6. 06提供本地 MCP 服务

适用场景

  1. 01为信用评分变量构造可解释分箱
  2. 02在训练阶段筛除不稳健分组
  3. 03通过助手对数据文件字段进行资格判定和分箱

MCP 相关

本地 MCP 服务向客户端提供字段资格判定和针对目标变量分箱的工具调用;数据集不会发送到 AutoCarver 或外部服务。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"mdefrance-autocarver": {
"command": "uvx",
"args": [
"autocarver"
]
}
}
}
启动命令uvx autocarver

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypiautocarver7.8.3

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

AutoCarver 徽标

PyPI Python License SPEC 0 Docs Tests Coverage

AutoCarver 的完整流程:离散化、对分组排序、分箱

AutoCarver 只需几行代码,就能将原始数值、类别和有序列转换为有监督、抗漂移且易于理解的分箱。别再因手动分箱不理想而损失模型性能,也别再等到生产监控时才发现过拟合分箱。

  • 通过搜索,而非目测 — 动态规划搜索会根据 Tschuprow's T(默认值)或 Cramér's V 对候选分组进行排序,并遵循你的 min_freq 和 max_n_mod 设置。
  • 从设计上保证稳健 — 每个候选分组都必须通过留出的开发集(以及可选的 CV 折)验证,否则就会被否决;这一过程在 fit 时完成,而不是等到监控阶段。
  • 定义 → 分箱 → 建模 — 声明你的 Features,对分箱器执行 fit,再调用 transform:整个特征集只需一次有监督处理即可完成分箱,无需为每个特征单独创建一个 notebook。针对每种目标类型使用一个分箱器:BinaryCarver、MulticlassCarver、OrdinalCarver、ContinuousCarver(回归),且 API 完全相同。
  • AI 辅助 — 本地 MCP 服务可让你的大模型助手通过工具调用筛选并分箱列,全程在你的计算机上运行。

在 Titanic 快速入门示例中,Fare 从分箱前的 72 个取值合并为 2 个箱,同时与生存情况的关联度提高:Tschuprow's T 从原始值 0.18 升至分箱后的 0.29。

适用于信用评分、欺诈检测和风险建模。

🆕 最新动态

📊 交叉验证稳健性。 fit 现在支持 cv 参数,可在开发集之外(或替代开发集)提供额外的留出稳健性视图: carver.fit(X, y, cv=5)。接受整数、任意 scikit-learn 划分器或显式索引对,并通过 sklearn.model_selection.check_cv 解析——各折会否决过拟合组合,但绝不会重新排序(排名仍以完整训练集为基准)。请参阅交叉验证折。

🤖 LLM 与 MCP 集成。 AutoCarver 现在内置本地 Model Context Protocol 服务:让支持 MCP 的助手(VS Code Copilot、Claude Desktop、Cursor,……)读取数据文件,然后通过工具调用来判定列的类型,并针对目标变量对其进行分箱。该服务完全在你的计算机上运行——你的数据集绝不会发送给 AutoCarver 或任何外部服务(只有你自己的 LLM 提供商能看到助手分享的内容)。分箱质量取决于 LLM,因此在投入生产使用前,请让人工确认特征定义。请参阅 LLM 与 MCP 指南。

pip install "autocarver[mcp]"

完成配置后,只需向助手提出:

判定 titanic.csv 中各列的类型,并针对 Survived 对其进行分箱。

助手会推断特征类型、提出分箱方案,并返回汇总表——无需手动编写代码。

客户端配置

将以下内容添加到 .vscode/mcp.json(VS Code / GitHub Copilot)或 claude_desktop_config.json(Claude Desktop,在 mcpServers 下,而不是 servers):

{
  "servers": {
    "autocarver": {
      "command": "python",
      "args": ["-m", "AutoCarver.mcp"]
    }
  }
}

如果你使用 uv,可以将 command 指向 uv,由它为你解析环境:

{
  "servers": {
    "autocarver": {
      "command": "uv",
      "args": ["run", "python", "-m", "AutoCarver.mcp"]
    }
  }
}

安装

pip install autocarver

快速开始

在 Colab 中打开

你已经有了一个 DataFrame 和一个目标变量——开始之前,第一项就已完成:

  • 加载数据
  • 划分训练集 / 开发集
  • 按类型声明特征
  • 拟合 carver,并在开发集上验证
  • 检查分箱结果
  • 持久化

接下来只需使用下方代码片段——在 Titanic 数据集上进行二分类:

from pathlib import Path

import pandas as pd
from sklearn.model_selection import train_test_split

from AutoCarver import BinaryCarver, Features

# 1. Load data
url = "https://web.stanford.edu/class/archive/cs/cs109/cs109.1166/stuff/titanic.csv"
data = pd.read_csv(url)
target = "Survived"

# 2. Train / dev split, stratified on the target
train, dev = train_test_split(data, test_size=0.33, random_state=42, stratify=data[target])

# 3. Declare features by type
features = Features(
    categoricals=["Sex"],
    numericals=["Age", "Fare", "Siblings/Spouses Aboard", "Parents/Children Aboard"],
    ordinals={"Pclass": ["1", "2", "3"]},
)

# 4. Fit the carver (dev set drives the robustness checks)
carver = BinaryCarver(features=features)
train_processed = carver.fit_transform(train, train[target], X_dev=dev, y_dev=dev[target])
dev_processed = carver.transform(dev)

# 5. Inspect the carved buckets, target rate, and association
carver.summary

# 6. Persist for later use
carver.save(Path("titanic_carver.json"))

# 7. Load the carver back in
carver = BinaryCarver.load(Path("titanic_carver.json"))
dev_processed = carver.transform(dev)

min_freq 和 max_n_mod 是入门时唯一需要关注的两个参数——默认值(0.02 / 5)体现了常见的评分实践,而所有行为开关都集中在一个 ProcessingConfig 对象中。查看、调整,然后继续。

多分类任务可使用 MulticlassCarver(针对完整的 K 类目标,每个特征进行一次分箱),也可使用 OneVsRestCarver,为每个类别分别进行分箱;有序目标可使用 OrdinalCarver;回归任务可使用 ContinuousCarver——API 完全相同。若要根据目标关联度和特征间冗余进行特征预选,可将分箱后的输出传入 ClassificationSelector 或 RegressionSelector,并设置 features=carver.features(carver 会对自己的副本进行分箱,因此原始 features 会保持不变)。

你将获得什么

在下次模型评审前,值得回答两个问题:你能否向利益相关方说明当前模型的每个分箱边界是如何确定的?你能否证明每个边界在模型从未见过的数据上依然成立?AutoCarver 让这两件事都只需一行代码:

  • 选择最佳分组,而非第一个可接受的分组——候选分组按 Tschuprow's T(默认)或 Cramér's V 排序,并保留在开发集上表现最佳的分组,因此不会停留在第一个看起来还不错的分组上。

  • 在上线前避免悄然过拟合——只在训练样本中存在的分箱会在数据漂移下悄然退化。每种候选组合都会在开发集(以及可选的 CV 折)上验证:任何目标率发生反转或分桶低于 min_freq 的候选组合,都会在拟合时被拒绝,而不是等到监控时才被发现。

  • 一等序数特征支持——OrdinalDiscretizer 会遵循你声明的类别顺序,因此代表性不足的类别会与最近的相邻类别合并,而不是按频率合并。

  • 由你担任最终审核者——carver.features.summary 和 carver.features.history 会显示分箱定义、每个分箱的目标率/频率以及完整的分箱过程;如果你不同意某个边界,可以覆盖它,而 transform 会像应用其他分箱一样应用你的修改:

    feature = carver.features("Siblings/Spouses Aboard")  # any carved feature; labels are [0, 1, 2]
    feature.group([1], 2)  # merge two bins you consider equivalent
    
  • 可解释的分桶——边界易于理解,便于审核、记录并用于评分卡。

  • 降维——合并代表性不足的类别,并限制每个特征的分箱数(max_n_mod),在独热编码前尤其有用。

  • 特征预筛选——ClassificationSelector/RegressionSelector 按特征与目标的关联程度排序,并根据特征间相关性进行筛选。

原始特征与 AutoCarver 分桶对比:监督式分箱前后的频率和目标率

Titanic 数据集中的 Age,一次 BinaryCarver.fit 调用:将 84 个原始取值合并为 3 个分桶,生存率呈单调变化。

对比如何?

手动分箱AutoCarveroptbinningsklearn KBinsDiscretizer
算法逐个查看分布和笔记本对有序分组进行动态规划搜索CART 预分箱,然后使用 CP 求解器(默认 CP-SAT;可选 MIP)分位数/均匀/k-means——无监督
对给定 min_freq / max_n_mod / 指标保留的分组无——采用第一个符合条件的分组从排名靠前的候选分组中选出最佳可行分组在求解器时间限制内,从 CART 预分箱中找到最佳合并结果不适用——没有目标函数
目标类型任意,约每小时处理 1 个特征二分类、多分类、有序、连续二分类、多分类、连续不适用
一次 fit 中处理所有特征类型(数值、类别、有序、NaN)每个特征都是独立项目是——强制遵循声明的有序顺序,并将 NaN 作为独立模态可通过 BinningProcess 实现;没有原生有序类型(可通过 user_splits 变通)仅支持数值;遇到 NaN 会报错
留出开发集稳健性检查很少——为每个特征编写脚本太繁琐支持——开发集 + 可选 k 折交叉验证,内置于 fit不支持(需自行编写交叉验证脚本)不支持
fit 后的每箱统计数据 + 分箱历史分散在各个笔记本单元格中carver.summary、carver.historybinning_table不支持

这三个库都兼容 sklearn 的 Pipeline;AutoCarver 还支持 JSON 往返持久化(carver.save("...json"))。AutoCarver(ClassificationSelector、RegressionSelector)和 optbinning(BinningProcess(selection_criteria=...))都提供特征预筛选。完整的特征矩阵、并排的可运行代码片段,以及“如何选择”的指南,请参阅对比页面。

文档

完整参考资料、教程和端到端笔记本示例请见 ReadTheDocs。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。