Repolode
nok

nok/sklearn-porter

一个将训练好的 scikit-learn 模型和转换器转译为 C、Go、Java、JavaScript 等语言代码的 Python 工具。

Star
1,304
Fork
168
未关闭 Issue
4
最近提交
前天

这是什么?

sklearn-porter 可以把训练好的 scikit-learn 估计器、转换器或流水线转译为 C、C#、Go、Java、JavaScript、PHP 或 Ruby 代码。生成的代码无需 Python 运行环境即可做预测,适合嵌入式设备、浏览器或已有的其他语言应用。

项目支持多种分类器、回归器、异常检测器,以及预处理和特征选择转换器,涵盖树集成、线性模型、SVM 和神经网络等。移植后的估计器目标是与原模型给出相同的预测结果。

模型数据可以直接嵌入代码、导出为独立的 JSON 文件,或编译为嵌套 if-else 等逻辑。项目提供 Python 接口和 `porter` 命令行工具,并带有 `test` 函数用于对比移植代码与原模型的输出。需要 Python 3.11 及以上与 scikit-learn 1.8 及以上版本。

核心功能

  • 01将分类器、回归器和异常检测器转译为七种语言的代码。
  • 02支持常见预处理、特征选择转换器以及流水线。
  • 03提供 attached、exported、combined 三种模型数据存储模板。
  • 04同时提供 Python 接口和 `porter` 命令行工具。
  • 05内置测试函数,可对比移植代码与原模型的预测结果。

适用场景

  • 在没有 Python 的嵌入式设备上运行已训练的 scikit-learn 模型。
  • 在 Java、Go 或 PHP 后端中直接调用模型,无需额外部署 Python 服务。
  • 在浏览器中用 JavaScript 运行分类模型。

快速上手

  1. 1

    使用 uv 安装该包

    uv add sklearn-porter
  2. 2

    或使用 pip 安装

    pip install sklearn-porter
  3. 3

    在 Python 中训练 scikit-learn 模型,并用 port(clf, language='js') 转译

使用前须知

  • 需要 Python 3.11 或更高版本以及 scikit-learn 1.8 或更高版本。
  • 仅支持固定列表中的 scikit-learn 估计器和转换器。

收录于专题

标签

常见问题

sklearn-porter 是什么?
一个将训练好的 scikit-learn 模型和转换器转译为 C、Go、Java、JavaScript 等语言代码的 Python 工具。 sklearn-porter 可以把训练好的 scikit-learn 估计器、转换器或流水线转译为 C、C#、Go、Java、JavaScript、PHP 或 Ruby 代码。生成的代码无需 Python 运行环境即可做预测,适合嵌入式设备、浏览器或已有的其他语言应用。
sklearn-porter 可以免费使用吗?用的什么许可证?
sklearn-porter 以 BSD-3-Clause 许可证开源。用于商业产品前,请先确认许可证条款。
sklearn-porter 还在维护吗?
活跃维护中。sklearn-porter 最近一次提交是在 2026年11月5日。
sklearn-porter 适合用来做什么?
在没有 Python 的嵌入式设备上运行已训练的 scikit-learn 模型。 在 Java、Go 或 PHP 后端中直接调用模型,无需额外部署 Python 服务。 在浏览器中用 JavaScript 运行分类模型。
sklearn-porter 怎么安装和运行?
使用 uv 安装该包: uv add sklearn-porter 或使用 pip 安装: pip install sklearn-porter 在 Python 中训练 scikit-learn 模型,并用 port(clf, language='js') 转译
在哪里获取 sklearn-porter?
源代码和安装说明在 GitHub 上:https://github.com/nok/sklearn-porter

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目