apache-spark - 一个热编码复合字段
问题描述
我想使用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])
我收到内存不足错误。
这种方法有效吗?如何使用同一列表中的分类值对复合字段或多列进行热编码?
解决方案
如果您有分类值数组,为什么不尝试 CountVectorizer:
import pyspark.sql.functions as F
from pyspark.ml.feature import CountVectorizer
df = df.withColumn("basket", myConcat("item1", "item2", "item3"))
indexer = CountVectorizer(inputCol="basket", outputCol="basketIndex")
indexed = indexer.fit(df).transform(df)
推荐阅读
- ios - 如何在不注册开发者计划的情况下获取 iOS 应用程序的大小?
- python - 将 .h5 (HDF5) 文件转换为 .zarr 格式时出现 TypeError
- php - 多个登录表单在 Laravel 中不起作用
- python-3.x - Django 给出 AttributeError - '_thread._local' 对象没有属性 'state'
- reactjs - React-pdf - 点击按钮下载 pdf
- html - 如何在具有不同 td 的表中对齐 div 或 li
- android-gradle-plugin - 无法解析 ':app@debugUnitTest/compileClasspath' 的依赖关系:无法解析 androidx.constraintlayout:constraintLayout:1.1.3
- c# - 具有通用模式的 WPF EF Core 依赖注入
- python - 在熊猫中按组获取令牌的频率
- c - 此项目中使用了以下变量,但它们设置为 NOTFOUND