从 Spark (pyspark) 管道内的 StringIndexer 阶段获取标签

2023-11-26

我在用Spark and pyspark我有一个pipeline设置了一堆StringIndexer对象,我用它来将字符串列编码为索引列:

indexers = [StringIndexer(inputCol=column, outputCol=column + '_index').setHandleInvalid('skip')
            for column in list(set(data_frame.columns) - ignore_columns)]
pipeline = Pipeline(stages=indexers)
new_data_frame = pipeline.fit(data_frame).transform(data_frame)

问题是,我需要获取每个的标签列表StringIndexer安装后的对象。对于单个列和单个StringIndexer没有管道,这是一件容易的事。我只能访问labels将索引器安装到上之后的属性DataFrame:

indexer = StringIndexer(inputCol="name", outputCol="name_index")
indexer_fitted = indexer.fit(data_frame)
labels = indexer_fitted.labels
new_data_frame = indexer_fitted.transform(data_frame)

然而,当我使用管道时,这似乎不可能,或者至少我不知道如何做到这一点。

所以我想我的问题可以归结为: 有没有办法访问每个列的索引过程中使用的标签?

或者我是否必须在这个用例中放弃管道,例如循环遍历列表StringIndexer对象并手动执行? (我确信这是可能的。但是使用管道会更好)


示例数据和Pipeline:

from pyspark.ml.feature import StringIndexer, StringIndexerModel

df = spark.createDataFrame([("a", "foo"), ("b", "bar")], ("x1", "x2"))

pipeline = Pipeline(stages=[
    StringIndexer(inputCol=c, outputCol='{}_index'.format(c))
    for c in df.columns
])

model = pipeline.fit(df)

摘自stages:

# Accessing _java_obj shouldn't be necessary in Spark 2.3+
{x._java_obj.getOutputCol(): x.labels 
for x in model.stages if isinstance(x, StringIndexerModel)}
{'x1_index': ['a', 'b'], 'x2_index': ['foo', 'bar']}

来自转换后的元数据DataFrame:

indexed = model.transform(df)

{c.name: c.metadata["ml_attr"]["vals"]
for c in indexed.schema.fields if c.name.endswith("_index")}
{'x1_index': ['a', 'b'], 'x2_index': ['foo', 'bar']}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 Spark (pyspark) 管道内的 StringIndexer 阶段获取标签 的相关文章

随机推荐

  • jasperreport 5.0.1需要添加哪些依赖?

    I 升级jasper报告版本 from 4 5 0 至 5 1 0 当我安装插件时 它会抛出错误 例如缺少某些依赖项 我想使用 Maven 配置 JasperReports 5 1 0 Execution default of goal o
  • 安全 REST API,无需用户身份验证(无凭据)

    我已经为如何在没有用户身份验证的情况下保护 REST API 的安全而苦苦挣扎了 2 天 这是什么意思 在我的 AngularJS 应用程序中 我通过向我必须使用的现有服务 companydomain userinfo 发送 GET 请求来
  • Rails 路由 - 资源的自定义路由

    我目前正在构建一个 Rails 应用程序 我想坚持使用所有这些奇特的东西 例如 REST 和资源 但我想稍微自定义一下我的路线 我希望我的 GET 路线更加详细 我正在创建的应用程序是一个简单的博客 所以而不是GET posts 1我更喜欢
  • 在 CodeIgniter 中处理数据库错误的最佳实践

    我有一个带有唯一键的表 date userid 在我的网络应用程序数据库中 当我尝试插入现有记录时date and userid我收到以下错误 dupicate key in table 我在应用程序配置中打开了数据库调试器 因为我需要使用
  • 交错网格布局管理器动态列数

    我如何使动态列数RecyclerView using StaggeredGridLayoutManager 我已经有工作了RecyclerView 这是我需要做的屏幕 如果最大列是两个 那就很简单了 对于占据整个宽度的视图 setFullS
  • 将字符串的第一个字母大写,而不接触其他字母

    我想将字符串的第一个字母大写 但保留其余字母 我拥有的 赛车 我想要的是 赛车 然后只需将第一个字母大写str upper 并连接其余部分不变 string 0 upper string 1 Demo gt gt gt string rac
  • 测试 SQL 连接字符串可用性的最有效方法

    我有这段代码 我试图让它测试 SQL 字符串连接 但我不知道如何处理该部分connection Open true你能帮我解决这个问题吗 非常感谢您的参与 private void button1 Click object sender E
  • 使用 tcltk 在 R 脚本中添加弹出文本框

    我有一个很长的脚本来进行一些数据分析 它必须连接到多个数据库 其中一个数据库更新密码的频率往往比我想要的要高 因此我想添加一个弹出框供我输入当前密码 我找到了这个示例 但不了解足够的 tcltk 来查看当对话框关闭时 hwo 返回我的值 我
  • Rust 中的英文字母作为字符向量

    标题说明了一切 我想将字母表生成为字符向量 我确实考虑过简单地创建 97 122 的范围并将其转换为字符 但我希望有一种更好看的方式 例如 Python 的string ascii lower 生成的向量或字符串应包含字符 a z 对这类事
  • 如何使用knitr从r脚本函数生成多个文件

    我想从 r 脚本生成一些报告 我想避免从 rmd 文件编译时所需的重复 并且如果可能的话 我想从 r 脚本本身生成报告 该脚本具有一个函数 该函数应该从一系列数据帧生成每个报告 其中每个报告代表一个数据帧的处理 我只是不明白如何单独生成每个
  • JAVA中实例化的具体含义是什么

    我是一个JAVA新手 这次遇到了这个词叫做 在java中 在方法内部创建的类称为局部内部类 如果要调用局部内部类的方法 则必须实例化这个类在方法中 该词以粗体显示 谁能帮我解决这个问题 我知道这很尴尬 我应该进行更多研究 但我就是无法理解
  • 禁止从 Python 函数打印 stdout / stderr

    我有一个 Python 脚本 它使用我的雇主提供的一些封闭式 Python 函数 即我无法编辑这些函数 当我调用这些函数时 它们会将输出打印到我想禁止的 Linux 终端 我尝试通过重定向 stdout stderr orig out sy
  • 错误:找不到 npm 模块“时刻”

    我有一个 Meteor 应用程序 可以在本地主机上完美运行 但是当我将其部署到远程时heroku服务器 我收到以下错误 我正在实施this 请问有什么办法解决这个问题吗 2016 09 09T13 26 02 533532 00 00 he
  • 创建静态和共享 C++ 库

    我想建立静态库和共享库在一个项目中 我知道需要从使用 fpic 编译的对象创建共享库以获得位置无关代码 而静态库不需要这个 这一切都很好 我可以创建共享库或静态库 我不想编译我的源代码两次以获得不同的目标文件 那么这通常是如何完成的 我读如
  • Linux,第一次读取或第一次写入时会清零页面页错误吗?

    我的问题是 Linux 特定的 需要了解内核 虚拟内存 mmap 页面错误 我有一个带有大型静态数组的 C 程序 它将进入 bss 部分 内存 初始化为零 当程序启动时 这块内存并没有物理分配 只有虚拟内存 虚拟内存的每一页都映射到特殊的零
  • iOS 将文件从主包复制到文档目录

    我正在尝试将添加到名为 includes 的文件夹中的文件复制到文档目录上也称为 includes 的文件夹中 我得到的值为零resContents Why void copyResources NSString sourcePath NS
  • 流式传输实时音频

    我想在 Android 设备上具有实时音频流的功能 它通过设备的 MIC 捕获音频并将其发送到服务器 我知道在录制后发送音频文件 但如果是实时的 我需要帮助 也许可以通过不断向服务器发送字节数组来完成 如果是的话 如何或是否有其他方式 请分
  • TypeError: Type str 不支持 buffer API # find 方法?

    这是我的输入 div class content div class stream item header a class account group js account group js action profile js user p
  • Apple A4 上的 YUV 到 RGBA,我应该使用着色器还是 NEON?

    我正在使用 OpenGL ES 和 ffmpeg 为 Apple TV 编写媒体播放器框架 在 OpenGL ES 上渲染需要转换为 RGBA 使用 swscale 进行软转换速度慢得难以忍受 所以根据网上的信息我想出了两个想法 使用 ne
  • 从 Spark (pyspark) 管道内的 StringIndexer 阶段获取标签

    我在用Spark and pyspark我有一个pipeline设置了一堆StringIndexer对象 我用它来将字符串列编码为索引列 indexers StringIndexer inputCol column outputCol co