应如何将经过训练的 ML 模型合并到使用这些经过训练的模型的软件包中

时间:2021-06-03 17:38:08

标签: r package

我一直在从事一个 ML 项目,该项目(在 R 项目中完成)产生了一些 ML 模型(使用插入符号构建)以及使用这些模型进行额外分析的代码。

作为下一阶段,我将通过创建一个 R 包来“部署”这些模型,我的合作者可以使用该包来分析新数据,其中分析包括使用经过训练的 ML 模型。该软件包包含生成报告的函数,其中嵌入在该报告中的是针对新数据集应用经过训练的 ML 模型。

我正在尝试确定将那些经过训练的模型包含在包中的“正确”方式。 (注意,目前每个模型都保存在自己的 .rds 文件中)。

我希望能够在包函数中使用这些模型。

我还想考虑在以后将模型“更新”到新版本的可能性。

所以……我应该:

  1. 在 inst/exdata 中包含 .rda 文件
  2. 作为 sysdata.rda 的一部分包含
  3. 将它们放在一个外部数据包中(这看起来很合理,除了教程中的几乎所有示例都希望一个数据包 包括 data.frame-ish 对象。)

关于第三个选项......我注意到这些模型可能意味着存在一些额外的“NAMESPACE”问题,因为这些模型需要一大堆插入符号相关的东西才能使用。 NAMESPACE 修改是否需要在“数据”包或我正在构建的将“使用”模型的包中?

1 个答案:

答案 0 :(得分:0)

我的第一个意图是选择 1。没有必要选择其他格式,如 PMML,因为您只想在 R 中运行它。所以我认为 Rda 是最好的。只要您的模型不是很大,与合作者共享应该没问题(但可能不适用于 CRAN 包)。我明白了,那 3. 听起来很方便,但为什么要分开模型和功能呢?新训练的模型将带有新的包版本,因为您无论如何都需要使用数据包。我看不到这种方式有多大收获,但我对数据包没有太多经验。