DUICUO

このガイドでは、Python 時系列分析ツールである Aeon を使用します。

Aeonは、時系列処理に特化したオープンソースのPythonライブラリです。scikit-learnのAPIスタイルに準拠した設計で、データサイエンティストや研究者に包括的な時系列分析ツールセットを提供します。このプロジェクトは現在も活発に開発されており、2024年現在も継続的にアップデートされています。

Aeon は次の主な機能モジュールを提供します。

1. 時系列分類

  • 複数の分類アルゴリズムをサポート
  • 間隔、辞書、距離に基づく分類子が含まれます。
  • アンサンブル学習法を提供する

2. 時系列回帰分析

  • さまざまな回帰モデルをサポート
  • 予測区間推定を提供する
  • モデル評価ツールが含まれています

3. 時系列クラスタリング

  • 複数のクラスタリングアルゴリズムを実装
  • カスタム距離メトリックをサポート
  • クラスタリング結果の視覚化を提供します

4. 予測モデリング

  • 複数の予測モデルの実装を含む
  • 単変量および多変量予測をサポート
  • 予測的なパフォーマンス評価ツールを提供する

5. データ変換と前処理

  • 複数のデータ変換方法を提供する
  • 時系列特徴抽出をサポート
  • データ標準化ツールを含む

技術的特徴

1. API設計

  • scikit-learn スタイルの API 設計
  • 統一された適合/予測インターフェースを提供します
  • パイプライン操作をサポート

2. 視覚化のサポート

  • 複数の視覚化ツールを内蔵
  • 時系列データの探索をサポート
  • クラスタリングと分類の結果表示を提供します

3. データの互換性

  • pandasデータ構造との緊密な統合
  • 複数のデータ形式の入力をサポート
  • さまざまなパンダのバージョンとの互換性要件に注意してください。

技術互換性に関する注意:Aeonは現在、Pandasバージョン1.4.0とのみ完全に互換性があります。Pandasの新しいバージョンではインデックスAPIがリファクタリングされているため、一部の時系列処理関数で互換性の問題が発生する可能性があります。

Aeonは基本的な可視化機能を備えていますが、Matplotlibのようなプロフェッショナルな可視化ライブラリと比較すると、柔軟性はやや限られています。以下の例では、様々な機能モジュールにおけるAeonの実用的な応用例を示します。

イオン時系列可視化関数分析

Aeonは、探索的データ分析のための視覚化ツールスイートを提供しています。以下は、基本的な折れ線グラフ描画機能の例です。

 """ Aeon时间序列可视化示例演示Aeon内置的探索性数据分析可视化工具基础线图绘制""" from aeon.datasets import load_airline from aeon.visualisation import plot_series %matplotlib inline # 航空客运量数据集y = load_airline() plot_series(y, title="Airline Passenger Numbers")

結果的に、特に目立つ特徴はないものの、描画結果は鮮明で実用的でした。

時系列クラスタリングと分類技術の実装

実用アプリケーションでは、時系列データの中には特定のパターンに従うものもありますが、これらのパターンを分類することは困難な場合があります。ランダムな信号を扱う場合、類似した特性を示す信号と正確に分類することが極めて重要な課題となります。

このシナリオでは、クラスタリングアルゴリズムが効果的な解決策となります。以下のサンプルコードは、3つの基本パターン(正弦関数、余弦関数、または2倍の頻度の正弦関数)のいずれかに従う50個のランダムサンプルを生成します。Aeonを使用すると、これらのサンプルをk近傍法で分類できます。この方法は、異なるシーケンスをそれぞれのカテゴリに効果的にグループ化し、特定のカテゴリの詳細な分析を容易にします。クラスタリングを行わない場合、これらのシーケンスはスタックされ、ノイズが発生し、さらなる分析の妨げになります。

 """时间序列聚类实现基于K-means算法的时间序列分组示例""" import numpy as np import matplotlib.pyplot as plt from aeon.clustering import TimeSeriesKMeans def make_example_dataset(n_samples=50, n_timepoints=30, random_state=42): np.random.seed(random_state) # Generate three different patterns t = np.linspace(0, 2*np.pi, n_timepoints) patterns = [ lambda: np.sin(t), lambda: np.cos(t), lambda: 0.5 * np.sin(2*t) ] X = [] for _ in range(n_samples): # Randomly choose a pattern function pattern_func = np.random.choice(patterns) # Generate the pattern and add some noise series = pattern_func() + np.random.normal(0, 0.1, n_timepoints) X.append(series) return np.array(X)

前述の航空旅客交通データセットの折れ線グラフと比較すると、このクラスタリング視覚化セットは優れたグラフィック品質を示しています。

得られたカテゴリラベルを用いて、Aeonの分類器を用いてデータをさらに分類することができます。シミュレーションデータセットを使用したため、アルゴリズムの完璧な分類性能は期待通りでした。

 from aeon.classification.interval_based import TimeSeriesForestClassifier from sklearn.model_selection import train_test_split # Split into train and test sets X_train, X_test, y_train, y_test = train_test_split(X, labels, test_size=0.2, random_state=42) # Initialize and train a classifier clf = TimeSeriesForestClassifier(random_state=42) clf.fit(X_train, y_train) # Make predictions y_pred = clf.predict(X_test) # Calculate accuracy accuracy = np.mean(y_pred == y_test) print(f"Accuracy: {accuracy:.2f}") # Print some information about the data print(f"\nData shape: {X.shape}") print(f"Number of classes: {len(np.unique(labels))}") print(f"Class distribution: {np.bincount(labels)}")

実験結果

Accuracy: 1.00 Data shape: (50, 30) Number of classes: 3 Class distribution: [13 21 16]

Aeon のドキュメントでは「ETSForecaster」モジュールについて言及されていますが、実際のテストではこのモジュールは正常に実行されなかったことに注意してください。

要約

時系列分析ツールとしてのAeonは、基本機能と使いやすさの面で優れたパフォーマンスを発揮し、特にデータ探索やファンダメンタル分析のタスクに適しています。一部の高度な機能やパフォーマンスの最適化には改善の余地がありますが、簡潔なAPI設計と包括的な基本機能により、時系列分析のための効果的なツールオプションとなっています。具体的なプロジェクトのニーズに基づいて適合性を評価し、必要に応じて他の専門ツールと併用することで、最良の分析結果を得ることをお勧めします。