1. Nauka
  2. /
  3. Kursy
  4. /
  5. Inżynieria cech z PySpark

Connected

ćwiczenie

Tworzenie podziałów czasowych

Na wideo omówiliśmy, dlaczego losowy podział danych może być niebezpieczny w przypadku szeregów czasowych – dane z przyszłości mogą powodować przeuczenie modelu. W przypadku szeregów czasowych często pozyskujemy nowe dane w miarę ich dostępności i chcemy ponownie trenować model na najnowszych danych. Na wideo pokazaliśmy, jak wykonać podział procentowy na zbiór testowy i treningowy, ale załóżmy, że chcesz trenować na wszystkich dostępnych danych z wyjątkiem ostatnich 45 dni, które mają posłużyć jako zbiór testowy.

W tym ćwiczeniu utworzysz funkcję wyznaczającą datę podziału, tak by ostatnie 45 dni danych trafiło do zbioru testowego, a pozostałe – do treningowego. Pamiętaj, że timedelta() zostało już zaimportowane ze standardowej biblioteki python o nazwie datetime.

Instrukcje

100 XP
  • Utwórz funkcję train_test_split_date(), która przyjmuje ramkę danych df, kolumnę z datami używaną do podziału split_col oraz liczbę dni przeznaczonych na zbiór testowy test_days – ustaw dla niej domyślną wartość 45.
  • Wyznacz minimalne i maksymalne daty dla split_col za pomocą ,().
  • Oblicz datę podziału na zbiór testowy i treningowy, odejmując test_days od max_date przy użyciu timedelta(), które przyjmuje parametr days – w tym przypadku przekaż do niego test_days.
  • Używając OFFMKTDATE jako split_col, wyznacz split_date i użyj jej do podzielenia ramki danych na dwie nowe: train_df i test_df, gdzie test_df zawiera wyłącznie ostatnie 45 dni danych. Zadbaj przy tym, by test_df obejmował tylko nieruchomości wystawione nie później niż w dniu podziału – odfiltruj df['LISTDATE'] tak, by była mniejsza lub równa split_date.