[开源] 基于CEEMDAN算法的python代码

整理了基于CEEMDAN算法的python代码,免费分享给大家,记得点赞哦~~~~

该算法主要对处理完的数据进行CEEMDAN分解,分解为K个模态分量和1个残差分量。

废话不多说直接上图和代码。

#!/usr/bin/env python
# coding: utf-8




import matplotlib.pyplot as plt
# 导入matplotlib的pyplot模块,用于数据可视化。
import tensorflow as tf
# 导入tensorflow库,用于深度学习模型的构建和训练
from PyEMD import EMD, EEMD, CEEMDAN
# 从PyEMD库导入EMD, EEMD, CEEMDAN,用于模态分解
import pandas as pd
# 导入pandas库,用于数据处理和分析
import warnings
# 导入warnings库,用于控制警告消息
warnings.filterwarnings("ignore")
# 设置忽略警告消息,通常用于减少输出中的不必要警告




# 调用GPU加速
gpus = tf.config.experimental.list_physical_devices(device_type='GPU')
for gpu in gpus:
    tf.config.experimental.set_memory_growth(gpu, True)




# 用来正常显示中文标签
plt.rcParams['font.sans-serif'] = ['Times New Roman']
# 用来正常显示负号
plt.rcParams['axes.unicode_minus'] = False


df_raw_data = pd.read_csv('电力负荷预测数据2.csv', encoding='gbk')
# 使用pandas的read_csv函数读取CSV文件。
# '股票预测.csv'是文件名。
# usecols=[0,-1]指定只读取CSV文件的第一列和最后一列。
# encoding='gbk'指定文件编码格式为GBK,GBK常用于中文字符编码。
series_close = pd.Series(df_raw_data['power'].values, index=df_raw_data['time'])
# 创建一个pandas的Series对象。
# df_raw_data['power'].values提取'power'列的值作为Series的数据。
# index=df_raw_data['time']设置Series的索引为'time'列的值。


print(series_close)



def ceemdan_decompose(series=None, trials=100, num_clusters=3):
    # 定义CEEMDAN分解函数。
    # series: 待分解的时间序列数据。
    # trials: CEEMDAN的试验次数,用于生成噪声。
    # num_clusters: 分解后的模态数量(这个参数在函数内并未使用)。

    decom = CEEMDAN()
    # 创建CEEMDAN对象。

    decom.trials = trials 
    # 设置CEEMDAN对象的试验次数。

    df_ceemdan = pd.DataFrame(decom(series.values).T)
    # 对时间序列数据执行CEEMDAN分解,并将结果转置后转换为DataFrame。

    df_ceemdan.columns = ['imf' + str(i+1) for i in range(len(df_ceemdan.columns))]
    # 为DataFrame的每一列命名,表示每个内在模态函数(IMF)。

    df = pd.DataFrame(df_ceemdan, columns=df_ceemdan.columns)
    # 创建一个新的DataFrame(这一步实际上是多余的,因为df_ceemdan已经是所需的DataFrame了)。

    return df_ceemdan
    # 返回分解结果的DataFrame。



df_ceemdan = ceemdan_decompose(series_close)
# 对series_close进行CEEMDAN分解,并返回结果的DataFrame。

# 可视化VMD分解结果
fig, axs = plt.subplots(nrows=len(df_ceemdan.columns), figsize=(10, 6), sharex=True)
# 创建一个绘图对象和多个子图对象。

for i, col in enumerate(df_ceemdan.columns):
    axs[i].plot(df_ceemdan[col])
    axs[i].set_title(col)
    # 遍历每个模态并绘制在子图上。

plt.suptitle('CEEMDAN Decomposition')
# 设置图表的总标题。

plt.xlabel('Time')
# 设置x轴的标签。

plt.show()
# 显示图表。




print(df_ceemdan)



df_ceemdan.to_excel("CEEMDAN.xlsx",index=False)#保存数据为CEEMDAN.xlsx







更多CEEMDAN组合算法获取链接:基于CEEMDAN的5种组合模型的时间序列预测python代码合集

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ceemdan是一个基于Python开源软件包,用于实现经验模态分解(EMD)和经验模态分解的经验模态分解(EMD-CCA)。EMD是一种信号处理技术,常用于非平稳和非线性信号的分解和分析。EMD-CCA是EMD的改进版,通过引入典型相关分析(CCA)来更好地处理信号噪声和模态混叠的问题。 使用ceemdan,首先需要安装ceemdan软件包。可以使用pip命令来安装ceemdan,命令如下: ``` pip install ceemdan ``` 安装完成后,可以导入ceemdan模块并使用其中的函数进行经验模态分解的相关操作。常用的函数有`emd()`和`emd_plot()`。 `emd()`函数用于对给定的一维信号进行经验模态分解。函数的输入参数为信号数据,输出为分解得到的具有不同时频特性的固有模态函数(IMF)。示例如下: ```python import ceemdan # 生成测试信号 import numpy as np t = np.linspace(0, 1, 100) x = np.sin(2*np.pi*5*t) + np.sin(2*np.pi*10*t) + np.random.normal(0, 0.2, 100) # 进行经验模态分解 imfs = ceemdan.emd(x) # 打印分解得到的IMF数量 print(len(imfs)) ``` `emd_plot()`函数用于绘制经验模态分解的结果。函数的输入参数为经验模态分解的结果,输出为绘制的分解结果图像。示例如下: ```python import matplotlib.pyplot as plt # 绘制分解结果图像 ceemdan.emd_plot(imfs) plt.show() ``` 总之,ceemdan是一个用于实现经验模态分解和经验模态分解的经验模态分解Python软件包,提供了多个函数用于进行信号的分解和分析,可以方便地进行非平稳和非线性信号的处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值