尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

PyCaret 4.0 引擎开发协作指南:OOP-only 公共 API、类型化结果与事件日志规范

发布时间:2026/9/24 17:22:05

资讯中心
01
ARTICLE

PyCaret 4.0 引擎开发协作指南:OOP-only 公共 API、类型化结果与事件日志规范

PyCaret 4.0 引擎开发协作指南:OOP-only 公共 API、类型化结果与事件日志规范
【免费下载链接】pycaretOpen-source, low-code AutoML platform for Python. PyCaret 4.0: sklearn-native engine React control plane.项目地址https://gitcode.com/gh_mirrors/py/pycaret点击查看免费下载PyCaret 4.0 将引擎重构为瘦身、无状态、面向 scikit-learn的现代 AutoML 内核公共 API 只保留面向对象形态所有动词返回类型化结果运行过程以结构化事件流替代print。packages/engine/CLAUDE.md 正是面向在此目录工作的 AI 编码 AgentClaude Code、Cursor、Copilot 等与人类开发者的引擎专属速查表。读完本文你将掌握引擎的测试闭环命令、五条不可违背的引擎铁律以及从源码层面理解它们背后的实现依据可直接用于在本仓库中开发、修复与评审引擎代码。文档定位引擎专属的 Agent 简报packages/engine/CLAUDE.md是仓库根目录 AGENTS.md全仓库权威约定的路径级补充。它的定位很明确不重复罗列全仓库规范只突出引擎目录特有的速查项与测试闭环。这与仓库每个顶级目录只有一个存在理由的布局哲学一致——packages/engine/对应 PyPI 上的pycaret库本体4.0.0a8是整套平台的算法内核。从仓库根目录的结构看见 packages/engine/README.md引擎包划分为packages/engine/ ├── pyproject.toml # 构建 pycaret wheelhatchling ├── pycaret/ # 包本体 │ ├── api/ # list_models / describe_model / describe_setup_params供 UI 与 Agent 内省 │ ├── core/ # Experiment 基类 类型化 results errors tasks │ ├── tasks/ # 5 个任务子类分类/回归/聚类/异常/时序 │ ├── logging/ # BaseLogger Event/EventKind MemoryLogger │ ├── containers/ # 模型注册表容器正在被逐步 drain │ └── internal/ # 3.x 遗留 god-classPhase 5 逐动词 drain 中 └── tests/ # pytest 测试套件快速测试闭环引擎开发的四个命令CLAUDE.md 给出的引擎日常开发命令全部基于uv与ruff在仓库根目录执行uv run pytest packages/engine/tests/ -q # 快速全量回归 uv run pytest packages/engine/tests/ -q -k pattern # 按关键字聚焦单个测试 uv run ruff check packages/engine/ # 静态检查lint uv run ruff format packages/engine/ # 自动格式化uv run使用仓库根目录的uv.lock锁定环境依赖安装方式见 packages/engine/pyproject.toml 中的[project]与[dependency-groups]开发组为pycaret[dev,test]含 ruff、mypy、pytest、pytest-xdist 等。测试入口的testpaths [tests]、python_files [test_*.py]以及plotting/slow两个 marker 均在 pyproject 的[tool.pytest.ini_options]中声明与命令行为一一对应。引擎测试套件目前共 54 个 session 文件从test_core_architecture.py到test_session54_plot_model_dispatcher.py覆盖架构、端到端 OOP 流程、持久化、预测、建模、调参、对比、时序任务、native setup 与 plot 分发等其中test_e2e_oop.py是黄金路径的守护测试。聚焦单个测试的典型用法uv run pytest packages/engine/tests/test_e2e_oop.py -q -k compare只跑与compare_models相关的用例。引擎专属铁律五条不可违背的约束1. 公共 API 仅面向对象OOP-only约定使用Experiment(...).fit(df)3.x 的模块级函数式 APIfrom pycaret.classification import *; s setup(data, targety)已被彻底移除且明确列入 docs/revamp/KILL_LIST.md 的从公共 API 移除的特性清单——不得恢复。实现依据从 packages/engine/pycaret/core/experiment.py 的模块 docstring 可见Experiment是真正的 sklearn 兼容对象继承sklearn.base.BaseEstimatorget_params/set_params/__sklearn_is_fitted__/ HTML repr /clone全部可用fit(X, yNone)是唯一入口。类层级为Experiment task-agnosticfit / create_model / predict_model / 持久化 / 内省 ├── SupervisedExperiment compare_models / tune_model / ensemble / blend / stack / calibrate / finalize │ ├── ClassificationExperiment │ ├── RegressionExperiment │ └── TimeSeriesExperiment └── UnsupervisedExperiment assign_model 等 ├── ClusteringExperiment └── AnomalyExperiment典型用法packages/engine/README.md 中的金路径示例from pycaret.datasets import get_data from pycaret.tasks import ClassificationExperiment df get_data(juice) exp ClassificationExperiment(targetPurchase, session_id42).fit(df) best exp.compare_models().best exp.save_model(best, baseline)fit内部依次执行规整调用形态DataFrame 或(X, y)统一合并、生成uuid4实验 ID、构建遗留委托self._legacy、安装 logger、发出EXPERIMENT_STARTED事件、调用setup(...)完成预处理与数据划分、置_fitted True、发出EXPERIMENT_FITTED事件并返回self供链式调用详见 docs/for_agents/ENGINE_WALKTHROUGH.md。未fit就调用动词会抛出NotFittedError——_require_fitted()在 experiment.py 中实现异常类型定义于 packages/engine/pycaret/core/errors.py继承自RuntimeError以对齐 sklearn 行为。2. 每个公共动词返回类型化结果 dataclass约定CompareResult、TuneResult、PredictResult等——公共 API绝不返回裸 DataFrame 或 dict新动词必须遵循同一模式。实现依据全部 dataclass 集中在 packages/engine/pycaret/core/results.py均为frozenTrue。设计目标有三Notebook 兼容结果的.pipeline/.models/.best仍是可直接使用的 sklearn Pipelinepull()语义保留 leaderboard DataFrameAgent / UI 友好所有字段可内省、有类型、可序列化Pipeline 除外它自带 joblib/cloudpickle 的 pickle 契约事件轨迹每个结果携带操作期间产生的events列表UI 可事后回放进度。动词与返回类型对照详见 docs/for_agents/TYPED_RESULTS.md动词返回类型关键字段create_model(id, **kwargs)CreateResultpipeline/model_id/metrics/paramscompare_models(**kwargs)CompareResultbest/models/leaderboard/ranked_idstune_model(model, **kwargs)TuneResultpipeline/best_params/search/cv_resultsensemble_model(model, **kwargs)EnsembleResultpipeline/methodBagging/Boostingblend_models(models, **kwargs)BlendResultpipeline/metricsstack_models(models, **kwargs)StackResultpipeline/metricscalibrate_model(model, **kwargs)CalibrateResultpipeline/methodsigmoid/isotonicfinalize_model(model)FinalizeResultpipeline全量数据重训可直接部署predict_model(model, dataNone)PredictResultpredictions/metrics无真值时 NoneCompareResult还实现了__iter__与__getitem__让 3.x 的列表索引习惯继续可用top3 exp.compare_models(n_select3)[:3]。惯用写法best exp.compare_models().best # 经典形态 leaderboard exp.compare_models().leaderboard # 完整榜单 DataFrame tuned exp.tune_model(best).pipeline # 调参 → 预测链路 preds exp.predict_model(tuned).predictions # prediction_label / prediction_score events exp.compare_models().events # 事后回放的事件轨迹3. 流水线是真正的 sklearn Pipeline约定引擎内所有模型都是sklearn.pipeline.Pipeline实例预处理 估计器并在其上设置set_output(pandas)以保持 pandas 输出语义。实现依据动词重构的原生实现模板见 docs/for_developers/DRAINING_THE_GODCLASS.md展示了标准形态estimator_obj self._resolve_model_spec(estimator) pipeline Pipeline([(prep, self.preprocess_pipeline), (model, estimator_obj)]) cv_results cross_validate( pipeline, self.X_train, self.y_train, cvself._resolve_cv(), scoringself._resolve_scoring(), return_estimatorTrue, n_jobsself.n_jobs, )TuneResult.search字段的注解类型正是BaseCrossValidator | NoneCreateResult.pipeline注解为sklearn.pipeline.Pipeline——类型系统本身就在强制这一约定。也因此save_model/load_model可以走 joblib 路径joblib.dump包装预处理 Pipeline部署、UI 展示与 Agent 消费都不需要额外的私有协议。4. 事件日志而非 print约定引擎内部一律使用self.logger.log(EventKind.X, ...)严禁print()。这是引擎可观测性的根基同一事件流既驱动 React UI 的进度渲染也作为 LLM Agent 的轨迹数据。实现依据packages/engine/pycaret/logging/events.py 定义了两类核心类型EventKindStrEnum字符串枚举天然支持 JSON 往返涵盖实验生命周期experiment.started/fitted/finished、预处理preprocessor.started/fitted、data.split、模型操作model.create.started、model.created、model.compare.started、model.tuned……以及诊断warning/errorEvent不可变 dataclass字段为kind/message/payload/duration_ms/timestamp/experiment_idto_dict()直接给出 JSON 序列化表示。packages/engine/pycaret/logging/base.py 提供BaseLoggerlog(...)构造Event并调用emit(...)默认NullLogger静默丢弃一切MemoryLoggerpycaret.logging.memory用于 notebook 内回放或被进程内 UI 消费。订阅机制是关键设计——subscribe(callback)返回退订函数这是 React UI 后端或长驻 notebook 挂接事件流的官方入口。3.x 的 mlflow / comet / wandb / dagshub logger 适配器均已按 KILL_LIST.md 移除外部追踪请以独立包形式自行订阅emit而不是改引擎。5. 核心依赖不设版本上界约定pyproject.toml中对 numpy / pandas / sklearn / scipy / joblib不得加 upper-bound 版本钉死。这正是 4.0 重构的核心动机之一——让用户环境自带的 scikit-learn 栈保持可升级。实现依据packages/engine/pyproject.toml 的[project]依赖区给出的是下限式声明dependencies [ numpy1.26, pandas2.2, scipy1.11, scikit-learn1.5, # floor chosen to avoid forcing an upgrade on Colab/Kaggle preinstalled images joblib1.4, plotly5.22, tqdm4.66, requests2.32, jinja23.1, ipython8.18,9, # 唯一例外因 google.colab 依赖 IPython 8.x 的 coloransi.TermColors API ]注意ipython是唯一有上界9的依赖且理由明确写在了注释里Colab 兼容。同样值得注意的是依赖最小化原则xgboost / catboost / lightgbm / optuna / shap 等全部是软依赖通过 optional-dependencies 提供notebookipywidgets/nbformat、exportkaleido静态图导出、anomalypyod/numba、timeseriesstatsmodels/sktime/pmdarima重依赖链隔离、interpretshap、full一键全装。测试优先缺陷修复的强制流程CLAUDE.md 规定修复 bug 必须先写失败测试看到它变红再动手修绝不提交一份没见过它变红的测试。这与仓库的测试基建严格配套e2e 守护packages/engine/tests/test_e2e_oop.py 覆盖 notebook 黄金路径fit → compare_models → predict_model任何动词重构都不得让它变红架构单测packages/engine/tests/test_core_architecture.py 验证返回类型的单元级形态例如result.model_id lr、len(result.metrics) 1这类形状断言增量迁移动词从遗留 god-class 迁移到原生 sklearn 实现时公共签名、返回类型、未 fit 抛错NotFittedError、发出的EventKind、metrics的列/行/dtype 五者全部必须保持不变——实现有漂移就修实现而不是改测试见 DRAINING_THE_GODCLASS.md 的硬约束清单。完整的引擎开发流程计划 → 小 diff → 跑相关测试子集 → 追加 release-notes → 更新 STATUS/ROADMAP → 记录 ADR见仓库根目录 AGENTS.md 的 Workflow 一节。引擎架构背后的迁移背景god-class 的 drain 计划理解上述铁律需要知道 4.0 引擎正处于一次公共 API 已定稿、内部实现渐进替换的过渡期目前多数动词仍委托给 3.x 遗留 god-classself._legacyPhase 5 的目标是逐动词原生重写并删除委托调用。这一设计带来的收益是——无迁移债公共 API 即最终形态、增量风险一次一个动词测试兜底、每步可发布黄金路径常绿、可并行Agent 可任选动词开工。迁移顺序建议从易到难save_model/load_model→predict_model→create_model→tune_model→ 集成类ensemble/blend/stack/calibrate→compare_models→finalize_model。推荐按需深入的三份文档均已转换为仓库根目录相对路径docs/revamp/ARCHITECTURE_ENGINE.md——引擎内部架构类层级、事件系统、god-class 全貌docs/for_agents/ENGINE_WALKTHROUGH.md——fit → compare_models → predict_model每一步的实际执行细节docs/for_agents/EVENT_STREAM.md——全部EventKind的权威清单与订阅方式。小结引擎开发的黄金准则在packages/engine/下工作的所有约定可以浓缩为一句话面向对象的 sklearn 兼容实验对象 类型化结果 事件日志 无版本上界 测试先行。无论是人类开发者还是 AI Agent遵循这套约束就能保证引擎与平台层React UI、REST API、LLM Agent之间的契约稳定——这也是 PyCaret 4.0引擎无状态、配置即契约总体架构的落地点。新手上路从执行一遍快速测试闭环、跑通黄金路径示例开始即可。赞分享【免费下载链接】pycaretOpen-source, low-code AutoML platform for Python. PyCaret 4.0: sklearn-native engine React control plane.项目地址https://gitcode.com/gh_mirrors/py/pycaret点击查看免费下载相关推荐PyCaret 4.0 Agent 对接指南引擎调用链、类型化结果、事件流与自省 API 全解析PyCaret 4.0 Agent 对接指南引擎调用链、类型化结果、事件流与自省 API 全解析 PyCaret 4.0 在重构后形成了一套全新的、面向 AIexatorrent故障排除常见问题及解决方案大全exatorrent故障排除常见问题及解决方案大全 exatorrent是一款易于使用的种子客户端可托管在云端文件可在浏览器或媒体播放器中流式传输。本文将Newton 项目源码与公共 API 开发规范指南Newton 项目源码与公共 API 开发规范指南 本指南系统梳理 Newton基于 NVIDIA Warp 的 GPU 加速物理仿真引擎的源码与公共 AP物理引擎机器人上一篇CookLikeHOC 秘汁卤肉饭复刻指南中央厨房预制卤肉与蒸柜复热出品的完整还原下一篇Haystack 与 ArcadeDB 集成深度指南基于 LSM_VECTOR/HNSW 索引的向量检索与文档存储实战创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。