您是否必须 pickle 缩放器和 ML 模型才能部署?

2024-04-01

当使用 sklearn 训练 ML 模型时,我通常使用 sklearn 内置的 StandardScaler...首先将缩放器拟合到训练数据,然后转换训练数据...最后使用相同的 StandardScaler 对象来转换测试数据通过训练数据集中之前的拟合参数。

sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)

然而,我最近意识到,我认为任何在不同环境中腌制和重新部署 ML 模型的尝试也需要腌制 StandardScaler...否则新的条目数据在输入之前将无法进行转换进入模型。这是我的错误,还是我只是错过了一些东西。每次尝试将 ML 模型和 StandardScaler 部署到其他地方时,是否都必须对其进行 pickle? 奇怪的是,Sci-kit 学习中从未提到过这一点模型持久化 https://scikit-learn.org/stable/modules/model_persistence.html文档。

joblib.dump(model, 'pickledModel.joblib')
joblib.dump(sc, 'pickledScaler.joblib')

实际上,为了部署,您可能还需要序列化模型以将其作为字节放入数据库中。和joblib这有点棘手,因为你只能转储到文件。基本上,您创建一些虚拟容器并将其转储到那里。

from io import BytesIO

import joblib

def serialize(obj) -> bytes:
    container = BytesIO()
    joblib.dump(obj, container)
    container.seek(0)

    serialized = container.read()
    return serialized


def deserialize(obj: bytes):
    container = BytesIO()
    container.write(obj)
    container.seek(0)

    deserialized = joblib.load(container)
    return deserialized
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

您是否必须 pickle 缩放器和 ML 模型才能部署? 的相关文章

随机推荐

  • Android PreferenceFragment 找不到片段 id 的视图

    所以我正在制作一个android应用程序 我开始处理首选项 当我简单地使用 PreferenceActivity 时 一切都很完美 但是 如果我将它与 PreferenceFragment 一起使用 那么在我单击调用意图到 Settings
  • 表单身份验证添加附加信息以及 ReturnUrl

    使用表单身份验证 当应用程序需要重定向到登录页面时 是否有一个事件或任何可扩展点可以让我在重定向到登录页面之前对请求执行其他工作 我想在查询字符串中发送附加信息 这些信息可能会有所不同 因此无法将其静态嵌入到 web config 中的 l
  • 在 Android 上解析 DNS SRV 记录的轻量级方法

    在 Android 上进行 SRV 记录查找最节省资源的方法是什么 例如在 XMPP 客户端中 例如yaxim https github com pfleidi yaxim 我知道 JNDI http docs oracle com jav
  • 安装 play 框架 mongodb morphia 模块

    我正在使用以 mongodb 作为后端的 play 框架进行应用程序开发 我已经在我的 ubuntu 和 windows 上成功安装了 mongodb 和 playframework 但是如果我想使用 mongodb 我需要 play 框架
  • MacOS 更喜欢 /bin/sh 还是 /bin/bash?

    我想与某人共享一个脚本 但不确定在 MacOS 上首选哪个 哪一个最好支持 This bin sh echo Here goes my simple script that changes some settings do some stu
  • 从 ActionBarSherlock 迁移到 ActionBarCompat 时有哪些常见问题?

    我想从我的应用程序中删除 ActionBarSherlock 并将其替换为标准 ActionBarCompat 如何实现 ActionBarCompat 如何迁移活动 哪些导入替代了 ActionBarSherlock 导入 典型问题有哪些
  • 与 C# 4.0 一起使用的最佳 ORM [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 最好的方法是使用像 Nhiberta
  • 带 $ 的 Haskell 偏函数应用

    我是 Haskell 的新手 正在查看一个使用函数应用程序的简单示例 这看起来很简单 它需要一个函数并将其应用于一个值 所以这是有道理的 gt 3 2 5 这也是有道理的 gt 3 2 5 这是有道理的 因为第一个参数是函数 第二个参数是值
  • 存储桶日志文件的 S3 数据分区

    我有一个 s3 存储桶 ABC 并且在此存储桶上启用了日志记录 日志存储在 ABC logs 中 每天 ABC logs 中有许多文件 现在我想逐年分离这些日志 例如 s3 ABC logs year 2015 s3 ABC logs ye
  • ng2-charts 的自定义工具提示

    我正在做一些研究 我想知道是否可以像 Chart js 中那样制作自定义工具提示 但我找不到任何东西 我想在我的工具提示中添加一些 css 我正在使用 Angular5 尝试将其添加到您的图表选项 public barChartOption
  • 表情符号取值范围

    我试图从字符串中取出所有表情符号 就像消毒剂一样 但我找不到完整的表情符号值集 表情符号字符的 UTF16 值的完整集合是什么 Unicode 标准的Unicode 技术报告 51 http www unicode org reports
  • 更改Windows Phone通用应用程序中内容对话框按钮的样式

    我在 xaml 中定义了此内容对话框
  • 防止 python 覆盖范围包含虚拟环境站点包

    我是报道新手 遇到了一个奇怪的问题 我的报道考虑了我的虚拟环境站点包 这是覆盖率运行的输出 coverage run test py Ran 20 tests in 0 060s OK atcatalog jmfrank63 fullsta
  • 无法在 vs2008 中打开 NerdDinner 项目

    NerdDinner csproj 不会在带有 net 3 5 sp1 的 vs2008 sp1 中加载 我是不是对这些工具或其他东西不了解最新的情况 它抱怨此安装不支持此项目类型 您是否安装了 ASP NET MVC 框架 如果没有 你需
  • 将数据帧系列中的分数转换为浮点数

    在 Python 3 x 中 如何将包含分数字符串和 NaN 值的 Dataframe 列转换为浮点数 我尝试了一些方法 但没有找到合适的解决方案 所以如果我有一个数据框 df 它看起来像 a b 0 John 20 1 1 Bob NaN
  • 如何在 R 中获取整数哈希码?

    我想做的是在 R 中实现一个哈希技巧 代码如下 library digest a lt digest key a algo xxhash32 1 4da5b0f8 这返回了字符类型的哈希码 有什么办法可以把它变成整数吗 或者还有其他包可以实
  • 使用 Passport-facebook 从 Facebook 检索照片

    我可以通过 Passport facebook 检索基本用户信息 遵循以下代码并保存在 mongodb 中 app get auth facebook passport authenticate facebook scope email p
  • 从kafka主题中删除单个记录

    有没有办法从kafka主题中删除单个记录 我知道有一个脚本 kafka delete records sh 可以删除指定主题和分区上指定偏移量之前的记录 但我希望能够删除我指定的偏移量上的记录 有没有办法做到这一点 这不是在 Java 上
  • Python 输出格式

    你好 我搜索过输出格式 但格式没有成功 我找不到合适的文档 我真的想了解这段代码是如何工作的 如果有人可以启发我吗 print Survived i 1f len survived float len survived len train
  • 您是否必须 pickle 缩放器和 ML 模型才能部署?

    当使用 sklearn 训练 ML 模型时 我通常使用 sklearn 内置的 StandardScaler 首先将缩放器拟合到训练数据 然后转换训练数据 最后使用相同的 StandardScaler 对象来转换测试数据通过训练数据集中之前