Python 時系列分析 1,000本ノック
– ノック94: ラグ特徴量 –

Python 時系列分析 1,000本ノック– ノック94: ラグ特徴量  –
次の Python コードで shift() を使って作成している列は、何のためのものですか?

Python コード:

import numpy as np, pandas as pd
from sklearn.ensemble import RandomForestRegressor

np.random.seed(42)
t = np.arange(300)
df = pd.DataFrame({'y': 50 + 10*np.sin(2*np.pi*t/12) + 0.05*t 
                        + np.random.randn(300)*2})
for k in [1, 2, 3, 12]:
    df[f'lag{k}'] = df['y'].shift(k)
df = df.dropna()

X, y = df.drop(columns='y'), df['y']
m = RandomForestRegressor(random_state=0).fit(X[:200], y[:200])
pred = m.predict(X[200:])

print(df.head(3).round(2))
print(f"\nRMSE: {np.sqrt(((y[200:]-pred)**2).mean()):.4f}")
print(pd.Series(m.feature_importances_, index=X.columns).round(4))

回答の選択肢:
(A) 時系列データを平滑化してノイズを除去するため
(B) 時系列データを教師あり学習で扱える説明変数に変換するため
(C) 時系列データの季節成分を分解して取り出すため
(D) 時系列データの欠損値を前方補完するため

Screenshot

【月1 特定テーマ講座(11月)】
POS売上分析Copilotを作る
(POSデータ×PYTHON×生成AI)

【開催日時】 全2回(土)2026/11/7,11/21(13:30〜18:00)
【受講形式】 当日Zoom( or 復習用に後日動画視聴)
【参加費用】 2万2千円(税込み)/人