样本熵的计算与可视化 python

样本熵的计算包和原理见下链接:

# 计算样本熵 https://sampen.readthedocs.io/en/stable/#with-tox
# 样本熵的解释 https://www.zhihu.com/question/266285555

直接上可视化(我看了很多论文的图,都画这样)

from sampen import sampen2
def sample_entropy(IImfs):
    # 计算样本熵 m=1、2, r=0.1、0.2
    sampen=[]
    for i in IImfs:
        for j in (0.1,0.2):
            sample_entropy=sampen2(list(i),mm=2,r=j,normalize=True)
            sampen.append(sample_entropy)

    # 分离
    entropy_r1m1=[]  # r=0.1、m=1
    entropy_r1m2=[]  # r=0.1、m=2
    entropy_r2m1=[]  # r=0.2、m=1
    entropy_r2m2=[]  # r=0.2、m=2
    for i in range(len(sampen)):
        if (i%2)==0: # r = 0.1
            # m = 1
            entropy_r1m1.append(sampen[i][1][1])
            # m = 2
            entropy_r1m2.append(sampen[i][2][1])
        else: # r = 0.2
            # m = 1
            entropy_r2m1.append(sampen[i][1][1])
            # m = 2
            entropy_r2m2.append(sampen[i][2][1])

    # 可视化       
    fig=plt.figure()
    x=list(range(1,len(IImfs)+1,1))
    # 线段、颜色参考:https://blog.csdn.net/qiurisiyu2016/article/details/80187177
    plt.plot(x,entropy_r1m1,'r:H',label='m=1 r=0.1')
    plt.plot(x,entropy_r2m1,'b:s',label='m=1 r=0.2')
    plt.plot(x,entropy_r1m2,'c:D',label='m=2 r=0.1')
    plt.plot(x,entropy_r2m2,'m:h',label='m=2 r=0.2')
    plt.xlabel('I M F 分 量')
    plt.ylabel('样  本  熵  值')
    plt.legend()
    plt.show()
    #fig.savefig('sample_entropy.png', format='png', transparent=True, dpi=300, pad_inches = 0)

m和r都为参数,可在原理链接中看。可自行调整,不过我看论文用的这个。

计算

# 计算各imf分量的样本熵
sample_entropy(IImfs)

结果,此处数据使用上一篇文章中CEEMDAN分解所得的Imf。

 

  • 11
    点赞
  • 70
    收藏
    觉得还不错? 一键收藏
  • 23
    评论
### 回答1: Python是一种流行的编程语言,拥有丰富的库和包。其中sampen是一种用于计算样本的包。在Python中,我们可以使用sampen包来计算信号的样本样本是用来描述动态系统的复杂性的,它是通过对数据序列进行计算得出的。样本是比较简单和直观的方法,它提供了一种有用的方法来描述动态系统的不规则性,同时也可用于分析复杂的时序数据。 使用sampen包来计算样本很简单。首先,我们需要安装该包。其次,我们需要导入sampen包并按照指定的参数调用函数进行计算。具体来说,我们需要指定数据序列、向量长度和距离阈值这三个参数。函数将使用这些参数来计算样本并返回结果。 在Python中使用sampen计算样本有很多好处。首先,它是一个通用的工具,可以用于不同类型的数据,如时间序列、信号和图像等。其次,它是一种快速而有效的计算方法,具有较高的准确性和可重复性。最后,它可以轻松地集成到其他Python包或自定义Python代码中。 总之,Python基于sampen包实现样本计算是一种非常有效的方法,可以用于分析动态系统的复杂性和不规则性。它具有简单、直观、通用和快速等优点,可以大大加速数据处理和分析的过程。 ### 回答2: Python是一种流行的编程语言,也是数据科学家和研究人员最常用的编程语言之一。针对一些非线性和复杂的数据进行分析和处理,Pythonsampen包可以实现样本计算,为数据分析和挖掘提供了便利。 样本(Sample Entropy, SampEn)是一种在复杂系统分析和生物医学中广泛使用的测度,可以衡量数据自相似性和规律性。python中的sampen包提供了一个简单而有效的方案来计算样本。 通过import sampen导入sampen包,可以使用sample_entropy函数来计算样本。sample_entropy函数需要提供两个重要参数:第一个参数是数据的时间序列,第二个参数是寻找相似性的延迟时间,称为m。该函数使用一种重复自我比较的方法,来确定每个样本的最大周期。 使用样本计算,可以对一些非线性和复杂的数据进行分析研究。例如,在生物医学中,可以使用样本计算心电图的复杂度,用于诊断和治疗冠心病。在金融领域,可以使用样本计算股票价格的波动性和规律性,预测股票价格的变化。 总之,Pythonsampen包提供了一种方便而有效的计算样本的方法,可以帮助研究人员和数据科学家分析和挖掘非线性和复杂的数据。 ### 回答3: Python是一种功能强大的编程语言,在各个领域都有着广泛的应用。在处理时间序列、信号处理、生物医学工程、机器学习等方面,都可以通过利用Python编写代码来实现相应的应用。其中,sampen包是Python中用来计算样本的一个重要的工具。 样本是一种用来度量时序数据自相似性(内部相似性)的方法,它可以识别出周期性或自相关性等特征,是时间序列挖掘和压缩的有用方法。基于sampen包,在Python中实现样本计算非常简单,只需调用相关的函数即可。 sampen包中有一个名为`sampen`的函数,它用于计算样本。该函数的输入参数为时间序列数据,以及相应的采样频率和阈值等参数,输出为样本值。这个函数的实现原理是将时间序列按照长度为m的子序列进行分割,并计算每个子序列中与其他子序列相似度的比率,从而得到样本值。 例如,假设有一个长度为n的时间序列x,要求在长度为m的条件下计算样本,那么可以通过如下的Python代码来实现: ``` import sampen # 定义时间序列 x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # 定义参数 m = 2 # 子序列长度为2 r = 0.5 # 阈值为0.5 # 计算样本 smpen = sampen.sampen(x, m, r) print(smpen) # 输出样本值 ``` 通过调用sampen包中的`sampen`函数即可计算出该时间序列在m=2,r=0.5的条件下的样本值。因此,可以发现,基于sampen包实现样本计算是一种非常简单、高效的方法。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值