1. Učit se
  2. /
  3. Kurzy
  4. /
  5. Feature Engineering with PySpark

Connected

cvičení

Rozdělení dat podle času

Ve videu jsme se dozvěděli, proč může být náhodné rozdělení dat u časových řad nebezpečné – data z budoucnosti mohou způsobit přetrénování modelu. U časových řad obvykle přibývají nová data postupně, jak jsou k dispozici, a model je třeba pravidelně přetrénovat na nejnovějších datech. Ve videu jsme ukázali, jak provést procentuální rozdělení na trénovací a testovací sady. Tentokrát ale chceme trénovat na všech dostupných datech s výjimkou posledních 45 dní, které použijeme jako testovací sadu.

V tomto cvičení vytvoříme funkci, která najde datum rozdělení tak, aby posledních 45 dní sloužilo k testování a zbytek k trénování. Funkce timedelta() je již naimportována ze standardní knihovny python – datetime.

Pokyny

100 XP
  • Vytvoř funkci train_test_split_date(), která přijímá datový rámec df, název sloupce s datem pro rozdělení split_col a počet dní pro testovací sadu test_days s výchozí hodnotou 45.
  • Pomocí min() a max() najdi nejmenší a největší datum ve sloupci split_col.
  • Vypočítej datum rozdělení trénovací a testovací sady tak, že od max_date odečteš test_days pomocí funkce timedelta(), která přijímá parametr days – předej jí hodnotu test_days.
  • Jako split_col použij OFFMKTDATE, najdi split_date a podle něj rozdel datový rámec na dva nové – train_df a test_df, přičemž test_df bude obsahovat pouze posledních 45 dní dat. Zároveň zajisti, aby test_df obsahoval pouze domy nabízené k datu rozdělení nebo dříve – vyfiltruj záznamy, kde df['LISTDATE'] je menší nebo rovno split_date.