基于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)

你可能感兴趣的:(基于spark实现emd算法)