Pyspark特征工程--ElementwiseProduct

这篇博客介绍了如何使用 PySpark 的 `ElementwiseProduct` 类来对数据帧中的向量执行元素级(Hadamard)乘法。首先创建了一个 SparkSession,然后生成了一个包含向量的数据框。接着展示了如何通过设置不同的 `scalingVec` 参数来缩放向量,输出了不同的结果。最后,通过 `setParams` 方法重新设置 `scalingVec` 并再次应用变换。
摘要由CSDN通过智能技术生成

ElementwiseProduct

class pyspark.ml.feature.ElementwiseProduct(scalingVec=None, inputCol=None, outputCol=None)

使用提供的“权重”向量输出每个输入向量的 Hadamard 乘积(即元素乘积)。换句话说,它通过标量乘数缩放数据集的每一列

01.初始化

from pyspark.sql import SparkSession
spark = SparkSession.builder.config("spark.Driver.host","192.168.1.3")\
    .config("spark.ui.showConsoleProgress","false")\
    .appName("ElementwiseProduct").master("local[*]").getOrCreate()

02.生成数据

from pyspark.ml.linalg import Vectors
df = spark.createDataFrame([(Vectors.dense([2.0, 1.0, 3.0]),)], ["values"])
df.show()

​ 输出结果:

+-------------+
|       values|
+-------------+
|[2.0,1.0,3.0]|
+-------------+

03.按照向量进行缩放

from pyspark.ml.feature import ElementwiseProduct
elementwiseProduct = ElementwiseProduct(inputCol="values",scalingVec=Vectors.dense([9.0,8.0,7.0]),outputCol="res")
elementwiseProduct.transform(df).show()

​ 输出结果:

+-------------+---------------+
|       values|            res|
+-------------+---------------+
|[2.0,1.0,3.0]|[18.0,8.0,21.0]|
+-------------+---------------+

04.按照另一个向量进行缩放

elementwiseProduct2 = ElementwiseProduct(inputCol="values",scalingVec=Vectors.dense([9.0,2.0,3.0]),outputCol="res")
elementwiseProduct2.transform(df).show()

​ 输出结果:

+-------------+--------------+
|       values|           res|
+-------------+--------------+
|[2.0,1.0,3.0]|[18.0,2.0,9.0]|
+-------------+--------------+

05.重新设置参数,并进行缩放:

elementwiseProduct2.setParams(scalingVec=Vectors.dense([1.0,2.0,3.0]))
elementwiseProduct2.transform(df).show()

​ 输出结果:

+-------------+-------------+
|       values|          res|
+-------------+-------------+
|[2.0,1.0,3.0]|[2.0,2.0,9.0]|
+-------------+-------------+
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值