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つの変数でも結構な時間がかかる。)
前処理として、データのクリーニングと正規化を推奨
特徴量の解釈には統計的な知識が必要
リンク