【发布时间】:2018-12-09 15:36:18
【问题描述】:
我想使用OneHotEncoder 转换具有相同分类值的多个列。我创建了一个复合字段并尝试在其上使用OneHotEncoder,如下所示:(项目 1-3 来自同一个项目列表)
import pyspark.sql.functions as F
df = df.withColumn("basket", myConcat("item1", "item2", "item3"))
indexer = StringIndexer(inputCol="basket", outputCol="basketIndex")
indexed = indexer.fit(df).transform(df)
encoder = OneHotEncoder(setInputCol="basketIndex", setOutputCol="basketVec")
encoded = encoder.transform(indexed)
def myConcat(*cols):
return F.concat(*[F.coalesce(c, F.lit("*")) for c in cols])
我收到一个内存不足错误。
这种方法有效吗?如何使用同一列表中的分类值对复合字段或多列进行热编码?
【问题讨论】:
标签: apache-spark pyspark one-hot-encoding multivalue