【问题标题】:PySpark- OneHotEncodingPySpark-OneHotEncoding
【发布时间】:2017-02-07 08:04:53
【问题描述】:

这可能是幼稚的,但我刚开始使用 PySpark 和 Spark。请帮助我理解 Pyspark 中的一种热门技术。我正在尝试在其中一列上执行 OneHotEncoding。在一次热编码之后,数据帧模式添加了一个向量。但是要应用机器学习算法,那应该是将单个列添加到现有数据框中,每列代表一个类别,而不是向量类型列。如何验证 OneHotEncoding。

我的代码:

    stringIndexer = StringIndexer(inputCol="business_type", outputCol="business_type_Index")
    model = stringIndexer.fit(df)
    indexed = model.transform(df)
    encoder = OneHotEncoder(dropLast=False, inputCol="business_type_Index", outputCol="business_type_Vec")
    encoded = encoder.transform(indexed)
    encoded.select("business_type_Vec").show()

本次展示:

+-----------------+
|business_type_Vec|
+-----------------+
|    (2,[0],[1.0])|
|    (2,[0],[1.0])|
|    (2,[0],[1.0])|
|    (2,[0],[1.0])|
|    (2,[0],[1.0])|
|    (2,[0],[1.0])|
|    (2,[0],[1.0])|
|    (2,[0],[1.0])|
|    (2,[0],[1.0])|
|    (2,[0],[1.0])|
|    (2,[0],[1.0])|
|    (2,[0],[1.0])|
|    (2,[0],[1.0])|
|    (2,[0],[1.0])|
|    (2,[0],[1.0])|
|    (2,[0],[1.0])|
|    (2,[0],[1.0])|
|    (2,[0],[1.0])|
|    (2,[0],[1.0])|
|    (2,[0],[1.0])|
+-----------------+
only showing top 20 rows

新添加的列是向量类型。如何将其转换为每个类别的单独列

【问题讨论】:

  • 这是预期行为,您无需转换为单个列,因为 spark ML 使用特征向量。

标签: python-2.7 apache-spark pyspark one-hot-encoding


【解决方案1】:

您可能已经有了答案,但也许对其他人有帮助。对于向量拆分,您可以使用这个答案(我已经检查过它是否有效):

How to split dense Vector into columns - using pyspark

但是我认为您不需要将向量转换回列(正如 mtoto 已经说过的那样),因为 spark 中的所有模型实际上都要求您提供向量格式的输入特征(如果我错了,请纠正我)。

【讨论】:

    猜你喜欢
    • 2016-12-23
    • 2020-06-30
    • 1970-01-01
    • 2020-12-27
    • 1970-01-01
    • 2020-04-11
    • 2021-09-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多