小波分解处理非平稳时序数据(降噪)
最近在搞毕业论文的预测部分,我收集到的销售数据波动性较大,尤其是存在尖峰数据,我导师给我提供了两种降噪的方法,一种是小波分解,一种是经验模式分解。这两种方法按照老师的话来说就是方法很旧,但是很有效。关于小波分解,我主要的工作如下
1、导入csv数据,
#导入相关库
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import math
import pywtpath = r"D:\桌面文件夹哦\数据统计\小虫\总训练集 - 副本 (2).CSV" # 原数据路径# 提取数据
data = pd.read_csv(path)
data = data.iloc[:, 0] # 取第一列数据
plt.plot(data)
plt.show()
2、根据设计的优化函数,将数据输入进去,进行降噪(这一步不用改,封装好的)
def sgn(num):if (num > 0.0):return 1.0elif (num == 0.0):return 0.0else:return -1.0def wavelet_noising(new_df):data = new_dfdata = data.values.T.tolist() # 将np.ndarray()转为列表w = pywt.Wavelet('sym8') # 选择sym8小波基[ca5, cd5, cd4, cd3, cd2, cd1] = pywt.wavedec(data, w, level=5) # 5层小波分解length1 = len(cd1)length0 = len(data)Cd1 = np.array(cd1)abs_cd1 = np.abs(Cd1)median_cd1 = np.median(abs_cd1)sigma = (1.0 / 0.6745) * median_cd1lamda = sigma * math.sqrt(2.0 * math.log(float(length0), math.e)) # 固定阈值计算usecoeffs = []usecoeffs.append(ca5) # 向列表末尾添加对象# 软硬阈值折中的方法a = 0.5for k in range(length1):if (abs(cd1[k]) >= lamda):cd1[k] = sgn(cd1[k]) * (abs(cd1[k]) - a * lamda)else:cd1[k] = 0.0length2 = len(cd2)for k in range(length2):if (abs(cd2[k]) >= lamda):cd2[k] = sgn(cd2[k]) * (abs(cd2[k]) - a * lamda)else:cd2[k] = 0.0length3 = len(cd3)for k in range(length3):if (abs(cd3[k]) >= lamda):cd3[k] = sgn(cd3[k]) * (abs(cd3[k]) - a * lamda)else:cd3[k] = 0.0length4 = len(cd4)for k in range(length4):if (abs(cd4[k]) >= lamda):cd4[k] = sgn(cd4[k]) * (abs(cd4[k]) - a * lamda)else:cd4[k] = 0.0length5 = len(cd5)for k in range(length5):if (abs(cd5[k]) >= lamda):cd5[k] = sgn(cd5[k]) * (abs(cd5[k]) - a * lamda)else:cd5[k] = 0.0usecoeffs.append(cd5)usecoeffs.append(cd4)usecoeffs.append(cd3)usecoeffs.append(cd2)usecoeffs.append(cd1)recoeffs = pywt.waverec(usecoeffs, w) # 信号重构return recoeffs
3、输出降噪后的数据,导出一份新的csv文件
data_denoising = wavelet_noising(data) # 调用函数进行小波阈值去噪
print(data_denoising)
plt.plot(data_denoising) # 显示去噪结果
plt.show()
df = pd.DataFrame(data_denoising)
df.to_csv(r"D:\桌面文件夹哦\数据统计\小虫\去噪数据.csv",float_format='%.1f')#去噪后数据保存路径
注意:在将去噪后数据导入到新的csv文件中,要先把数据以DataFrame的格式转化过来。即pd.DataFrame(data_denoising)
小波分解处理非平稳时序数据(降噪)相关推荐
- 传统语音增强——基于小波分解的语音降噪算法
一.小波分析的意义 在传统的傅里叶分析中,信号完全是在频域展开的,不包含任何时频的信息.因为丢弃的时域信息对某些应用同样重要,所以出现很多能表征时域和频域信息的信号分析方法,如短时傅里叶变换.Gabo ...
- 基于小波分解与LSTM的城市轨道短时客流预测
1.文章信息 文章题为<A novel prediction model for the inbound passenger flow of urban rail transit>,是一篇 ...
- 哈儿小波分解和重构(降维和升维)实现算法
[0]README 0.1)本文旨在讲解 哈儿小波变换(分解和重构)进行数据的降维和升维: [timestamp: 1703281610]时隔几个月再来review 哈儿小波变换算法的具体思路: 1) ...
- 【小波变换】离散小波分解Discrete Wavelet Transform
此篇博客记录自学离散小波分解的相关内容,以后若有更多理解在此篇更新. 一. 为什么需要离散小波分解 除离散变换外,还有连续小波分解,通过改变分析窗口大小,在时域上移动窗口和基信号相乘,最后在全时 ...
- C语言实现小波分解,提取近似与细节分量,包含详细例程
C语言实现小波分解,提取近似与细节分量,包含详细例程 声明 本文的C语言实现小波分解非本人原创,均参考了网络上的文章(详见最后的参考资料),程序主要来自李承宇的文章和程序. 我只对程序进行了少量的修改 ...
- 基于小波神经网络的短期网络流量数据预测
目录 1.算法仿真效果 2.MATLAB核心程序 3.算法涉及理论知识概要 4.完整MATLAB 1.算法仿真效果 matlab2022a仿真结果如下: 2.MATLAB核心程序 .......... ...
- KDD 2018 | 小波分解网络用于可解释的时间序列分析
关注微信公众号"时序人"获取更好的阅读体验 时间序列学术前沿 NeurIPS 2020 | 时间序列相关论文一览 ICML 2020 | 时间序列相关论文一览 KDD 2020 | ...
- 多元经验模态分解_交通运输|基于小波分解和长短时记忆网络的地铁进站量短时预测...
山东科学 ›› 2019, Vol. 32 ›› Issue (4): 56-63.doi: 10.3976/j.issn.1002-4026.2019.04.008 摘要: 针对城市地铁车站进站客流 ...
- 对于小波分解和傅立叶分解的理解
记得,在以前的博文中,有过这样的描写,pca和ica其实是在寻找一组基.在ica中,这组基是独立的:在pca中,这组基是正交的. 如果,限制在fmri研究的范畴下,ica和pca都是在找一组图像基以及 ...
最新文章
- 中国工程院《全球工程前沿2020》报告在京发布
- wordpress必装的插件 wp最常用的十个插件
- python内核大小_关于keras.layers.Conv1D的kernel_size参数使用介绍
- Paw —— 比Postman更舒服的API利器
- 【单机实现系列】SharePoint2010与Exchange Server2010 结合
- Java I/O系统之OutputStream
- linux下赋予普通用户管理员权限
- iis展示下载 MP4视频的一些心得
- 经典合成器插件 – LennarDigital Sylenth1 v3.067 WiN
- java excel添加批注
- java同步关键字_线程同步关键字之 synchronized
- 杀人游戏规则总结(转自龙的天空)
- 第十三届蓝桥杯C/C++ 大学B组题解
- 团队管理的四大挑战——用人篇
- 大数据开发必备面试题Hive篇
- Terracotta配置文件
- 天猫精灵对接智能设备
- 私有DNS服务器有什么好处
- 网络规划设计师水平考试备考资料(9.网络分析与设计案例)
- 李永乐复习全书概率论与数理统计 第五、六章 大数定律和中心极限定理及数理统计的基本概念