这个神奇的库,可以将数据平滑化并找到异常点

Transbigdata实战:从出租车GPS数据到城市交通热力图——以成都为例 本文以成都为例,详细介绍了如何利用Transbigdata工具从出租车GPS数据生成城市交通热力图的全流程。涵盖数据清洗、栅格化处理、热力图生成及参数调优等关键技术,并分享性能优化和大数据处理技巧,帮助读者高效分析城市交通模式。 阅读详情

在处理数据的时候,我们经常会遇到一些非连续的散点时间序列数据:

6219b9f680bd44e098a9ac60c93a2441.png

有些时候,这样的散点数据是不利于我们进行数据的聚类和预测的。因此我们需要把它们平滑化,如下图所示:

6e98cca5a6aec93438cc632ffa8d5982.png

如果我们将散点及其范围区间都去除,平滑后的效果如下:

5c44b1112f931546841db328a6938a5d.png

这样的时序数据是不是看起来舒服多了?此外,使用平滑后的时序数据去做聚类或预测或许有令人惊艳的效果,因为它去除了一些偏差值并细化了数据的分布范围。

如果我们自己开发一个这样的平滑工具,会耗费不少的时间。因为平滑的技术有很多种,你需要一个个地去研究,找到最合适的技术并编写代码,这是一个非常耗时的过程。平滑技术包括但不限于:

  • 指数平滑

  • 具有各种窗口类型(常数、汉宁、汉明、巴特利特、布莱克曼)的卷积平滑

  • 傅立叶变换的频谱平滑

  • 多项式平滑

  • 各种样条平滑(线性、三次、自然三次)

  • 高斯平滑

  • 二进制平滑

所幸,有大佬已经为我们实现好了时间序列的这些平滑技术,并在GitHub上开源了这份模块的代码——它就是 tsmoothie。

下面就让我们来试一下 tsmoothie.

1.准备

开始之前,你要确保Python和pip已经成功安装在电脑上。

请选择以下任一种方式输入命令安装依赖:
1. Windows 环境 打开 Cmd (开始-运行-CMD)。
2. MacOS 环境 打开 Terminal (command+空格输入Terminal)。
3. 如果你用的是 VSCode编辑器 或 Pycharm,可以直接使用界面下方的Terminal.

pip install tsmoothie

(PS) Tsmoothie仅支持Python 3.6 及以上的版本。

2.Tsmoothie 基本使用

为了尝试Tsmoothie的效果,我们需要生成随机数据:

import numpy as np
import matplotlib.pyplot as plt
from tsmoothie.utils_func import sim_randomwalk
from tsmoothie.smoother import LowessSmoother

# 生成 3 个长度为200的随机数据组
np.random.seed(123)
data = sim_randomwalk(n_series=3, timesteps=200, 
                      process_noise=10, measure_noise=30)

然后使用Tsmoothie执行平滑化:

# 平滑
smoother = LowessSmoother(smooth_fraction=0.1, iterations=1)
smoother.smooth(data)

通过 smoother.smooth_data 你就可以获取平滑后的数据:

print(smoother.smooth_data)
# [[ 5.21462928 3.07898076 0.93933646 -1.19847767 -3.32294934 
# -5.40678762 -7.42425709 -9.36150892 -11.23591897 -13.05271523 
# ....... ....... ....... ....... ....... ]]

绘制效果图:

# 生成范围区间
low, up = smoother.get_intervals('prediction_interval')

plt.figure(figsize=(18,5))

for i in range(3):
    
    plt.subplot(1,3,i+1)
    plt.plot(smoother.smooth_data[i], linewidth=3, color='blue')
    plt.plot(smoother.data[i], '.k')
    plt.title(f"timeseries {i+1}"); plt.xlabel('time')

    plt.fill_between(range(len(smoother.data[i])), low[i], up[i], alpha=0.3)

f0c5b11e9b12c43dd42557a2d10366bd.png

3.基于Tsmoothie的极端异常值检测

事实上,基于smoother生成的范围区域,我们可以进行异常值的检测:

6255ca444e71d306899738be69c8be51.gif

可以看到,在蓝色范围以外的点,都属于异常值。我们可以轻易地将这些异常值标红或记录,以便后续的处理。

_low, _up = smoother.get_intervals('sigma_interval', n_sigma=2)
series['low'] = np.hstack([series['low'], _low[:,[-1]]])
series['up'] = np.hstack([series['up'], _up[:,[-1]]])
is_anomaly = np.logical_or(
    series['original'][:,-1] > series['up'][:,-1], 
    series['original'][:,-1] < series['low'][:,-1]
).reshape(-1,1)

假设蓝色范围interval的最大值为up、最小值为low,如果存在 data > up 或 data < low 则表明此数据是异常点。

这些异常点并非都是负面作用,在不同的应用场景下,它们可能代表了不同的意义。

465c84c211c248a63b77717d7e3c310c.png

比如在股票中,它或许可以代表着震荡行情中某种趋势反转的信号。

或者在家庭用电量分析中,它可能代表着某个时刻的用电峰值,根据这个峰值我们可以此时此刻开启了什么样的电器。

所以异常点的作用需要根据不同应用场景进行不同的分析,才能找到它真正的价值。

31663067b0863412b162683b3f386e35.png

总而言之,Tsmoothie 不仅可以使用多种平滑技术平滑化我们的时序数据,让我们的模型训练更加有效,还可以根据平滑结果找出数据中的离群点,是我们做数据分析和研究的一个好帮手,非常有价值。

觉得还不错就给我一个小小的鼓励吧!
从卡尔曼滤波到RTS平滑:提升事后数据处理精度的关键技术 本文深入探讨了从卡尔曼滤波到RTS平滑的关键技术,详细解析了RTS平滑如何通过全局视角提升事后数据处理的精度。文章通过实际案例和代码示例,展示了RTS平滑在GPS/INS组合导航等场景中的显著效果,精度提升可达30-50%,并分享了工程实现中的优化技巧和跨界应用。 阅读详情

相关推荐

【UWB】Savitzky Golay滤波器:从最小二乘拟合到信号保形平滑的数学本质

本文深入解析了Savitzky-Golay滤波器(SG滤波器)在UWB信号处理中的数学原理与应用实践。通过最小二乘法实现保形平滑,SG滤波器在滤除噪声的同时保留信号特征,特别适用于UWB定位等需要高精度信号处理的场景。文章详细介绍了参数选择、边界处理及Python实现技巧,帮助工程师优化信号处理流程。

weixin_33708633的博客 161

平滑图像处理:实现图像的平滑化

图像处理中的平滑(Smoothing)操作是一种常见的技术,用于消除图像中的噪声或细节,以达到图像的模糊效果。平滑化可以在许多应用中使用,例如图像增强、边缘检测前的预处理等。本文将介绍几种常见的图像平滑化方法,并提供相应的源代码实现。这里介绍了三种常见的图像平滑化方法:均值滤波、高斯滤波和中值滤波。根据实际需求和图像特点,选择合适的平滑化方法可以有效地去除噪声,改善图像质量。以上提供的代码示例可以在Python环境中直接使用,实现图像平滑化操作。

XsiJava的博客 97

嵌入式触摸屏开发实战——tslib库的架构解析与应用

本文深入解析了tslib库的架构与应用,详细介绍了其在工业控制、医疗设备和教育平板等场景中的实际应用。通过模块化设计和数据流管道,tslib能够高效处理触摸屏数据,支持多点触控和性能调优。文章还提供了ARM平台移植的实战经验和常见问题解决方案,帮助开发者快速掌握这一强大的第三方库。

weixin_30561177的博客 174

Python Loess (Lowess) smooth 曲线平滑

掉包 import math import numpy as np import statsmodels.api as sm lowess = sm.nonparametric.lowess import pylab as pl n = 100 x = np.linspace(0, 2 * math.pi, n) y = np.sin(x) + 0.3 * np.random.randn(n) # yest = lowess(y, x) yest = lowess(y, x, frac=1./3.)[

周迪新的博客 1万+

GPS轨迹清洗与地图匹配:如何用GraphHopper处理漂移点并提升匹配精度

本文详细介绍了如何使用GraphHopper进行GPS轨迹清洗与地图匹配,有效处理漂移点并提升匹配精度。通过轨迹滤波、参数调优和结果评估等步骤,帮助开发者优化地图匹配流程,特别适用于物流调度和运动轨迹分析等场景。

weixin_30415113的博客 442

趋势外推预测实战指南:从模型选型到Python/Excel实现

趋势外推是时间序列分析中用于预测未来走势的基础方法,其核心原理是假设历史数据中蕴含的趋势性规律将在未来延续。通过识别数据的线性、指数或多项式等增长模式,选择合适的统计模型进行拟合,可以量化预测业务指标的未来值。这项技术在业务预测、销售预估、资源规划等场景中具有重要价值,能帮助决策者基于数据制定更合理的计划。本文聚焦于趋势外推的实战应用,深入解析了线性模型、指数模型等主流方法的选型逻辑与参数调优技巧,并提供了完整的Python和Excel操作示例,手把手教你如何从数据清洗、模型拟合到结果评估,完成一次可靠的预

weixin_30800807的博客 409

Seaborn:让你的数据讲故事的艺术大师!!!

总之,Seaborn是数据科学的隐形翅膀——让它带你的洞察力起飞吧!安装简单、语法优雅、功能强悍,无论你是新手还是老鸟,都能快速上手。(试试今天提到的例子,你会爱上它的!!!)最后心得:数据可视化不是画画,是讲故事的艺术;Seaborn就是那个帮你娓娓道来的大师傅。未来项目中,多实践多探索——说不定下一个突破就在图表里!加油,数据战士们!(有任何疑问?留言讨论,但记住:分享纯技术,不搞商业哈。

matlab888999的博客 949

视觉伺服与拓扑数据分析在机器人控制中的融合应用

视觉伺服技术通过实时图像处理实现机器人精确控制,广泛应用于工业分拣、无人机着陆等领域。然而,光照突变和目标遮挡等环境变化常导致控制性能下降。拓扑数据分析(TDA)为解决这一问题提供了新思路,通过极值性、横截性和持续性三个维度识别系统临界状态,动态调整控制策略。在嵌入式设备如树莓派上实现时,需平衡计算精度与实时性。IKKA框架结合视觉伺服与TDA,显著提升了系统鲁棒性,在低光环境和动态遮挡场景下误差降低36%-50%。这一技术融合展示了传统控制理论与现代数据分析方法的协同效应,为边缘计算场景下的实时控制提供了

weixin_30540871的博客 245

Matlab小波去噪实战:从wden函数参数优化到实际信号处理

本文详细介绍了Matlab中小波去噪的实战技巧,重点解析了wden函数的参数优化方法。通过对比不同小波基函数、阈值规则和分解层数,结合实际工程案例,帮助读者掌握高效信号处理技术,提升去噪效果和计算性能。

weixin_30595035的博客 419

高光谱数据降维:PCA原理、实战与避坑指南

主成分分析(PCA)是一种经典的无监督降维技术,其核心原理是通过正交变换将原始相关变量转换为线性无关的主成分,并按照方差大小排序。该技术能有效解决高维数据的维度灾难问题,在保留绝大部分信息的同时大幅提升计算效率。在遥感与高光谱成像领域,PCA尤其适用于处理波段间高相关性的数据,能够从上百个波段中提取核心光谱特征,为后续的分类、识别与异常检测等任务提供清晰的数据视图。本文结合高光谱数据特性,深入解析PCA的数学内核与几何意义,并提供从数据预处理、结果解译到性能优化的完整工程实践流程,帮助读者避开常见陷阱,掌握

weixin_34121304的博客 394

python 绘制训练曲线--Savitzky-Golay 滤波平滑处理

原因是tensorboard显示的曲线是经过平滑处理过的(其灰黑色的背景就平滑处理前的波形)震荡的非常厉害(下图绿色曲线),而tensorboard的曲线比较平滑(下下图黑色曲线),不同滤波参数的平滑效果。

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 1365

OpenISP深度解析:从RAW传感器数据到高质量图像的完整实战指南

想象一下,你刚刚用相机拍摄了一张照片,但得到的原始数据看起来灰暗、充满噪点,色彩也显得奇怪。这就像厨师拿到了一堆未经处理的食材,需要经过一系列精心烹饪才能变成美味佳肴。openISP正是那个能将原始传感器数据转化为视觉盛宴的数字厨房,它为你提供了从RAW到高质量图像的完整解决方案。 ## 🚀 快速上手:立即体验ISP处理效果 在深入技术细节之前,让我们先看看openISP能为你做什么。通过简

gitblog_00192的博客 388

python 数据、曲线平滑处理——插值法对折线平滑处理——详解

如图想对下面的折线 进行平滑处理。

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 4263

7大绝招!MySQL如何让工业物联网预测性维护系统更快更智能?

通过上述步骤,我们已经成功地利用MySQL进一步优化了工业物联网的预测性维护平台。从最初的数据采集到最后的自愈机制,每一个环节都离不开MySQL的帮助和支持。未来,随着技术的发展,相信会有更多创新性的解决方案涌现出来,帮助我们在工业4.0时代走得更远。希望这篇文章能够激发大家的兴趣,也欢迎大家留言分享自己的想法和经验哦!就这样,小伙伴们,今天的分享就到这里啦!😊。

java专栏 706

小龙虾 OpenClaw 安装全攻略:本地部署 AI 智能体一步到位

OpenClaw(昵称小龙虾)是一款 MIT 开源协议的本地优先 AI 智能体执行网关,支持多平台接入、本地部署,能实现自然语言驱动的设备自动化操作,区别于纯对话 AI,可直接操控系统执行实际任务,数据全程本地存储更安全。本文带来 2026 最新版 OpenClaw 安装教程,适配 Windows/macOS/Linux 全系统,新手也能一键搞定。

lujiawei00的专栏 1976

PS/Ai/PR/AE等adobe出现正版弹窗提示:Your non-genuine Adobe app will be disabled soon解决办法

就是用专门的清理工具下载,清理工具在文章下方。然后新建三个空的记事本文件,重命名为 Adobe Genuine Launcher.exe,AdobeGCClient.exe,AGMService.exe。在该文件目录中,分别找到 Adobe Genuine Launcher.exe,AdobeGCClient.exe,AGMService.exe,然后在防火墙入站规则里,阻止Adobe Genuine Launcher.exe,AdobeGCClient.exe,AGMService.exe。

Q82556499的博客 1万+
上一篇: 地图可视化:geopandas绘制拓扑着色地图
下一篇: 灭霸来了!微软发布BugLab:无需标注,GAN掉bug
Wang_AI
博客等级 码龄12年 997粉丝 162原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值