如何解决包装在管道对象中时更改 PySpark StringIndexer input_col 参数
我正在构建一个 Pipeline
对象以使用 StringIndexer
对象对我的类别列进行编码。
indexers = [StringIndexer(inputCol='FirstName',outputCol='FirstName_new',handleInvalid='keep',stringOrderType='frequencyDesc').fit(df)]
pipeline = Pipeline(stages=indexers)
pipeline.write().overwrite().save(path)
我想在另一列上使用相同的管道对象(我有一个需要它的特定用例)。有什么办法可以更改 input_col
参数吗?
解决方法
您可以使用 setInputCol
方法设置更改输入列名称。
indexers = [StringIndexer(inputCol='FirstName',outputCol='FirstName_new',handleInvalid='keep',stringOrderType='frequencyDesc')]
pipeline = Pipeline(stages=indexers)
>>> print(pipeline.getStages()[0].getInputCol())
FirstName
pipeline.getStages()[0].setInputCol('test')
>>> print(pipeline.getStages()[0].getInputCol())
'test'
请注意,您不应将 fit(df)
放入管道中 - 您应该使用管道来适应数据,例如pipeline.fit(df)
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。