1. 学ぶ
  2. /
  3. コース
  4. /
  5. PySparkで学ぶ特徴量エンジニアリング

Connected

演習

時系列のスプリットを作成する

動画では、時系列データを無作為に分割すると、未来のデータが混入してモデルが過学習する危険があることを学びました。時系列では、新しいデータが入手できるたびに蓄積され、最新データでモデルを再学習したくなることがよくあります。動画では学習用・テスト用に百分率で分割する方法を紹介しましたが、ここでは「直近45日分をテスト用にし、それ以外のすべてを学習用にする」ケースを考えます。

この演習では、テスト用に直近45日分を使い、残りを学習用にするための分割日を求める関数を作成します。timedelta() は標準の python ライブラリ datetime から既にインポート済みです。

指示

100 XP
  • データフレーム df、分割に使う日付列 split_col、テスト用日数 test_days(デフォルトは45)を受け取る関数 train_test_split_date() を作成します。
  • ,() を使って split_col の min 日付と max 日付を求めます。
  • max_date から timedelta()(days 引数にこの場合は test_days を渡します)で test_days を引いて、学習用とテスト用を分ける分割日を求めます。
  • OFFMKTDATE を split_col にして split_date を求め、その日付でデータフレームを train_df と test_df の2つにフィルタします。test_df はデータの直近45日分のみとし、さらに df['LISTDATE'] が split_date 以下の住戸(分割日時点で掲載されている住戸)のみを含むようにフィルタします。