.. _related_projects: ===================================== 相关项目 ===================================== 鼓励实现 scikit-learn 估计器 API 的项目使用 `scikit-learn-contrib 模板 `_ , 该模板有助于测试和记录估计器的最佳实践。 `scikit-learn-contrib GitHub 组织 `_ 也接受符合此模板的高质量贡献仓库。 以下是姐妹项目、扩展和领域特定包的列表。 互操作性和框架增强 ------------------------------------------- 这些工具使 scikit-learn 能够与其他技术一起使用,或增强 scikit-learn 估计器的功能。 **数据格式** - `sklearn_pandas `_ 用于 scikit-learn 管道和 pandas 数据帧的桥梁,具有专门的转换器。 - `sklearn_xarray `_ 提供 scikit-learn 估计器与 xarray 数据结构的兼容性。 **自动机器学习** - `auto-sklearn `_ 一个自动机器学习工具包,是 scikit-learn 估计器的即插即用替换。 - `autoviml `_ 用一行代码自动构建多个机器学习模型。设计为一种更快的方式来使用 scikit-learn 模型,无需预处理数据。 - `TPOT `_ 一个自动机器学习工具包,优化一系列 scikit-learn 操作符以设计机器学习管道,包括数据和特征预处理器以及估计器。作为 scikit-learn 估计器的即插即用替换。 - `Featuretools `_ 一个用于执行自动化特征工程的框架。它可以用于将时间序列和关系型数据集转换为机器学习所需的特征矩阵。 - `Neuraxle `_ 一个用于构建整洁管道的库,提供了正确的抽象,以简化机器学习应用的研究、开发和部署。与深度学习框架和scikit-learn API兼容,它可以流式处理小批量数据、使用数据检查点、构建有趣的管道,并使用自定义的每步骤保存器序列化模型。 - `EvalML `_ EvalML是一个AutoML库,它使用特定领域的目标函数构建、优化和评估机器学习管道。它在一个API下集成了多个建模库,并且EvalML创建的对象使用与sklearn兼容的API。 **实验和模型注册框架** - `MLFlow `_ MLflow是一个开源平台,用于管理机器学习生命周期,包括实验、可重复性、部署和中央模型注册。 - `Neptune `_ 用于MLOps的元数据存储,专为运行大量实验的团队构建。它为您提供了一个单一的地方来记录、存储、显示、组织、比较和查询所有模型构建元数据。 - `Sacred `_ 一个帮助您配置、组织、记录和重现实验的工具 - `Scikit-Learn Laboratory `_ 一个围绕scikit-learn的命令行包装器,使得使用多个学习器和大型特征集运行机器学习实验变得容易。 **模型检查和可视化** - `dtreeviz `_ 一个用于决策树可视化和模型解释的Python库。 - `eli5 `_ 一个用于 调试/检查机器学习模型并解释其预测。 - `sklearn-evaluation `_ 机器学习模型评估变得简单:图表、表格、HTML报告、实验跟踪和Jupyter笔记本分析。可视化分析、模型选择、评估和诊断。 - `yellowbrick `_ 一套自定义的matplotlib可视化工具,用于scikit-learn估计器,支持可视化特征分析、模型选择、评估和诊断。 **模型选择** - `scikit-optimize `_ 一个用于最小化(非常)昂贵和噪声黑盒函数的库。它实现了几种基于序列模型的优化方法,并包含一个替代 ``GridSearchCV`` 或 ``RandomizedSearchCV`` 的工具,使用这些策略进行交叉验证参数搜索。 - `sklearn-deap `_ 在scikit-learn中使用进化算法代替网格搜索。 **模型导出用于生产** - `sklearn-onnx `_ 将许多Scikit-learn管道序列化为 `ONNX `_ 以进行交换和预测。 - `skops.io `__ 一种比pickle更安全的持久化模型,可以在大多数常见情况下代替pickle使用。 - `sklearn2pmml `_ 通过 `JPMML-SkLearn `_ 库将各种scikit-learn估计器和转换器序列化为PMML。 - `sklearn-porter `_ 将训练好的scikit-learn模型转译为C、Java、Javascript等语言。 - `m2cgen `_ 一个轻量级库,允许将训练好的机器学习模型转译为多种编程语言。 将许多scikit-learn估计器模型转换为C、Java、Go、R、PHP、Dart、Haskell、Rust等多种编程语言的原生代码。 - `treelite `_ 将基于树的集成模型编译成C代码,以最小化预测延迟。 - `micromlgen `_ MicroML将机器学习算法带到微控制器上。支持通过将多个scikit-learn分类器转译为C代码。 - `emlearn `_ 在C99中实现scikit-learn估计器,适用于嵌入式设备和微控制器。支持多种分类器、回归和异常检测模型。 **模型吞吐量** - `Intel(R) Extension for scikit-learn `_ 主要在高端Intel(R)硬件上,加速某些scikit-learn模型在特定情况下的训练和推理。该项目由Intel(R)维护,scikit-learn的维护者不参与此项目的开发。另请注意,在某些情况下,使用 ``scikit-learn-intelex`` 下的工具和估计器会得到与 ``scikit-learn`` 本身不同的结果。如果在使用此项目时遇到问题,请确保在各自的仓库中报告潜在问题。 其他估计器和任务 -------------------------- 并非所有内容都适合或成熟到足以加入scikit-learn核心项目。以下是提供类似于scikit-learn接口的项目,用于额外的学习算法、基础设施和任务。 **时间序列和预测** - `Darts `_ Darts是一个Python库,用于用户友好的时间序列预测和异常检测。它包含多种模型,从经典的ARIMA到深度神经网络。预测模型都可以以相同的方式使用,使用fit()和predict()函数,类似 到 scikit-learn。 - `sktime `_ 一个与 scikit-learn 兼容的 时间序列机器学习工具箱,包括时间序列分类/回归和(监督/面板)预测。 - `skforecast `_ 一个 Python 库, 简化了使用 scikit-learn 回归器作为多步预测器的操作。它也适用于任何与 scikit-learn API 兼容的回归器。 - `tslearn `_ 一个用于时间序列的机器学习库, 提供了预处理和特征提取工具,以及用于聚类、分类和回归的专用模型。 **梯度提升(树)** 注意 scikit-learn 自己的现代梯度提升估计器 :class:`~sklearn.ensemble.HistGradientBoostingClassifier` 和 :class:`~sklearn.ensemble.HistGradientBoostingRegressor` 。 - `XGBoost `_ XGBoost 是一个优化的分布式 梯度提升库,设计为高效、灵活和便携。 - `LightGBM `_ LightGBM 是一个使用基于树的学习算法的梯度提升框架。 它被设计为分布式和高效的。 **结构化学习** - `HMMLearn `_ 隐马尔可夫模型的实现, 曾作为 scikit-learn 的一部分。 - `PyStruct `_ 通用的条件随机场和结构化预测。 - `pomegranate `_ 针对 Python 的概率建模, 重点在于隐马尔可夫模型。 - `sklearn-crfsuite `_ 线性链条件随机场( `CRFsuite `_ 包装, 具有类似 sklearn 的 API)。 **深度神经网络等** - `skorch `_ 一个与 scikit-learn 兼容的 神经网络库,封装了PyTorch。 - `scikeras `_ 提供了一个围绕 Keras的包装器,使其与scikit-learn接口。SciKeras是 `tf.keras.wrappers.scikit_learn` 的继任者。 **联邦学习** - `Flower `_ 一个友好的联邦学习框架,采用统一的方法,可以联合任何工作负载、任何ML框架和任何编程语言。 **隐私保护机器学习** - `Concrete ML `_ 一个基于 `Concrete `_ 构建的隐私保护ML框架,通过全同态加密与传统ML框架绑定。所谓的Concrete ML内置模型的API与scikit-learn的API非常接近。 **广泛范围** - `mlxtend `_ 包含许多额外的估计器以及模型可视化工具。 - `scikit-lego `_ 许多与scikit-learn兼容的自定义转换器、模型和指标,专注于解决实际行业任务。 **其他回归和分类** - `ML-Ensemble `_ 广义的 集成学习(堆叠、混合、子集集成、深度集成等)。 - `lightning `_ 快速 最先进的线性模型求解器(SDCA、AdaGrad、SVRG、SAG等)。 - `py-earth `_ 多元 自适应回归样条 - `gplearn `_ 遗传编程 用于符号回归任务。 - `scikit-multilearn `_ 多标签分类,专注于标签空间操作。 - `seglearn `_ 使用滑动窗口分割的时间序列和序列学习。 - `fastFM `_ 快速因子分解机实现,兼容scikit-learn **分解与聚类** - `lda `_ : 在Cython中快速实现潜在狄利克雷分配,使用 `吉布斯采样 `_ 从真实后验分布中采样。(scikit-learn的 :class:`~sklearn.decomposition.LatentDirichletAllocation` 实现使用 `变分推断 `_ 从主题模型的可处理近似后验分布中采样。) - `kmodes `_ k-modes聚类算法,适用于分类数据,及其几种变体。 - `hdbscan `_ HDBSCAN和鲁棒单链接聚类算法,用于鲁棒可变密度聚类。截至scikit-learn版本1.3.0,有 :class:`~sklearn.cluster.HDBSCAN` 。 - `spherecluster `_ 单位超球面上的球形K均值和冯·米塞斯-费希尔混合聚类程序。 **预处理** - `categorical-encoding `_ 一个包含sklearn兼容的分类变量编码器的库。截至scikit-learn版本1.3.0,有 :class:`~sklearn.preprocessing.TargetEncoder` 。 - `imbalanced-learn `_ 多种方法用于欠采样和过采样数据集。 - `Feature-engine `_ 一个包含sklearn兼容的转换器的库,用于缺失数据插补、分类编码、变量变换、离散化、异常值处理等。Feature-engine允许将预处理步骤应用于选定的组。 变量和它与Scikit-learn Pipeline完全兼容。 **拓扑数据分析** - `giotto-tda `_ 一个用于 `拓扑数据分析 `_ 的库,旨在 提供一个与scikit-learn兼容的API。它提供了工具,将数据输入(点云、图、时间序列、图像)转换为适合 计算拓扑摘要的形式,并提供专门用于提取拓扑起源的标量特征集的组件,这些特征可以与scikit-learn中的其他特征提取方法一起使用。 Python的统计学习 ------------------ 其他对数据分析和机器学习有用的包。 - `Pandas `_ 用于处理异构和列式数据的工具,关系查询,时间序列和基本统计。 - `statsmodels `_ 估计和分析统计模型。更侧重于统计测试,而不是预测,与scikit-learn相比。 - `PyMC `_ 贝叶斯统计模型和拟合算法。 - `Seaborn `_ 基于matplotlib的可视化库。它提供了一个高级接口,用于绘制吸引人的统计图形。 - `scikit-survival `_ 一个实现模型以从删失时间到事件数据(也称为生存分析)中学习的库。 模型与scikit-learn完全兼容。 推荐引擎包 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - `implicit `_ ,用于隐式反馈数据集的库。 - `lightfm `_ 一个Python/Cython实现的混合推荐系统。 - `OpenRec `_ 基于TensorFlow的神经网络启发推荐算法。 - `Surprise Lib `_ 用于显式反馈数据集的库。 特定领域包 ~~~~~~~~~~~~ - `scikit-network `_ 图上的机器学习。 - `scikit-image `_ 图像处理和计算机视觉的Python库。 - `Natural language toolkit (nltk) `_ 自然语言处理和一些机器学习。 - `gensim `_ 用于主题建模、文档索引和相似性检索的库。 - `NiLearn `_ 神经影像的机器学习。 - `AstroML `_ 天文学的机器学习。 scikit-learn文档的翻译 ---------------------- 翻译的目的是为了在非英语语言中更容易阅读和理解。其目标是帮助那些不懂英语或有英语理解疑问的人。此外,有些人更喜欢阅读自己母语的文档,但请记住,唯一的官方文档是英文文档 [#f1]_。 这些翻译工作是社区倡议,我们无法控制它们。如果你想贡献或报告翻译中的问题,请联系翻译的作者。这里链接了一些可用的翻译,以促进它们的传播和社区的努力。 - `中文翻译 `_ ( `源码 `__) - `波斯语翻译 `_ ( `源码 `__) - `西班牙语翻译 `_ ( `源码 `__) - `韩语翻译 `_ ( `源码 `__) .. rubric:: 脚注 .. [#f1] 遵循 `Linux 文档免责声明 `__ (注:原文中的链接地址保持不变,仅翻译了文本内容。)