2.12 真实数据的噪声平滑处理
前言:来自各种真实世界传感器的数据通常是不平滑和不干净的,也包含了一些我们不想在显示在图表或者图形的噪声。
1、操作步骤
(1)基础算法是基于滚动窗口模式(rolling window)
(2)窗口滚动过数据,然后计算出窗口内数据的平均值
(3)对于离散数据,我们使用Numpy的convolve方法;它返回两个一维序列的离散纤细卷积。
2、工作原理
平滑数据噪声的一个简单朴素的方法就是:对窗口(样本)求平均值;然后绘制出给定窗口的平均值,而不是所有数据点。
代码实现:
"""
真实数据噪声平滑处理
"""
from pylab import *
from numpy import *
def moving_average(interval,window_size):
'''
计算给定大小的卷积窗口
:param interval:
:param window_size:
:return:
'''
#方法ones定义了一个所有元素值为1的序列或者矩阵(例如多维数组)。
# 我们用它来生成用于求平均值的窗口。
window=ones(int(window_size))/float(window_size)
return convolve(interval,window,'same')
#在指定的时间间隔内得到一些均匀间隔的数字。
t=linspace(-4,4,100)
y=sin(t)+randn(len(t))*0.1
plot(t,y,