python库Tsmoothie模块数据平滑化异常点抓取

下面是关于Python库Tsmoothie模块数据平滑化异常点抓取的完整攻略。

什么是Tsmoothie

Tsmoothie是一个Python库,它提供了多种数据平滑化方法,以及异常点抓取的功能。它可以处理时间序列数据,使用的方法和参数可以通过调整来适应不同的数据集和算法需求。

安装Tsmoothie

你可以在终端中输入以下代码来安装Tsmoothie:

pip install tsmoothie

Tsmoothie中的平滑化方法

Tsmoothie提供了三种常用的平滑化方法:

  1. Smoother: 该方法使用了三角滑动平均值,适用于平滑化具有按周或按月周期性的数据。

  2. Lowess: 该方法使用了局部加权回归线性模型,适用于平滑化具有非周期性的数据。

  3. Kalman Smoother: 该方法适用于能够建立状态空间模型的数据集,即数据可以被分解为状态和观测值。

Tsmoothie中异常点抓取的功能

在进行数据分析时,异常点通常会干扰我们的分析结果。Tsmoothie提供了异常点抓取的功能,它包含两大部分:

  1. ESD Test: 它是Tsmoothie中用于检测异常点的一种方法,即将异常点定义为离群值,并使用一些统计测试来检测哪些值是异常点。其中,ESD是Extreme Studentized Deviation的缩写,即极端标准化偏差。

  2. One-Class SVM: 它是另一种检测异常点的方法,它使用了SVM(Support Vector Machine)算法来划分数据,从而能够识别出数据中的异常点。

Tsmoothie的具体使用

下面向您展示两个使用Tsmoothie实现平滑化和异常点抓取的示例。

示例一

使用Smoother方法对一组具有按周周期性的数据进行平滑化,并在平滑化后使用ESD Test方法检测出其中的异常点。

from tsmoothie.smoother import *

# 创建Smoother对象
smoother = ConvolutionSmoother(window_len=5, window_type='gaussian')

# 创建具有按周周期性的数据集
import numpy as np
dates = pd.date_range(start='1/1/2019', end='31/12/2020')
values = [np.sin(d.dayofyear/30*np.pi)+np.random.rand()*0.5+4.5 for _, d in enumerate(dates)]
values[100] = 7 # 添加一个人工造成的异常点

# 对数据进行平滑化
smoother.smooth(values)

# 获取平滑化后的结果和异常点数据
smooth_data = smoother.smooth_data
 Anomalies_idx = smoother.max_window_residuals(n=1)
anomalies = [values[i] for i in Anomalies_idx[0]]

# 打印平滑化后的结果和异常点数据
print('Smooth Data: ',smooth_data)
print('\nAnomalies: ', anomalies)

示例二

使用One-Class SVM对一组具有非周期性的数据进行异常点抓取,并将异常点在图表中进行可视化。

from tsmoothie.svm import *

# 创建OneClassSVM对象
detector = OneClassSVM()

# 创建具有非周期性的数据集
dates = pd.date_range(start='1/1/2019', end='31/12/2020')
values = [np.random.normal(loc=5, scale=0.5, size=1)[0] if d.dayofyear <= 240 or d.dayofyear >= 270 
          else np.random.normal(loc=6.5, scale=0.5, size=1)[0] for _, d in enumerate(dates)]
values[100] = 8 # 添加一个人工造成的异常点
values[200] = 3 # 添加另一个人工造成的异常点

# 对数据进行异常点检测
labels = detector.fit_predict(values)

# 将异常点在图表中进行可视化
import matplotlib.pyplot as plt
plt.figure(figsize=(12,6))
plt.plot(dates, values, label='Values')
plt.fill_between(dates, [i for i in detector.offsets_lower_], [i for i in detector.offsets_upper_], alpha=0.5, color='red')
plt.plot(dates[labels==-1], values[labels==-1], 'rx', label='Anomalies')
plt.legend(loc='upper left')
plt.show()

以上就是本次Tsmoothie模块数据平滑化和异常点抓取的完整攻略了。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python库Tsmoothie模块数据平滑化异常点抓取 - Python技术站

(0)
上一篇 2023年5月13日
下一篇 2023年5月13日

相关文章

  • 浅谈python中requests模块导入的问题

    以下是关于 Python 中 requests 模块导入问题的详细讲解: 问题描述 在 Python 中使用 requests 模块时,有时会遇到导入错误的问题。本文将浅谈 Python 中 requests 模块导入的问题。 解决方法 以下是解决 Python 中 requests 模块导入问题的方法: 安装 requests 模块。 如果没有安装 req…

    python 2023年5月13日
    00
  • 使用Python进行目录的对比方法

    使用Python进行目录对比可以使用os和filecmp标准库的方法进行实现。 首先,导入os和filecmp模块: import os import filecmp 接下来,使用os.walk()函数遍历目录,读取其中的文件和子目录: def get_directory_contents(path): files = [] subdirs = [] for…

    python 2023年6月2日
    00
  • Python使用protobuf序列化和反序列化的实现

    Python使用protobuf序列化和反序列化的实现攻略 什么是protobuf? Protobuf(Protocol Buffers)是一种语言无关、平台无关、可扩展的序列化数据格式。它由Google开发,现已开源并被广泛用于通信协议、数据存储等场景中,以代替XML和JSON等文本格式。 相比于文本格式,Protobuf可以将结构化数据二进制编码,大大减…

    python 2023年6月2日
    00
  • 详细介绍Python的鸭子类型

    下面我将详细讲解Python的鸭子类型: Python的鸭子类型 鸭子类型(Duck Typing)是一种非常常见的计算机编程的原则,它最早由James Whitcomb Riley在19世纪末提出,后来被程序设计领域广泛采纳。鸭子类型可以形象地理解为:如果它走起路来像一只鸭子,叫起来像一只鸭子,那么它就是一只鸭子。在Python中,鸭子类型指的是不要求对象…

    python 2023年5月14日
    00
  • Python的标准模块包json详解

    Python的标准模块包json详解 简介 json是Python标准库中的一个模块,用于处理JSON格式的数据。它提供了一种简单的方法将Python对象转换为JSON格式的字符串,以及将JSON格式的字符串转换为Python对象。 使用方法 将Python对象转换为JSON格式字符串 使用json.dumps()方法可以将Python对象转换为JSON格式…

    python 2023年6月3日
    00
  • 详解SpringBoot 发布ApplicationEventPublisher和监听ApplicationEvent事件

    下面就是详解“详解SpringBoot 发布ApplicationEventPublisher和监听ApplicationEvent事件”的完整攻略。 SpringBoot中的ApplicationEventPublisher 在SpringBoot中,我们可以使用ApplicationEventPublisher来发布事件。ApplicationEvent…

    python 2023年6月13日
    00
  • 详解Python PIL ImageDraw.Draw.arc()

    Python PIL库中的ImageDraw模块提供了很多用于绘制基本图形和在图像上绘制文本和线条等的函数,其中Draw.arc()函数用于在给定的矩形内绘制一个圆弧。下面是关于使用Draw.arc()函数的完整攻略。 函数格式 Draw.arc(xy, start, end, fill=None, width=0) 参数说明: xy:指定圆弧的外接矩形,格…

    python-answer 2023年3月25日
    00
  • Python基础数据类型tuple元组的概念与用法

    Python基础数据类型tuple元组的概念与用法 概念 在 Python 中,元组 (tuple) 是一种不可变序列,可以把它看做不可变的列表,与列表不同的是,元组使用小括号 “()” 表示,而不是使用中括号 “[]”。 创建元组 创建一个元组,只需在括号内放置元素,并使用 “,” 将它们分隔开即可。 tuple1 = (1, 2, 3) tuple2 =…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部