如何映射 Spark 中的 DataFrame 以提取行数据并使用 h2o mojo 模型进行预测

2024-01-18

我有一个 mojo 格式的保存的 h2o 模型,现在我尝试加载它并使用它对新数据集进行预测(df)作为用 scala 编写的 Spark 应用程序的一部分。理想情况下,我希望将一个新行附加到包含基于此模型的类概率的现有 DataFrame 中。

我可以看到如何将 mojo 应用于已经采用 RowData 格式的单个行(根据答案here https://stackoverflow.com/questions/46849368/create-a-map-to-call-the-pojo-for-each-row-of-spark-dataframe),但我不确定如何映射现有的 DataFrame,以便它采用正确的格式来使用 mojo 模型进行预测。我曾经使用过相当多的 DataFrame,但从未使用过底层的 RDD。

另外,这个模型是否应该被序列化/广播,以便可以在集群上并行完成预测,或者它是否可以作为地图的一部分提供给所有执行者?

我已经走到这一步了:

# load mojo model and create easy predict model wrapper
val mojo = MojoModel.load("loca/path/to/mojo/mojo.zip")
val easyModel = new EasyPredictModelWrapper(mojo)

# map over spark DataFrame, converty to rdd, and make predictions on each row:
df.rdd.map { row =>
   val prediction = easyModel.predictBinomial(row).classProbabilities
   println(prediction)
   }

But my row变量的格式不正确,无法正常工作。关于下一步尝试什么有什么建议吗?

编辑:我的 DataFrame 由 70 个预测特征列组成,它们是整数和类别/因子列的混合。一个非常简单的示例 DataFrame:

val df = Seq(
  (0, 3, "cat1"),
  (1, 2, "cat2"),
  (2, 6, "cat1")
).toDF("id", "age", "category")

使用此函数准备 H2O 所需的 RowData 对象:

def rowToRowData(df: DataFrame, row: Row): RowData = {
  val rowAsMap = row.getValuesMap[Any](df.schema.fieldNames)
  val rowData = rowAsMap.foldLeft(new RowData()) { case (rd, (k,v)) => 
    if (v != null) { rd.put(k, v.toString) }
    rd
  }
  rowData
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何映射 Spark 中的 DataFrame 以提取行数据并使用 h2o mojo 模型进行预测 的相关文章

随机推荐

  • ASP.Net MVC:将 JSON 发送到控制器

    在 ASP Net MVC 中向我的控制器发布帖子时 我希望能够发送 JSON 而不是标准查询字符串 我的前端工作正常 构建然后提交我的 JSON 对象 问题出在控制器端 MVC 框架附带的默认 ModelBinder 不支持此功能 我已经
  • 如何在页面的 Javascript 执行后加载内容脚本?

    我的扩展应该仅在其注入的页面已完全加载之后加载内容脚本 searchTopic js 是的 我已在扩展清单中将 run at 设置为 document end 但实际上它是在之前加载的所有 DOM 对象都已创建 关键的对象是通过页面中的一些
  • 房间数据库迁移fallbackToDestructiveMigration()不起作用

    我正在使用 Room 并在资产文件夹中预填充数据库 对于应用程序更新 我想通过添加新列并用新数据预填充此列来更改此数据库 数据库从版本 1 自动迁移到版本 2 添加了一个表 从版本 2 到版本 3 我现在想通过在资产文件夹中提供不同的 da
  • 如何在 Python 中生成可重现(带有种子)的随机 UUID

    The uuid4 https docs python org 2 library uuid html uuid uuid4Python模块的功能uuid生成一个随机的 UUID 并且似乎每次都会生成不同的 UUID In 1 import
  • 如何对 CI 管道中使用不属于 git 远程的模型文件的函数进行单元测试?

    我正在开发机器学习存储库 需要相当大的经过训练的模型文件才能运行 这些文件不是 git Remote 的一部分 但由 DVC 跟踪并保存在单独的远程存储中 当我尝试在 CI 管道中为需要这些模型文件进行预测的函数运行单元测试时 我遇到了问题
  • SCons配置文件和默认值

    我有一个使用 SCons 构建的项目 以及 MinGW gcc 具体取决于平台 这个项目依赖于其他几个库 我们称它们为libfoo and libbar 可以为不同的用户安装在不同的地方 目前 我的SConstruct文件嵌入了这些库的硬编
  • 如何生成包含所有问题的报告?

    我有一个在 AWB 中打开的 Fortify FPR 扫描文件 我想生成一份报告 其中包含发现问题的所有实例 当我生成报告时 它会生成按类型及其计数列出问题的报告 并且在类型下方我还会获得以下名称和代码片段some发现问题的文件 我想生成一
  • 在 iOS 9 上使用 NavigationController 自定义推送动画的过渡

    我在嵌入的视图控制器之间有一个自定义的推送转换UINavigationController当使用 iOS 7 8 构建时工作正常 但当针对 iOS 9 SDK 构建时会出现错误的布局 void animateTransition id
  • 从情节提要中的模态视图推送视图控制器

    我正在使用故事板并有一个以模态方式呈现的屏幕 然后我需要从中推送其他视图控制器 以便我可以为模态视图选择项目 类似于在 iPhone 日历应用程序上添加条目 所以我将从 导航控制器 gt VC gt 模态视图控制器 gt 这里我想推送一个V
  • 如何在 Material UI 中对齐水平图标和文本

    我是 Material UI 的新手 现在我的图标和文本未对齐 我想要的结果 我的代码是 div div
  • 河内塔 - 如何在每次递归时不跳过钉子

    我的任务是使用递归求解任意数字的河内塔 我用 C 编写了代码 Rules 无法将较大的磁盘堆叠在较小的磁盘之上 一次无法移动多个磁盘 3 一次只移动一个圆盘 不要回到起点或离开终点 如下 开始 gt peg1 peg2 peg3 gt EN
  • 定义 Laravel 表单字段的默认值

    要预填充表单字段 我们可以将 值 添加到 create blade php 中的表单字段 Form text title Some default title 有没有办法在其他地方 也许在模型或控制器中 完成该任务 我希望在创建和编辑视图中
  • 使用反射和列表的 C# 动态转换

    从昨天开始我就在解决一个问题 但我还没明白 我有一个包含许多方法的类 并在运行时决定必须调用哪个方法 每个方法都会返回一个列表 其中包含来自我的业务对象的元素 我的班级是这样的 public class ReflectiveClass pu
  • 使用 FBSDKCoreKit.framework 在 Xcode10 中发现意外的 Mach-O 标头代码:0x72613c21

    我有一个使用最新版本的 FacebookSDK 和 Xcode 10 的项目 该项目在设备中运行正常 但是在提交到 App Store 时 在验证过程中出现以下错误 发现意外的 Mach O 标头代码 0x72613c21 日志显示 201
  • Win32API 结构中 cbSize 成员的用途是什么

    我经常遇到一些 Win32API 结构 但不限于此 的定义 它们具有cbSize成员 如下例所示 typedef struct TEST int cbSize other members follow TEST PTEST 然后我们像这样使
  • 通过 Html.BeginForm 提交激活加载动画

    我想在用户单击提交按钮时显示加载动画 简单的 gif 就可以完成工作 这是我的代码 using Html BeginForm SData Crawl p Enter Starting URL p
  • 如何从 glm 对象获取 Z 统计值?

    如何获取 Z 统计值作为向量glm目的 例如 我有 fit lt glm y 0 x binomial 如何访问该专栏Pr gt z 同样的方式我得到系数的估计fit coef 我相信 coef summary fit Pr gt z 会给
  • 将 MapVirtualKeyA 与 Shift 和 Ctrl Alt 结合使用

    我已经发现这一页 https learn microsoft com en us windows win32 api winuser nf winuser mapvirtualkeya用于将给定的键码转换为相应的字符的函数 具体取决于系统语
  • 使用 Hilt 注入 viewModel 时不会调用 init

    我想在 ViewModel 初始化时发出 API 请求 这就是为什么我在里面发出 API 请求init方法 期待init当我在 Activity 中注入 viewModel 时被触发 我究竟做错了什么 MainViewModel kt Hi
  • 如何映射 Spark 中的 DataFrame 以提取行数据并使用 h2o mojo 模型进行预测

    我有一个 mojo 格式的保存的 h2o 模型 现在我尝试加载它并使用它对新数据集进行预测 df 作为用 scala 编写的 Spark 应用程序的一部分 理想情况下 我希望将一个新行附加到包含基于此模型的类概率的现有 DataFrame