tsfreshとは?
tsfreshは、Pythonの時系列データ解析のための強力なライブラリです。機械学習や統計解析において、時系列データから自動的に有意な特徴量を抽出することができます。「time series feature extraction based on scalable hypothesis tests」の略称で、複雑な時系列データから洞察を得るプロセスを大幅に簡素化します。
主な特徴
- 時系列データから自動的に多数の特徴量を生成
- 統計的仮説検定に基づく特徴量選択
- pandasデータフレームとの高い互換性
- 機械学習モデルの前処理に最適
インストール方法
pipを使用してインストールできます:
pip install tsfresh
使用例
以下に、tsfreshを使用して時系列データから特徴量を抽出する基本的な例を示します:
import pandas as pd
import numpy as np
from tsfresh import extract_features, select_features
from tsfresh.utilities.dataframe_container import TSFreshDataFrameContainer
# サンプルの時系列データを作成
def generate_time_series_data(n_samples=100, n_features=3):
data = []
for i in range(n_samples):
for j in range(n_features):
time_series = pd.DataFrame({
'id': [i] * 50,
'time': range(50),
'value': np.cumsum(np.random.normal(0, 1, 50))
})
data.append(time_series)
return pd.concat(data)
# データの生成
df = generate_time_series_data()
# 特徴量の抽出
X = extract_features(df, column_id='id', column_value='value')
# 特徴量選択(統計的に有意な特徴量のみを選択)
X_selected = select_features(X, y=np.random.randint(0, 2, len(X)))
print("オリジナルの特徴量数:", X.shape[1])
print("選択された特徴量数:", X_selected.shape[1])
このコード例では、以下のステップを実行しています:
- ダミーの時系列データを生成
extract_features()
関数で特徴量を抽出select_features()
で統計的に有意な特徴量を選択
注意点と推奨事項
- 大規模なデータセットでは処理時間に注意(1つの変数でも結構な時間がかかる。)
- 前処理として、データのクリーニングと正規化を推奨
- 特徴量の解釈には統計的な知識が必要