aeon について
Aeonは、時系列データを扱う研究者や開発者向けの、scikit-learn互換のPythonツールキットです。予測や分類からパターン分析までを網羅し、データセット読み込みとベンチマーク機能も備えています。
主な機能
- 01時系列の分類と回帰
- 02クラスタリングと予測
- 03異常検出とセグメンテーション
- 04パターン検索と距離指標
- 05特徴量抽出と変換
- 06データセット読み込みと評価
活用シーン
- 01時系列からラベルや値を予測
- 02異常や変化点の検出
- 03類似系列のクラスタリングと反復パターン検索
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ ovachiever/ droid-tings --skill aeonインストール後、Claude Code で/aeonを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/anomaly_detection.mdclassification.mdclustering.mddatasets_benchmarking.mddistances.mdforecasting.mdnetworks.mdregression.mdsegmentation.mdsimilarity_search.mdtransformations.md詳細
Aeon 時系列機械学習
概要
Aeon は scikit-learn 互換の Python 時系列機械学習ツールキットです。分類、回帰、クラスタリング、予測、異常検知、セグメンテーション、類似検索のための最先端のアルゴリズムを提供します。
このスキルを使用するタイミング
このスキルは次の場合に適用します:
- 時系列データからの分類や予測を行うとき
- 時間的なシーケンスにおける異常や変化点を検出するとき
- 類似した時系列パターンをクラスタリングするとき
- 将来の値を予測するとき
- 繰り返しパターン(モチーフ)や異常な部分系列(ディスコード)を見つけるとき
- 専用の距離指標を使って時系列を比較するとき
- 時間的データから特徴量を抽出するとき
インストール
uv pip install aeon
主要機能
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.arima import ARIMA
forecaster = ARIMA(order=(1, 1, 1))
forecaster.fit(y_train)
y_pred = forecaster.predict(fh=[1, 2, 3, 4, 5])
5. 異常検知
通常と異なるパターンや外れ値を特定します。検出器については references/anomaly_detection.md を参照してください。
クイックスタート:
from aeon.anomaly_detection 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 import StompMotif
# Find recurring patterns
motif_finder = StompMotif(window_size=50, k=3)
motifs = motif_finder.fit_predict(y)
特徴量抽出と変換
特徴量エンジニアリングのために時系列を変換します。references/transformations.md を参照してください。
ROCKET 特徴量:
from aeon.transformations.collection.convolution_based import RocketTransformer
rocket = RocketTransformer()
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}
)
利用可能な距離:
- 伸縮型(Elastic): DTW、DDTW、WDTW、ERP、EDR、LCSS、TWE、MSM
- ロックステップ型(Lock-step): ユークリッド、マンハッタン、ミンコフスキー
- 形状ベース(Shape-based): Shape DTW、SBD
ディープラーニングネットワーク
時系列向けのニューラルアーキテクチャです。references/networks.md を参照してください。
アーキテクチャ:
- 畳み込み型:
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 import get_estimator_results
# Compare with published results
published = get_estimator_results("ROCKET", "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 import RocketTransformer
from sklearn.ensemble import GradientBoostingClassifier
# Extract features
rocket = RocketTransformer()
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)
可視化を伴う異常検知
from aeon.anomaly_detection import STOMP
import matplotlib.pyplot as plt
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()
ベストプラクティス
データの準備
-
正規化: 多くのアルゴリズムは z 正規化の恩恵を受けます
from aeon.transformations.collection import Normalizer normalizer = Normalizer() X_train = normalizer.fit_transform(X_train) X_test = normalizer.transform(X_test) -
欠損値の処理: 分析の前に補完します
from aeon.transformations.collection import SimpleImputer imputer = SimpleImputer(strategy='mean') X_train = imputer.fit_transform(X_train) -
データ形式の確認: Aeon は形状
(n_samples, n_channels, n_timepoints)を想定しています
モデルの選択
- シンプルに始める: ディープラーニングの前に ROCKET 系の手法から始めます
- 検証を活用する: ハイパーパラメータ調整のために学習データを分割します
- ベースラインと比較する: 単純な手法(1-NN ユークリッド、Naive)と比較します
- リソースを考慮する: 速度を重視するなら 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- データの読み込みと評価ツール