基于spark实现emd算法

emd(empirical mode decomposition)算法广泛用于非平稳时间序列的平稳性处理,其基本原理是将原始序列分解为一系列本征模函数(IMFs)。在数据量比较大的情形下,单机难以处理,可以借助spark分布式计算框架将时间序列分割存储于worker节点上,在分别对每个节点上的子序列进行emd分解,最后将各个节点的结果进行叠加。这一过程需借助RDD的mapPartitions方法实现。

    def f(iterator):
        data = [x for x in iterator]
        npArray = np.array(data).astype('float32')
        imfs = emd(npArray, n_imfs=params['n_imfs'])
        imfs = np.array(imfs).T.tolist()
        return imfs
    y_label = y_label.mapPartitions(f)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容