在PySpark中创建两个分类列之间的交互

k5ifujac  于 2023-10-15  发布在  Spark
关注(0)|答案(1)|浏览(103)

我在df中存储了两个多级分类列:

  1. dow表示星期几(七个类别Map到整数:1、2、...、7)。
  2. type表示四种类型的观察(四个类别Map到整数:1、2、3、4)。
    如何在PySpark中创建这两个列的交互(即乘法)?
    我知道如何使用OneHotEncoder编码它们。然而,我不确定如何进行特征工程过程来解释所有28种组合(7 x 4种可能的情况),特别是因为OneHotEncoder返回稀疏向量。
    对于这个问题,假设我的pyspark框架df看起来如下:
    | Dow|类型|目标|
    | --|--|--|
    | 1 | 1 | 200 |
    | 1 | 2 | 222 |
    | 1 | 7 | 229 |
    其中dow可以有七个不同的值,type可以有四个。是否有一种内置的方法来创建这两个列之间的交互,以便考虑所有可能的组合?
guykilcj

guykilcj1#

您可以通过将dow乘以10并添加type来为每个唯一值创建单独的整数来进行整数编码:

(
    df
    .select(
        (F.col('dow') * F.lit(10) + F.col('type')).alias('result'), 
        'dow', 
        'type'
    )
    .show()
)

+------+---+----+
|result|dow|type|
+------+---+----+
|    11|  1|   1|
|    12|  1|   2|
|    17|  1|   7|
+------+---+----+

相关问题