- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个包含 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/
我有一个包含 Spark 2.1 的集群和一个进程,该进程最后在文件中写入一个 PipelineModel,其中包含一个 StringIndexerModel。我可以在本地(使用 Spark 2.3)
我是一名优秀的程序员,十分优秀!