【问题标题】:PySpark: cannot import name 'OneHotEncoderEstimator'PySpark:无法导入名称“OneHotEncoderEstimator”
【发布时间】:2020-01-27 07:11:43
【问题描述】:

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

【问题讨论】:

  • avoid SO上的截图。
  • @cronoik 说了什么

标签: python apache-spark pyspark


【解决方案1】:

除了 Ulgen,OneHotEncoderEstimator 已从 spark 版本 2.4 起重命名为 OneHotEncoder

【讨论】:

    【解决方案2】:

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

    所以你应该做的是

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

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

    Spark Transformation Operations

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

    【讨论】:

    • 非常感谢您的快速回复!我确实从 spark github repo 中阅读了 OneHotEncoder example,但我输入了错误的,所以它被窃听了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-11
    • 2020-02-05
    • 2011-07-11
    • 2018-06-11
    • 2014-11-20
    相关资源
    最近更新 更多