Python-实战:基于鲸鱼WOA的VMD超参数优化

目录

1 原理

2 实战

2.1 原始时间序列

 2.2 直接设置参数进行VMD分解

 2.3 WOA优化VMD超参数

 2.4 利用优化的参数进行VMD分解

 3 代码


在VMD--变分模态分解的使用中,他的k和alpha对分解结果影响很大,大量文章对这两个参数进行 了优化选择,比如通过分析模态的fft频谱,有通过优化算法的优化选择,网上也有少量matlab案例,但python的基本上没有,针对这个,本人写了一个python版本的。

1 原理

时间序列越复杂,样本熵SE的计算值越大,反之亦然。因此,应用VMD对信号进行分解后,计算每个子序列的SE值,SE最小的序列为所分解序列的趋势项。

当分解数K较小时,可能导致信号分解不足,趋势项中混入其他干扰项,导致SE值变大。当取适当的K值时,趋势项的SE变小。因此,将分解出的IMF中的最小的那个熵SE(局部样本熵)最小化时,VMD分解为最佳

当然样本熵有其局限性,所以目前又有很多方法,比如最小化包络熵、最小化谱相关峭度等,本文依旧以最小化局部样本熵为出发点编程

'''适应度函数,最小化各VMD分量的局部样本熵'''
def fitness(pop,data):
    np.random.seed(0)
    
    K = int(pop[0])
    alpha = int(pop[1])
    #print(K,alpha)
    tau = 0  
    DC = 0         
    init = 1         
    tol = 1e-7
    imf,res,u_hat,omega=VMD(data, alpha, tau, K, DC, init, tol)
    comp=np.vstack([imf,res.reshape(1,-1)])
    SE = 0
    se_imf=[]
    for i in range(comp.shape[0]):
        temp= sampEn(comp[i,:], np.std(comp[i,:]),2, 0.15)
        SE +=temp
        se_imf.append(temp)
    # fit = SE
    # fit = SE/K
    fit = min(se_imf)
    
    
    np.random.seed(int(time.time()))
    return fit 

2 实战

2.1 原始时间序列

 2.2 直接设置参数进行VMD分解

 2.3 WOA优化VMD超参数

        由于我们是最小化局部样本熵,所以适应度曲线是一条下降的曲线

最优的k和alpha为9和65

iteration 1 = 0.03475234914892587 [6, 715]
iteration 2 = 0.03474872927521434 [6, 721]
iteration 3 = 0.03423725134060173 [8, 882]
iteration 4 = 0.034142069286057515 [9, 920]
iteration 5 = 0.015960969553223837 [9, 65]
iteration 6 = 0.015960969553223837 [9, 65]
iteration 7 = 0.015960969553223837 [9, 65]
iteration 8 = 0.015960969553223837 [9, 65]
iteration 9 = 0.015960969553223837 [9, 65]
iteration 10 = 0.015960969553223837 [9, 65]

 2.4 利用优化的参数进行VMD分解

 3 代码

看我的博客评论区

  • 8
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

机器鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值