【问题标题】:Is there any way to check whether IndextoString assigns the same values while using labels from StringIndexerModel有没有办法检查 IndextoString 在使用 StringIndexerModel 中的标签时是否分配相同的值
【发布时间】:2023-03-02 23:34:01
【问题描述】:

我有 spark 数据框,其中列 status("Placed","Not Placed") 有两个目标类。

我使用 StringIndexer 将上面的列转换为管道中的索引并执行它。

str_indexer = StringIndexer(inputCol=status,outputCol="status_index").fit(df_train).transform(df_train)

它分配了这些值 - {0: 'Placed', 1: 'Not Placed'}

使用IndextoString将RandomForest算法生成的预测标签再次转换为String,并使用上述StringIndexer(str_indexer)生成的标签

IndexToString(inputCol="prediction",outputCol="status",labels=loaded_model.stages[0].labels).transform(in_indexed)

  1. 这是将索引转换回字符串的正确方法吗?
  2. 上述 IndextoString 是否分配了相同的值,即“已放置”为 0,“未放置”为 1?
  3. 有什么方法可以测试 IndextoString 分配的值是否与 StringIndexer 相同

【问题讨论】:

    标签: apache-spark pyspark apache-spark-mllib


    【解决方案1】:

    是的,这是正确的方法。要检查映射,您可以在使用 IndextoString as 转换数据框后尝试

    df.select('status','prediction').distinct().show()
    

    这将为您提供映射

    【讨论】:

    • 嗨 Raghu,在正常情况下,IndextoString 使用列的元数据来分配标签。在上述场景中,我明确向 IndextoString 提供标签,那么有什么方法可以检查 IndextoString 是如何分配值的?
    • 您是从存储的模型中获取标签列表对吧?那么映射将与您在训练中使用的相同。为了确保,请尝试我的答案中的代码。然后你会得到 ````状态预测放置 1 未放置 0 ````
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-02
    • 1970-01-01
    • 1970-01-01
    • 2020-12-28
    • 2010-10-26
    相关资源
    最近更新 更多