gpt4 book ai didi

apache-spark - Spark,ML,StringIndexer:处理看不见的标签

转载 作者:行者123 更新时间:2023-12-03 15:09:10 26 4
gpt4 key购买 nike

我的目标是建立一个multicalss分类器。

我已经建立了用于特征提取的管道,并且第一步包括StringIndexer转换器,将每个类名称映射到标签,该标签将在分类器训练步骤中使用。

管道已安装培训套件。

为了提取相同的特征 vector ,测试集必须由拟合的管道处理。

知道我的测试集文件具有训练集的相同结构。这里可能的情况是在测试集中遇到一个看不见的类名,在这种情况下,StringIndexer将无法找到标签,并且将引发异常。

有这种情况的解决方案吗?或如何避免这种情况发生?

最佳答案

使用Spark 2.2(7-2017发布),您可以在创建索引器时使用.setHandleInvalid("keep")选项。使用此选项,索引器在看到新标签时会添加新索引。

val categoryIndexerModel = new StringIndexer()
.setInputCol("category")
.setOutputCol("indexedCategory")
.setHandleInvalid("keep") // options are "keep", "error" or "skip"

documentation来看,有三种策略,当将StringIndexer放在一个数据集上然后用它转换另一个数据集时,StringIndexer将如何处理看不见的标签:
  • 'error':引发异常(默认)
  • 'skip':完全跳过包含看不见标签的行(删除输出中的行!)
  • 'keep':将看不见的标签放在索引numLabels处的特殊附加存储桶中

  • 请参阅链接的文档,以获取有关StringIndexer的输出如何查找不同选项的示例。

    关于apache-spark - Spark,ML,StringIndexer:处理看不见的标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34681534/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com