gpt4 book ai didi

python - StringIndexerModel inputCol

转载 作者:行者123 更新时间:2023-12-01 01:29:52 24 4
gpt4 key购买 nike

我有一个包含 Spark 2.1 的集群和一个进程,该进程最后在文件中写入一个 PipelineModel,其中包含一个 StringIndexerModel。我可以在本地(使用 Spark 2.3)加载管道并检查 StringIndexerModel。看起来很奇怪的是,两个版本之间的方法和字段不同,即使它们读取相同的文件。特别是,在 Spark 2.1 中,字段 inputCol 似乎不存在,即使显然需要它来使 StringIndexer 工作。

这就是我得到的。

Spark 2.1:

pip1 = PipelineModel.load("somepath")
si = pip1.stages[0]
si
#StringIndexer_494eb1f86ababc8540e2
si.inputCol
#Traceback (most recent call last):
# File "<stdin>", line 1, in <module>
#AttributeError: 'StringIndexerModel' object has no attribute 'inputCol'

Spark 2.3

pip1 = PipelineModel.load("somepath")
si = pip1.stages[0]
si
#StringIndexer_494eb1f86ababc8540e2
si.inputCol
#Param(parent='StringIndexer_494eb1f86ababc8540e2', name='inputCol', doc='input column name')

我知道方法和字段可能会从一个版本更改为另一个版本,但是 inputCol 必须位于对象中的某个位置,因为必须使 fit转换工作。有没有办法用 PySpark 提取 Spark 2.1 中的 inputCol

最佳答案

Spark ML 中的繁重工作是由内部 Java 对象 (_java_obj) 完成的,这就是对象可以工作的原因,即使内部从未在 Python API 中完全公开。这当然限制了在不深入 Java API 的情况下可以完成的操作,并且由于 Spark 2.3 Params 在 PySpark 模型中公开 ( SPARK-10931 )。

在以前的版本中,您可以访问内部模型,并从那里获取数据。但是,如果您想获取 Param 的值,您应该使用 get* 方法,而不是 Param 本身。

si._java_obj.getInputCol()

相关:

关于python - StringIndexerModel inputCol,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52989574/

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