mcpField
A
alterlab-aeon

alterlab-aeon

github.com/alterlab-ieuデータ・データベース7868 回インストール5 週間前に更新
リポジトリ

alterlab-aeon について

Aeonは、scikit-learn互換のPython向け時系列機械学習ツールキットです。分類や予測から類似検索まで対応し、時系列専用の距離尺度や特徴変換も備えています。

主な機能

  1. 01時系列の分類と回帰
  2. 02クラスタリング、予測、異常検知
  3. 03セグメンテーションと類似検索
  4. 04特徴抽出と変換
  5. 05時系列専用の距離尺度

活用シーン

  1. 01時系列データの分類や値の予測
  2. 02異常や変化点の検出
  3. 03パターンに基づく時系列のグループ化
  4. 04反復・類似する部分系列の検索

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/alterlab-ieu/alterlab-academic-skills --skill alterlab-aeon

インストール後、Claude Code で/alterlab-aeonを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

evals/
evals.json
references/
anomaly_detection.md
classification.md
clustering.md
datasets_benchmarking.md
distances.md
forecasting.md
networks.md
regression.md
segmentation.md
similarity_search.md
transformations.md

詳細

Aeon 時系列機械学習

概要

Aeon は、scikit-learn 互換の時系列機械学習用 Python ツールキットです。分類、回帰、クラスタリング、予測、異常検知、セグメンテーション、類似検索のための最先端アルゴリズムを提供します。

このスキルを使用する場面

次の場合にこのスキルを適用してください。

  • 時系列データを分類したり、時系列データから予測したりする
  • 時系列データ内の異常や変化点を検出する
  • 類似した時系列パターンをクラスタリングする
  • 将来の値を予測する
  • 繰り返しパターン(モチーフ)や異常な部分系列(ディスコード)を見つける
  • 専用の距離指標を使って時系列を比較する
  • 時系列データから特徴量を抽出する
対象外
シナリオ代わりに使用
学習なしで、事前学習済み基盤モデルを使ってゼロショット予測するalterlab-timesfm
係数表、残差診断、計量経済学的推論を伴う ARIMA/SARIMAXalterlab-statsmodels
分類/回帰用の通常の表形式特徴量(時間的な順序がない)alterlab-scikit-learn
生理信号処理(ECG/EEG/EDA のピーク、HRV)alterlab-neurokit2

インストール

uv pip install "aeon>=1.6"     # core; Python 3.11–3.14
uv pip install "aeon[dl]"      # + TensorFlow/Keras for the deep-learning estimators
uv pip install stumpy          # soft dependency of MatrixProfileTransformer

例は aeon 1.6.0(2026-09 時点の最新バージョン)で検証されています。1.x 系ではモジュールが再編成されており、予測器は aeon.forecasting.stats、系列異常検出器は aeon.anomaly_detection.series.*、類似検索は aeon.similarity_search.subsequence / .whole_series にあります。そのため、インポートに失敗した場合は、古いパスだと決めつけず、最新の API リファレンスを確認してください。

主な機能

1. 時系列分類

時系列をあらかじめ定義されたクラスに分類します。アルゴリズムの全カタログについては、references/classification.md を参照してください。

クイックスタート:

from aeon.classification.convolution_based import RocketClassifier
from aeon.datasets import load_classification

# Load data
X_train, y_train = load_classification("GunPoint", split="train")
X_test, y_test = load_classification("GunPoint", split="test")

# Train classifier
clf = RocketClassifier(n_kernels=10000)
clf.fit(X_train, y_train)
accuracy = clf.score(X_test, y_test)

アルゴリズムの選択:

  • 速度+性能:MiniRocketClassifier、Arsenal
  • 最高精度:HIVECOTEV2、InceptionTimeClassifier
  • 解釈可能性:ShapeletTransformClassifier、Catch22Classifier
  • 小規模データセット:DTW 距離を使う KNeighborsTimeSeriesClassifier
2. 時系列回帰

時系列から連続値を予測します。アルゴリズムについては、references/regression.md を参照してください。

クイックスタート:

from aeon.regression.convolution_based import RocketRegressor
from aeon.datasets import load_regression

X_train, y_train = load_regression("Covid3Month", split="train")
X_test, y_test = load_regression("Covid3Month", split="test")

reg = RocketRegressor()
reg.fit(X_train, y_train)
predictions = reg.predict(X_test)
3. 時系列クラスタリング

ラベルなしで類似した時系列をグループ化します。手法については、references/clustering.md を参照してください。

クイックスタート:

from aeon.clustering import TimeSeriesKMeans

clusterer = TimeSeriesKMeans(
    n_clusters=3,
    distance="dtw",
    averaging_method="ba"
)
labels = clusterer.fit_predict(X_train)
centers = clusterer.cluster_centers_
4. 予測

時系列の将来の値を予測します。予測器については、references/forecasting.md を参照してください。

クイックスタート:

from aeon.forecasting.stats import ARIMA

# Orders are separate args (p, d, q) — not an `order` tuple.
forecaster = ARIMA(p=1, d=1, q=1)
forecaster.fit(y_train)

# predict(y) takes the series to forecast from and returns ONE float,
# `horizon` steps past the end of y (default 1). Calling predict() with no
# series raises TypeError in aeon 1.6.
next_step = forecaster.predict(y_train)

# For a multi-step path, use iterative_forecast (returns a 1D ndarray):
y_pred = forecaster.iterative_forecast(y_train, prediction_horizon=5)
5. 異常検知

通常とは異なるパターンや外れ値を特定します。検出器については、references/anomaly_detection.md を参照してください。

クイックスタート:

import numpy as np
from aeon.anomaly_detection.series.distance_based import STOMP

detector = STOMP(window_size=50)
anomaly_scores = detector.fit_predict(y)

# Higher scores indicate anomalies
threshold = np.percentile(anomaly_scores, 95)
anomalies = anomaly_scores > threshold
6. セグメンテーション

変化点を使って時系列を複数の領域に分割します。references/segmentation.md を参照してください。

クイックスタート:

from aeon.segmentation import ClaSPSegmenter

segmenter = ClaSPSegmenter()
change_points = segmenter.fit_predict(y)
7. 類似検索

時系列内または時系列間で類似したパターンを見つけます。references/similarity_search.md を参照してください。

クイックスタート:

from aeon.similarity_search.subsequence import MASS

# Searchers are fitted on a collection shaped (n_cases, n_channels, n_timepoints)
X = y.reshape(1, 1, -1)
query = X[0, :, 100:150]                  # (n_channels, length) — length must match

searcher = MASS(length=50, normalize=True).fit(X)
indexes, distances = searcher.predict(query, k=3)   # rows are (case, timestamp)

aeon 1.6 では StompMotif 推定器は付属しなくなりました。モチーフ/ディスコードを求めるには、aeon.transformations.series.MatrixProfileTransformer(stumpy が必要)を使ってマトリックスプロファイルを計算してください。最小値がモチーフを、最大値がディスコードを示します。

特徴量抽出と変換

特徴量エンジニアリングのために時系列を変換します。references/transformations.md を参照してください。

ROCKET 特徴量:

from aeon.transformations.collection.convolution_based import Rocket

rocket = Rocket()
X_features = rocket.fit_transform(X_train)

# Use features with any sklearn classifier
from sklearn.ensemble import RandomForestClassifier
clf = RandomForestClassifier()
clf.fit(X_features, y_train)

統計的特徴量:

from aeon.transformations.collection.feature_based import Catch22

catch22 = Catch22()
X_features = catch22.fit_transform(X_train)

前処理:

from aeon.transformations.collection import MinMaxScaler, Normalizer

scaler = Normalizer()  # Z-normalization
X_normalized = scaler.fit_transform(X_train)

距離指標

時系列に特化した距離指標です。全カタログについては、references/distances.md を参照してください。

使用方法:

from aeon.distances import dtw_distance, dtw_pairwise_distance

# Single distance
distance = dtw_distance(x, y, window=0.1)

# Pairwise distances
distance_matrix = dtw_pairwise_distance(X_train)

# Use with classifiers
from aeon.classification.distance_based import KNeighborsTimeSeriesClassifier

clf = KNeighborsTimeSeriesClassifier(
    n_neighbors=5,
    distance="dtw",
    distance_params={"window": 0.2}
)

利用可能な距離指標:

  • 伸縮型:DTW、DDTW、WDTW、ERP、EDR、LCSS、TWE、MSM
  • 同期型:ユークリッド、マンハッタン、ミンコフスキー
  • 形状ベース:Shape DTW、SBD

深層学習ネットワーク

時系列データ向けのニューラルアーキテクチャです。references/networks.mdを参照してください。これらの推定器にはaeon[dl]追加パッケージ(TensorFlow ≥ 2.14 / Keras 3、Python < 3.14)が必要です。

アーキテクチャ:

  • 畳み込み:FCNClassifier、ResNetClassifier、InceptionTimeClassifier
  • リカレント:RecurrentNetwork、TCNNetwork
  • オートエンコーダー:AEFCNClusterer、AEResNetClusterer

使用方法:

from aeon.classification.deep_learning import InceptionTimeClassifier

clf = InceptionTimeClassifier(n_epochs=100, batch_size=32)
clf.fit(X_train, y_train)
predictions = clf.predict(X_test)

データセットとベンチマーク評価

標準ベンチマークを読み込み、性能を評価します。references/datasets_benchmarking.mdを参照してください。

データセットの読み込み:

from aeon.datasets import load_classification, load_regression

# Classification
X_train, y_train = load_classification("ArrowHead", split="train")

# Regression
X_train, y_train = load_regression("Covid3Month", split="train")

ベンチマーク評価:

from aeon.benchmarking.results_loaders import get_estimator_results

# Compare with published results (estimators + datasets are lists)
published = get_estimator_results(estimators=["ROCKET"], datasets=["GunPoint"])

一般的なワークフロー

分類パイプライン
from aeon.transformations.collection import Normalizer
from aeon.classification.convolution_based import RocketClassifier
from sklearn.pipeline import Pipeline

pipeline = Pipeline([
    ('normalize', Normalizer()),
    ('classify', RocketClassifier())
])

pipeline.fit(X_train, y_train)
accuracy = pipeline.score(X_test, y_test)
特徴量抽出 + 従来型の機械学習
from aeon.transformations.collection.convolution_based import Rocket
from sklearn.ensemble import GradientBoostingClassifier

# Extract features
rocket = Rocket()
X_train_features = rocket.fit_transform(X_train)
X_test_features = rocket.transform(X_test)

# Train traditional ML
clf = GradientBoostingClassifier()
clf.fit(X_train_features, y_train)
predictions = clf.predict(X_test_features)
可視化を使った異常検知
import numpy as np
import matplotlib.pyplot as plt
from aeon.anomaly_detection.series.distance_based import STOMP

detector = STOMP(window_size=50)
scores = detector.fit_predict(y)

plt.figure(figsize=(15, 5))
plt.subplot(2, 1, 1)
plt.plot(y, label='Time Series')
plt.subplot(2, 1, 2)
plt.plot(scores, label='Anomaly Scores', color='red')
plt.axhline(np.percentile(scores, 95), color='k', linestyle='--')
plt.show()

ベストプラクティス

データの準備
  1. 正規化:ほとんどのアルゴリズムはz正規化の効果が得られます

    from aeon.transformations.collection import Normalizer
    normalizer = Normalizer()
    X_train = normalizer.fit_transform(X_train)
    X_test = normalizer.transform(X_test)
    
  2. 欠損値への対応:分析の前に補完します

    from aeon.transformations.collection import SimpleImputer
    imputer = SimpleImputer(strategy='mean')
    X_train = imputer.fit_transform(X_train)
    
  3. データ形式の確認:Aeonでは形状(n_samples, n_channels, n_timepoints)を想定しています

モデルの選択
  1. シンプルな方法から始める:深層学習の前に、ROCKETのバリアントから始めます
  2. 検証を行う:ハイパーパラメーター調整のため、学習データを分割します
  3. ベースラインと比較する:シンプルな手法(1-NNユークリッド、Naive)と比較します
  4. リソースを考慮する:速度を重視する場合はROCKET、GPUが利用できる場合は深層学習を使います
アルゴリズム選択ガイド

迅速なプロトタイピング向け:

  • 分類:MiniRocketClassifier
  • 回帰:MiniRocketRegressor
  • クラスタリング:ユークリッド距離を使うTimeSeriesKMeans

精度を最大限に高める場合:

  • 分類:HIVECOTEV2、InceptionTimeClassifier
  • 回帰:InceptionTimeRegressor
  • 予測:ARIMA、TCNForecaster

解釈可能性を重視する場合:

  • 分類:ShapeletTransformClassifier、Catch22Classifier
  • 特徴量:Catch22、TSFresh

データセットが小さい場合:

  • 距離ベース:DTWを使うKNeighborsTimeSeriesClassifier
  • 避けるもの:深層学習(大量のデータが必要)

リファレンスドキュメント

詳細情報はreferences/にあります:

  • classification.md - すべての分類アルゴリズム
  • regression.md - 回帰手法
  • clustering.md - クラスタリングアルゴリズム
  • forecasting.md - 予測手法
  • anomaly_detection.md - 異常検知手法
  • segmentation.md - セグメンテーションアルゴリズム
  • similarity_search.md - パターンマッチングとモチーフの検出
  • transformations.md - 特徴量抽出と前処理
  • distances.md - 時系列距離指標
  • networks.md - 深層学習アーキテクチャ
  • datasets_benchmarking.md - データの読み込みと評価ツール

追加リソース

コメント