binder

下载和加载基准测试数据集

通常使用标准的数据集来比较不同的分类、聚类、回归、预测和异常检测的估计器。其中一些数据集随aeon一起提供,位于datasets/data目录中。然而,这些文件太大,无法全部包含。aeon提供了下载这些数据的工具,以便在基准测试实验中使用。分类和回归数据以.ts格式存储。预测数据以等效的.tsf格式存储。异常检测数据集以TimeEval .csv格式存储。有关更多信息,请参见数据加载笔记本

分类和回归数据被加载到形状为(n_cases, n_channels, n_timepoints)的3D numpy数组中,如果时间点长度相等;如果不同案例的n_timepoints不同,则加载为[n_cases]的2D numpy列表。预测数据被加载到pd.DataFrame中。异常检测数据集被加载到形状为(n_timepoints, n_channels)的2D numpy数组中。有关aeon数据类型的更多信息,请参阅数据结构笔记本

请注意,此笔记本依赖于外部网站,因此如果您未在线或相关网站不可用,则无法正常工作。我们使用以下四个函数

[1]:
from aeon.datasets import (
    load_anomaly_detection,
    load_classification,
    load_forecasting,
    load_regression,
)

时间序列分类档案

UCR/TSML 时间序列分类档案 托管了 UCR 单变量时间序列分类档案 [1],也可从 UCR 获取,以及多变量档案 [2](以前称为 UEA 档案,即将更改)。我们在 datasets/data 目录中提供了其中的七个:ACSF1、ArrowHead、BasicMotions、GunPoint、ItalyPowerDemand、JapaneseVowels 和 PLAID。档案库要大得多。最后一批发布包括 128 个单变量 [1] 和 33 个多变量 [2]。如果您只想下载所有这些,请访问 网站

[2]:
from aeon.datasets.tsc_datasets import multivariate, univariate

# This file also contains sub lists by type, e.g. unequal length
print("Univariate length = ", len(univariate))
print("Multivariate length = ", len(multivariate))
Univariate length =  128
Multivariate length =  30

为这些数据提供了默认的训练和测试分割。例如Chinatown问题的文件结构如下:

<extract_path>/Chinatown/Chinatown_TRAIN.ts
<extract_path>/Chinatown/Chinatown_TEST.ts

你可以直接从TSC.com加载这些问题并将它们加载到内存中。这些函数除了返回数据外,还可以返回相关的元数据。这种用法将训练和测试集合并,并将它们加载到一个X和一个y数组中。

[3]:
X, y, meta = load_classification("Chinatown", return_metadata=True)
print("Shape of X = ", X.shape)
print("First case = ", X[0][0], " has label = ", y[0])
print("\nMeta data = ", meta)
Shape of X =  (363, 1, 24)
First case =  [ 573.  375.  301.  212.   55.   34.   25.   33.  113.  143.  303.  615.
 1226. 1281. 1221. 1081.  866. 1096. 1039.  975.  746.  581.  409.  182.]  has label =  1

Meta data =  {'problemname': 'chinatown', 'timestamps': False, 'missing': False, 'univariate': True, 'equallength': True, 'classlabel': True, 'targetlabel': False, 'class_values': ['1', '2']}

如果你查看aeon/datasets目录,你应该会看到一个名为local_data的目录,里面包含Chinatown数据集。所有的压缩文件都有.ts文件。有些还有.arff.txt文件。文件结构看起来像这样:

time series classification

在每个文件夹中,数据以文本文件的形式存储,格式为.ts文件(有关文件格式描述,请参见数据加载笔记本)。它们也可能以.arff格式和.txt格式提供。

time series classification

如果您再次使用相同的提取路径加载,如果文件已经存在,它将不会再次下载。如果您想将数据存储在其他地方,您可以指定一个文件路径。此外,您可以分别加载训练和测试数据。此代码将数据下载到Temp一次,并加载到单独的训练/测试分割中。分割参数不区分大小写。下载后,load_classification等同于调用load_from_ts_file

时间序列(外部)回归

`The Monash Time Series Extrinsic Regression Archive <>`__ [3] 仓库(称为extrinsic以区别于基于滑动窗口的回归)目前包含19个以.ts格式的回归问题。其中一个,Covid3Month,位于 datasets\data 中。我们最近扩展了这个仓库,包含了63个以.ts格式的问题。load_regression 的使用方法与 load_classification 相同。

[4]:
from aeon.datasets.dataset_collections import get_available_tser_datasets

get_available_tser_datasets()
[4]:
['AcousticContaminationMadrid',
 'AluminiumConcentration',
 'AppliancesEnergy',
 'AustraliaRainfall',
 'BIDMC32HR',
 'BIDMC32RR',
 'BIDMC32SpO2',
 'BarCrawl6min',
 'BeijingIntAirportPM25Quality',
 'BeijingPM10Quality',
 'BeijingPM25Quality',
 'BenzeneConcentration',
 'BinanceCoinSentiment',
 'BitcoinSentiment',
 'BoronConcentration',
 'CalciumConcentration',
 'CardanoSentiment',
 'ChilledWaterPredictor',
 'CopperConcentration',
 'Covid19Andalusia',
 'Covid3Month',
 'DailyOilGasPrices',
 'DailyTemperatureLatitude',
 'DhakaHourlyAirQuality',
 'ElectricMotorTemperature',
 'ElectricityPredictor',
 'EthereumSentiment',
 'FloodModeling1',
 'FloodModeling2',
 'FloodModeling3',
 'GasSensorArrayAcetone',
 'GasSensorArrayEthanol',
 'HotwaterPredictor',
 'HouseholdPowerConsumption1',
 'HouseholdPowerConsumption2',
 'IEEEPPG',
 'IronConcentration',
 'LPGasMonitoringHomeActivity',
 'LiveFuelMoistureContent',
 'MadridPM10Quality',
 'MagnesiumConcentration',
 'ManganeseConcentration',
 'MethaneMonitoringHomeActivity',
 'MetroInterstateTrafficVolume',
 'NaturalGasPricesSentiment',
 'NewsHeadlineSentiment',
 'NewsTitleSentiment',
 'OccupancyDetectionLight',
 'PPGDalia',
 'ParkingBirmingham',
 'PhosphorusConcentration',
 'PotassiumConcentration',
 'PrecipitationAndalusia',
 'SierraNevadaMountainsSnow',
 'SodiumConcentration',
 'SolarRadiationAndalusia',
 'SteamPredictor',
 'SulphurConcentration',
 'TetuanEnergyConsumption',
 'VentilatorPressure',
 'WaveDataTension',
 'WindTurbinePower',
 'ZincConcentration']
[5]:
X, y, meta = load_regression("FloodModeling1", return_metadata=True)
print("Shape of X = ", X.shape, " meta data = ", meta)
Shape of X =  (673, 1, 266)  meta data =  {'problemname': 'floodmodeling1', 'timestamps': False, 'missing': False, 'univariate': True, 'equallength': True, 'classlabel': False, 'targetlabel': True, 'class_values': []}

时间序列预测

Monash时间序列预测仓库包含大量预测数据,包括M1、M3和M4等竞赛数据。使用方法与其他问题相同,尽管没有提供训练/测试分割。

[6]:
from aeon.datasets.dataset_collections import get_available_tsf_datasets

get_available_tsf_datasets()
[6]:
['australian_electricity_demand_dataset',
 'car_parts_dataset_with_missing_values',
 'car_parts_dataset_without_missing_values',
 'cif_2016_dataset',
 'covid_deaths_dataset',
 'covid_mobility_dataset_with_missing_values',
 'covid_mobility_dataset_without_missing_values',
 'dominick_dataset',
 'elecdemand_dataset',
 'electricity_hourly_dataset',
 'electricity_weekly_dataset',
 'fred_md_dataset',
 'hospital_dataset',
 'kaggle_web_traffic_dataset_with_missing_values',
 'kaggle_web_traffic_dataset_without_missing_values',
 'kaggle_web_traffic_weekly_dataset',
 'kdd_cup_2018_dataset_with_missing_values',
 'kdd_cup_2018_dataset_without_missing_values',
 'london_smart_meters_dataset_with_missing_values',
 'london_smart_meters_dataset_without_missing_values',
 'm1_monthly_dataset',
 'm1_quarterly_dataset',
 'm1_yearly_dataset',
 'm3_monthly_dataset',
 'm3_other_dataset',
 'm3_quarterly_dataset',
 'm3_yearly_dataset',
 'm4_daily_dataset',
 'm4_hourly_dataset',
 'm4_monthly_dataset',
 'm4_quarterly_dataset',
 'm4_weekly_dataset',
 'm4_yearly_dataset',
 'nn5_daily_dataset_with_missing_values',
 'nn5_daily_dataset_without_missing_values',
 'nn5_weekly_dataset',
 'pedestrian_counts_dataset',
 'saugeenday_dataset',
 'solar_10_minutes_dataset',
 'solar_4_seconds_dataset',
 'solar_weekly_dataset',
 'sunspot_dataset_with_missing_values',
 'sunspot_dataset_without_missing_values',
 'tourism_monthly_dataset',
 'tourism_quarterly_dataset',
 'tourism_yearly_dataset',
 'traffic_hourly_dataset',
 'traffic_weekly_dataset',
 'us_births_dataset',
 'weather_dataset',
 'wind_4_seconds_dataset',
 'wind_farms_minutely_dataset_with_missing_values',
 'wind_farms_minutely_dataset_without_missing_values']
[7]:
X, metadata = load_forecasting("m4_yearly_dataset", return_metadata=True)
print(X.shape)
print(metadata)
data = X.head()
print(data)
(23000, 3)
{'frequency': 'yearly', 'forecast_horizon': 6, 'contain_missing_values': False, 'contain_equal_length': False}
  series_name     start_timestamp  \
0          T1 1979-01-01 12:00:00
1          T2 1979-01-01 12:00:00
2          T3 1979-01-01 12:00:00
3          T4 1979-01-01 12:00:00
4          T5 1979-01-01 12:00:00

                                        series_value
0  [5172.1, 5133.5, 5186.9, 5084.6, 5182.0, 5414....
1  [2070.0, 2104.0, 2394.0, 1651.0, 1492.0, 1348....
2  [2760.0, 2980.0, 3200.0, 3450.0, 3670.0, 3850....
3  [3380.0, 3670.0, 3960.0, 4190.0, 4440.0, 4700....
4  [1980.0, 2030.0, 2220.0, 2530.0, 2610.0, 2720....

时间序列异常检测 (TSAD)

TimeEval 存档 [5] 包含了30个用于时间序列异常检测的数据集集合。每个集合由来自同一来源的多个数据集组成。这些集合涵盖了多个领域,包括网络安全、工业过程和医疗保健。可以使用 load_anomaly_detection 函数直接加载这些数据集:

[8]:
from aeon.datasets.tsad_datasets import multivariate, univariate

# This file also contains sub lists by learning type, e.g. semi-supervised, ...
print("Univariate length = ", len(univariate()))
print("Multivariate length = ", len(multivariate()))
Univariate length =  11233
Multivariate length =  342

为所有监督和半监督数据提供了默认的训练和测试分割。问题的文件结构如下:

<extract_path>/<dimensionality>/<collection>/<dataset>.test.csv
<extract_path>/<dimensionality>/<collection>/<dataset>.train.csv

您可以直接从TimeEval存档[5]中将这些问题加载到内存中。加载函数除了返回数据外,还可以返回相关的元数据:

[9]:
name = ("Genesis", "genesis-anomalies")
X, y, meta = load_anomaly_detection(name, return_metadata=True)
print("Shape of X = ", X.shape)
print("Shape of y = ", y.shape)
print("\nMeta data = ", meta)
Shape of X =  (16220, 18)
Shape of y =  (16220,)

Meta data =  {'problemname': 'Genesis genesis-anomalies', 'timestamps': 16220, 'dimensions': 18, 'learning_type': 'unsupervised', 'contamination': 0.00308261405672, 'num_anomalies': 3}

参考文献

[1] Dau 等人, UCR 时间序列档案, IEEE/CAA 自动化学报, 2019 [2] Ruiz 等人, 多变量时间序列分类大比拼:最新算法进展的回顾与实验评估, 数据挖掘与知识发现 35(2), 2021 [3] Tan 等人, 时间序列外部回归, 数据挖掘与知识发现, 2021 [4] Godahewa 等人, Monash 时间序列预测档案, 神经信息处理系统数据集与基准测试赛道, 2021 [5] Sebastian Schmidl, Phillip Wenig, Thorsten Papenbrock: 时间序列中的异常检测:全面评估. PVLDB 9:(15), 2022, DOI:10.14778/3538598.3538602.

[9]:


使用nbsphinx生成。Jupyter笔记本可以在这里找到。