开始#
以下信息旨在帮助用户快速上手 sktime
。如需更详细的信息,请参阅每个子部分中的链接。
安装#
sktime
目前支持:
支持 Python 版本 3.8、3.9、3.10、3.11 或 3.12 的环境。
操作系统 Mac OS X、类 Unix 操作系统、Windows 8.1 及更高版本
通过
PyPi
或conda
安装
请参阅 安装 指南,获取关于包安装的逐步说明。
关键概念#
sktime
旨在为多种时间序列机器学习任务提供一个统一的框架。这(希望)使得 sktime
的功能对用户来说更加直观,并让开发者更容易扩展框架。但时间序列数据及其相关的科学用例各自可以有多种形式。因此,一组关键的通用概念和术语非常重要。
数据类型#
sktime
是为时间序列机器学习设计的。时间序列数据指的是变量按时间顺序排列或具有指示观察值在序列中位置的索引的数据。
在 sktime
中,时间序列数据可以指单变量、多变量或面板数据,其区别与时间序列 变量 的数量及其相互关系,以及每个变量被观察的 实例 数量有关。
学习任务#
sktime
的每个学习任务的功能都围绕着提供一组代码工件,这些工件匹配一个给定科学目的的通用接口(即 科学类型 或 科学类型)。例如,sktime
包含一个用于“预测器”类的通用接口,这些类旨在预测时间序列的未来值。
sktime
的接口目前支持:
简化#
虽然上述列表分别介绍了每个学习任务,但在许多情况下,可以调整一个学习任务来帮助解决另一个相关的学习任务。例如,一种预测的方法是使用一个明确考虑数据时间维度的回归模型。然而,另一种方法是将对时间序列的预测问题简化为横截面回归,其中输入数据被表格化,并且数据的滞后被视为 scikit-learn 风格表格回归算法中的独立特征。同样,对于像异常检测这样的时间序列标注任务,一种方法是将问题简化为使用预测器来预测未来值,并将与这些预测值相差太远的观测标记为异常。sktime
通常通过使用可组合的类来实现这种 简化 ,这些类允许用户调整一个学习任务来解决另一个相关的任务。
有关 sktime
的术语和功能更多信息,请参阅 术语表 和 笔记本示例。
快速开始#
下面的代码片段旨在介绍 sktime
的功能,以便您可以快速开始使用其功能。有关更详细的信息,请参阅 sktime
的 用户文档 中的 教程 、 示例 和 API参考 。
预测#
>>> from sktime.datasets import load_airline
>>> from sktime.forecasting.base import ForecastingHorizon
>>> from sktime.forecasting.theta import ThetaForecaster
>>> from sktime.performance_metrics.forecasting import mean_absolute_percentage_error
>>> from sktime.split import temporal_train_test_split
>>> y = load_airline()
>>> y_train, y_test = temporal_train_test_split(y)
>>> fh = ForecastingHorizon(y_test.index, is_relative=False)
>>> forecaster = ThetaForecaster(sp=12) # monthly seasonal periodicity
>>> forecaster.fit(y_train)
>>> y_pred = forecaster.predict(fh)
>>> mean_absolute_percentage_error(y_test, y_pred)
0.08661467738190656
时间序列分类#
>>> from sktime.classification.interval_based import TimeSeriesForestClassifier
>>> from sktime.datasets import load_arrow_head
>>> from sklearn.model_selection import train_test_split
>>> from sklearn.metrics import accuracy_score
>>> X, y = load_arrow_head()
>>> X_train, X_test, y_train, y_test = train_test_split(X, y)
>>> classifier = TimeSeriesForestClassifier()
>>> classifier.fit(X_train, y_train)
>>> y_pred = classifier.predict(X_test)
>>> accuracy_score(y_test, y_pred)
0.8679245283018868
时间序列回归#
>>> from sktime.datasets import load_covid_3month
>>> from sktime.regression.distance_based import KNeighborsTimeSeriesRegressor
>>> from sklearn.metrics import mean_squared_error
>>> X_train, y_train = load_covid_3month(split="train")
>>> y_train = y_train.astype("float")
>>> X_test, y_test = load_covid_3month(split="test")
>>> y_test = y_test.astype("float")
>>> regressor = KNeighborsTimeSeriesRegressor()
>>> regressor.fit(X_train, y_train)
>>> y_pred = regressor.predict(X_test)
>>> mean_squared_error(y_test, y_pred)
时间序列聚类#
>>> from sklearn.model_selection import train_test_split
>>> from sktime.clustering.k_means import TimeSeriesKMeans
>>> from sktime.clustering.utils.plotting._plot_partitions import plot_cluster_algorithm
>>> from sktime.datasets import load_arrow_head
>>> X, y = load_arrow_head()
>>> X_train, X_test, y_train, y_test = train_test_split(X, y)
>>> k_means = TimeSeriesKMeans(n_clusters=5, init_algorithm="forgy", metric="dtw")
>>> k_means.fit(X_train)
>>> plot_cluster_algorithm(k_means, X_test, k_means.n_clusters)
时间序列注释#
警告
时间序列注释API是实验性的,可能在未来的版本中有所变化。
>>> from sktime.annotation.adapters import PyODAnnotator
>>> from pyod.models.iforest import IForest
>>> from sktime.datasets import load_airline
>>> y = load_airline()
>>> pyod_model = IForest()
>>> pyod_sktime_annotator = PyODAnnotator(pyod_model)
>>> pyod_sktime_annotator.fit(y)
>>> annotated_series = pyod_sktime_annotator.predict(y)