首页 >后端开发 >Python教程 >处理噪声数据集时如何有效平滑曲线?

处理噪声数据集时如何有效平滑曲线?

Barbara Streisand
Barbara Streisand原创
2024-10-20 15:57:02627浏览

How to Effectively Smooth Curves when Dealing with Noisy Datasets?

使用数据集噪声平滑曲线:实用指南

噪声数据集的平滑曲线是数据分析中的常见挑战。为了解决这个问题,考虑一个由于噪声而有 20% 变化的数据集:

import numpy as np
x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x) + np.random.random(100) * 0.2

对于这种情况,Savitzky-Golay 滤波器是一个有效的选择。该滤波器的工作原理是将多项式拟合到数据点窗口,并使用多项式来估计窗口中心的值。然后窗口沿着数据移动,重复该过程,得到平滑的曲线。

以下是如何在 Python 中实现 Savitzky-Golay 过滤器:

  1. 导入必要的库:
<code class="python">import numpy as np
import matplotlib.pyplot as plt</code>
  1. 对数据运行 Savitzky-Golay 过滤器:
<code class="python">yhat = savgol_filter(y, 51, 3) # window size 51, polynomial order 3</code>
  1. 可视化原始数据和平滑曲线:
<code class="python">plt.plot(x, y)
plt.plot(x, yhat, color='red')
plt.show()</code>

生成的曲线将比原始曲线更平滑,同时仍保留基础信号。

注意:如果您没有savgol_filter 功能可用,您可以使用以下命令安装它:

pip install scipy

以上是处理噪声数据集时如何有效平滑曲线?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn