返回顶部
首页 > 资讯 > 后端开发 > Python >Facebook开源一站式服务python时序利器Kats有什么用
  • 889
分享到

Facebook开源一站式服务python时序利器Kats有什么用

2023-06-25 16:06:39 889人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章主要介绍了Facebook开源一站式服务python时序利器Kats有什么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。时间序列分析是数据科学中一个非常重要的领域,

这篇文章主要介绍了Facebook开源一站式服务python时序利器Kats有什么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

时间序列分析是数据科学中一个非常重要的领域,它主要包含统计分析、检测变化点、异常检测和预测未来趋势。然而,这些时间序列技术通常由不同的库实现。有没有一种方法可以让你在一个库中获得所有这些技术?

答案是肯定的,本文中我将分享一个非常棒的工具包 Kats,它可以完美解决上述问题。

Facebook开源一站式服务python时序利器Kats有什么用

什么是 Kats?

目前时间序列分析以及建模的技术非常多,但相对散乱,本次 FaceBook 开源了 Kats,它是一款轻量级的、易于使用的、通用的时间序列分析框架,包括:预测、异常检测、多元分析和特征提取嵌入。你可以将 Kats 视为 Python 中时间序列分析的一站式工具包。

安装 Kats

pip install --upgrade pippip install kats

为了了解 Kats 的功能,我们将使用这个框架来分析 Kaggle 上的 StackOverflow问题计数问题。数据链接为:https://www.kaggle.com/aishu200023/stackindex

首先我们从读取数据开始。

import pandas as pddf = pd.read_csv("MLTollsStackOverflow.csv")# Turn the month column into datetimedf["month"] = pd.to_datetime(df["month"], fORMat="%y-%b")df = df.set_index("month")

Facebook开源一站式服务python时序利器Kats有什么用

现在让我们分析一下与 Python 相关的 StackOverflow 问题计数。数据被分成一列和一个测试集来评估预测。

python = df["python"].to_frame()# Split data into train and test settrain_len = 102train = python.iloc[:train_len]test = python.iloc[train_len:]

将数据转换为时间序列

首先构造一个时间序列对象。我们使用time_col_name='month'指定时间列。

from kats.consts import TimeSeriesData# Construct TimeSeriesData objectts = TimeSeriesData(train.reset_index(), time_col_name="month")

要绘制数据,调用plot方法:

ts.plot(cols=["python"])

Facebook开源一站式服务python时序利器Kats有什么用

酷!看起来关于 Python 的问题的数量随着时间的推移而增加。我们能预测未来30天的趋势吗?是的,我们可以和 Kats 一起做。

预测

Kats目前支持以下10种预测模型:

Linear

Quadratic

ARIMA

SARIMA

Holt-Winters

Prophet

AR-Net

LSTM

Theta

VAR

上述模型较多,让我们试一下其中两种类型吧!

从使用 Prophet 进行预测开始:

from kats.models.prophet import ProphetModel, ProphetParams# Specify parametersparams = ProphetParams(seasonality_mode="multiplicative")# Create a model instancem = ProphetModel(ts, params)# Fit modem.fit()# Forecastfcst = m.predict(steps=30, freq="MS")fcst

Facebook开源一站式服务python时序利器Kats有什么用

可视化

m.plot()

Facebook开源一站式服务python时序利器Kats有什么用

酷!让我们通过与测试数据的比较来评估预测。

import matplotlib.pyplot as pltfig, ax = plt.subplots(figsize=(12, 7))train.plot(ax=ax, label="train", color="black")test.plot(ax=ax, color="black")fcst.plot(x="time", y="fcst", ax=ax, color="blue")ax.fill_between(test.index, fcst["fcst_lower"], fcst["fcst_upper"], alpha=0.5)ax.get_legend().remove()

Facebook开源一站式服务python时序利器Kats有什么用

预报似乎很好地符合观察结果!

Holt-Winters

我们将尝试的下一个模式是Holt-Winters。它是一种捕捉季节性的方法。下面是如何在 Kats 中使用 Holt-Winters 方法。

from kats.models.holtwinters import HoltWintersParams, HoltWintersModelimport warningswarnings.simplefilter(action='ignore')params = HoltWintersParams(            trend="add",            seasonal="mul",            seasonal_periods=12,        )m = HoltWintersModel(    data=ts,     params=params)m.fit()fcst = m.predict(steps=30, alpha = 0.1)m.plot()

Facebook开源一站式服务python时序利器Kats有什么用

检测变化点

你有没有想过在你的时间序列中发生统计上显著的均值变化的时间?

Facebook开源一站式服务python时序利器Kats有什么用

Kats 允许使用 CUSUM 算法检测变化点。Cusum 是一种检测时间序列中均值上下移动的方法。

让我们看看如何检测 Kats 中的变化点。

from kats.consts import TimeSeriesData, TimeSeriesIteratorfrom kats.detectors.cusum_detection import CUSUMDetectorimport matplotlib.pyplot as pltdetector = CUSUMDetector(ts)change_points = detector.detector(change_directions=["increase", "decrease"])print("The change point is on", change_points[0][0].start_time)# plot the resultsplt.xticks(rotation=45)detector.plot(change_points)plt.show()

Facebook开源一站式服务python时序利器Kats有什么用

酷!让我们尝试检测 StackOverflow 问题计数的其他类别的变化点。

首先创建一个函数来检测主题提供的更改点。

def get_ts(topic: str):    return TimeSeriesData(df[topic].to_frame().reset_index(), time_col_name="month")def detect_change_point(topic: str):    ts = get_ts(topic)    detector = CUSUMDetector(ts)    change_points = detector.detector()    for change_point in change_points:        print("The change point is on", change_point[0].start_time)    # plot the results    plt.xticks(rotation=45)    detector.plot(change_points)    plt.show()

机器学习

detect_change_point("Machine-learning")

Facebook开源一站式服务python时序利器Kats有什么用

深度学习

detect_change_point("deep-learning")

Facebook开源一站式服务python时序利器Kats有什么用

孤立点检测

你在看NLP的时间序列时看到了什么?

df["nlp"].plot()

Facebook开源一站式服务python时序利器Kats有什么用

从2018年到2019年,NLP的问题数量有所下降。

问题数量的下降是一个异常值。检测异常值很重要,因为它们可能会在下游处理中造成问题。

然而,通过查看数据来发现异常值并不总是高效和容易的。幸运的是,Kats还允许您检测时间序列中的异常值!

用kat检测异常值只需要几行行代码。

from kats.detectors.outlier import OutlierDetector# Get time series objectts = get_ts("nlp")# Detect outliersts_outlierDetection = OutlierDetector(ts, "additive")ts_outlierDetection.detector()# Print outliersoutlier_range1 = ts_outlierDetection.outliers[0]print(f"The outliers range from {outlier_range1[0]} to {outlier_range1[1]}")

The outliers range from 2018-01-01 00:00:00 to 2019-03-01 00:00:00

酷!结果证实了我们从上图中看到的情况。

时间序列特征

除了统计数据外,时间序列中还有其他一些特性,如线性、趋势强度、季节性强度、季节性参数等,您可能会感兴趣。

Kats 允许通过 TsFeatures 查找有关时间序列特征的重要信息:

from kats.tsfeatures.tsfeatures import TsFeaturesmodel = TsFeatures()output_features = model.transform(ts)output_features

Facebook开源一站式服务python时序利器Kats有什么用

感谢你能够认真阅读完这篇文章,希望小编分享的“Facebook开源一站式服务python时序利器Kats有什么用”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网Python频道,更多相关知识等着你来学习!

--结束END--

本文标题: Facebook开源一站式服务python时序利器Kats有什么用

本文链接: https://lsjlt.com/news/306187.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Facebook开源一站式服务python时序利器Kats有什么用
    这篇文章主要介绍了Facebook开源一站式服务python时序利器Kats有什么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。时间序列分析是数据科学中一个非常重要的领域,...
    99+
    2023-06-25
  • Facebook开源一站式服务python时序利器Kats详解
    目录什么是 Kats?安装 Kats将数据转换为时间序列预测从使用 Prophet 进行预测开始:可视化Holt-Winters检测变化点机器学习深度学习孤立点检测时间序列特征小结 ...
    99+
    2024-04-02
  • 6个最佳的开源Python应用服务器分别是什么
    本篇文章为大家展示了6个最佳的开源Python应用服务器分别是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。首先,你知道什么是应用服务器吗?应用服务器通常被描述为是存在于服务器中心架构中间层的一...
    99+
    2023-06-17
  • 云服务器开启cpu虚拟化模式有什么用
    云服务器开启cpu虚拟化模式后,可以提高服务器的性能和可扩展性,提高服务器的利用率。以下是使用云服务器开启cpu虚拟化模式的一些实际意义: 提高性能:云服务器开启cpu虚拟化模式后,可以将更多的计算能力分配给服务器,提高服务器的性能,从...
    99+
    2023-10-26
    什么用 模式 服务器
  • 阿里云服务器有什么用啊多少钱一个小时
    阿里云服务器有很多不同的产品,比如免费版、付费版、高级版、企业版等,因此价格也不尽相同。免费版和付费版之间的差价一般在几十块钱到一百块钱之间。而高级版和企业版的价格则可能会更贵,因为它们的功能更多,例如提供更多的高级功能和更快的响应时间。当...
    99+
    2023-10-26
    阿里 多少钱 什么用
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作