首页 > 解决方案 > PySpark:无法导入名称“OneHotEncoderEstimator”

问题描述

我刚刚开始学习 Spark。目前,我正在尝试对我的数据帧中的单个列执行一次热编码。但是我无法从 pyspark 导入 OneHotEncoderEstimator。我尝试导入 OneHotEncoder(在 3.0.0 中已弃用),spark 可以导入它,但它缺少转换功能。这是下面我的代码的输出。如果有人遇到过类似的问题,请帮忙。非常感谢您的参与!!

在此处输入图像描述

标签: pythonapache-sparkpyspark

解决方案


您的第一个问题是编码器对象没有“转换”错误。这是一个类别索引器。在转换对象列之前,您必须使用 fit() 函数训练 OneHotEncoderEstimator。这样,您的编码器对象将从数据中学习,并将能够将数据传输到编码的类别向量。大多数类别索引器模型都需要 fit() 函数来从数据本身中学习。

所以你应该做的是

encoder = OneHotEncoderEstimator(dropLast=False, inputCol:"AgeIndex", outputCol="AgeVec"
model = encoder.fit(df)
encoded = model.transform(df)
encoded.show()

另外,如果您对某事不熟悉,我建议您在开始项目之前阅读文档,文档有很大帮助。包含转换操作的 spark 部分在此处作为链接发布。

Spark 转换操作

您的第二个问题是导入错误,因为您使用的是笔记本,我建议您检查笔记本的环境。但是您的版本是预览版,主要考虑开发人员和测试人员。对于初学者来说,应该总是选择最新的测试版本。尝试切换回 spark-2.4.4 并检查笔记本的环境。


推荐阅读