SparkMl-ElementwiseProduct (向量权重变换)

原创
2019/11/12 14:30
阅读数 778

ElementwiseProduct (向量权重变换)

描述:ElementwiseProduct 是一个Transformer。

对每一个输入向量乘以一个给定的“权重”向量。换句话说,就是通过一个乘子对数据集的每一列进行缩放。这个转换可以表示为如下的形式:

        

参数信息 参数描述 备注 其他
setInputCol String DF中待变换的特征,类型为:vector  
setOutputCol String 转换后的类型为:vector  
setScalingVec Vector 向量 必填

程序示例:

def getDataFrame(sparkSession: SparkSession = this.getSparkSession()): DataFrame = {
    sparkSession.createDataFrame(Seq(
         (0, Vectors.dense(0.0, 1.0, -2.0, 3.0)),
         (1, Vectors.dense(-1.0, 2.0, 4.0, -7.0)),
         (2, Vectors.dense(14.0, -2.0, -5.0, 1.0))
    ))
    .toDF("id", "features")
}
    
def execute(dataFrame: DataFrame) = {
    //特征名称
    var feature = "features"
    var feature_new = "features_elementwise"
    //权重向量
    val transformingVector = Vectors.dense(0.0, 1.0, 2.0, 3.0)
    //设置模型
    val elementwiseProduct = new ElementwiseProduct()
    .setInputCol(feature)                 //待变换的特征
    .setOutputCol(feature_new)            //变换后的特征名称
    .setScalingVec(transformingVector)    //权重向量
    //模型测试
    var transform = elementwiseProduct.transform(dataFrame)
    //show
    transform.show(100, 100)
}

数据结果:

+---+--------------------+--------------------+
| id|            features|features_elementwise|
+---+--------------------+--------------------+
|  0|  [0.0,1.0,-2.0,3.0]|  [0.0,1.0,-4.0,9.0]|
|  1| [-1.0,2.0,4.0,-7.0]|[-0.0,2.0,8.0,-21.0]|
|  2|[14.0,-2.0,-5.0,1.0]|[0.0,-2.0,-10.0,3.0]|
+---+--------------------+--------------------+

实际应用例子:

      特征加权处理

更多博客推荐:

      SparkML(2.1.0)机器学习库指南

      本文链接:SparkMl-ElementwiseProduct (向量权重变换)

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部