ウィンドウサイズのチューニング
不整脈データセットの最適なウィンドウサイズが 50 であることを自分でも確かめたいとします。データセットは pandas のデータフレーム arrh として与えられており、時刻 t_now までのデータのサブセットを使います。テストデータは X_test, y_test として利用できます。ウィンドウサイズを 10 から 100 までいくつか試し、それぞれのウィンドウでナイーブベイズ分類器を学習し、テストデータでの F1 スコアを評価して、最も良いウィンドウサイズを選びます。numpy は np として利用でき、関数 f1_score() はすでにインポート済みです。最後に、ウィンドウごとの精度を保存するため、空のリスト accuracies が初期化されています。
この演習はコースの一部です
Python で設計する Machine Learning ワークフロー
演習の手順
.loc()メソッドを使って、t_nowで終わるサイズw_sizeのスライディングウィンドウのインデックスを定義します。- スライディングウィンドウから
class列を削除してXを作成し、そのclass列をyとして保存します。 - ナイーブベイズ分類器を
Xとyに当てはめ、テストデータX_testのラベルを予測します。 - 各ウィンドウサイズに対してこれらの予測の F1 スコアを計算し、最も性能の良いウィンドウサイズを見つけます。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Loop over window sizes
for w_size in wrange:
# Define sliding window
sliding = arrh.____[____:t_now]
# Extract X and y from the sliding window
X, y = sliding.____('class', ____), sliding[____]
# Fit the classifier and store the F1 score
preds = GaussianNB().fit(____, ____).____(X_test)
accuracies.append(____(____, ____))
# Estimate the best performing window size
optimal_window = ____[np.____(accuracies)]