SparkMl-Discrete Cosine Transform [DCT] (离散余弦变换)

原创
2019/11/12 11:22
阅读数 557

Discrete Cosine Transform [DCT] (离散余弦变换)

描述:DCT是一个Transformer。

离散余弦变换是与傅里叶变换相关的一种变换,它类似于离散傅立叶变换但是只使用实数。离散余弦变换相当于一个长度大概是它两倍的离散傅里叶变换,这个离散傅里叶变换是对一个实偶函数进行的(因为一个实偶函数的傅里叶变换仍然是一个实偶函数)。

参数信息 参数描述 备注 其他
setInputCol String DF中待变换的特征,类型为:vector  
setOutputCol String 转换后的类型为:vector  
setInverse Boolean true:执行反DCT,false:执行正向DCT 默认值:false

程序示例:

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_dtc"
    //设置模型
    val dct = new DCT()
    .setInputCol(feature )         //待变换的特征
    .setOutputCol(feature_new )    //变换后的特征名称
    .setInverse(false)             //true:执行反DCT,false:执行正向DCT.默认值:false
    //模型测试
    var transform = dct.transform(dataFrame)
    //show
    transform.show(100, 100)
    
    dataFrame.show(false)
}

数据结果:

+---+--------------------+----------------------------------------------------------------+
| id|            features|                                                    features_dtc|
+---+--------------------+----------------------------------------------------------------+
|  0|  [0.0,1.0,-2.0,3.0]|[1.0,-1.1480502970952693,2.0000000000000004,-2.7716385975338604]|
|  1| [-1.0,2.0,4.0,-7.0]|  [-1.0,3.378492794482933,-7.000000000000001,2.9301512653149677]|
|  2|[14.0,-2.0,-5.0,1.0]|   [4.0,9.304453421915744,11.000000000000002,1.5579302036357163]|
+---+--------------------+----------------------------------------------------------------+

实际应用例子:

      离散余弦变换,经常被信号处理和图像处理使用,用于对信号和图像(包括静止图像和运动图像)进行有损数据压缩

更多博客推荐:

      SparkML(2.1.0)机器学习库指南

      本文链接:[DCT] (离散余弦变换)

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