1. Learn
  2. /
  3. Курси
  4. /
  5. Опрацювання ознак у PySpark

Connected

Вправа

Створення часових розбиттів

У відео ми розглянули, чому випадкове розбиття небезпечне для часових рядів: дані з майбутнього можуть призвести до перенавчання моделі. Часто для часових рядів ви отримуєте нові дані щойно вони з'являються і хочете перевчити модель на найновіших даних. У відео ми показали, як зробити відсоткове розбиття на тренувальну і тестову вибірки, але припустімо, що ви хочете навчати на всіх доступних даних, окрім останніх 45 днів, які підуть у тестову вибірку.

У цій вправі ми створимо функцію, що знаходить дату розбиття, щоб використати останні 45 днів даних для тестування, а решту — для тренування. Зверніть увагу, що timedelta() уже імпортовано для вас зі стандартної бібліотеки python datetime.

Інструкції

100 XP
  • Створіть функцію train_test_split_date(), яка приймає датафрейм df, стовпець дати для розбиття split_col і кількість днів для тестової вибірки test_days, задавши для нього значення за замовчуванням 45.
  • Знайдіть мінімальну та максимальну дати для split_col, використовуючи ,().
  • Визначте дату розбиття тестової та тренувальної вибірок, використавши max_date і віднявши від нього test_days за допомогою timedelta(), яка приймає параметр days; у цьому випадку передайте test_days.
  • Використовуючи OFFMKTDATE як split_col, знайдіть split_date і застосуйте його для фільтрування датафрейма на два нові — train_df і test_df, де test_df — це лише останні 45 днів даних. Додатково переконайтеся, що test_df містить лише будинки, виставлені на продаж станом на дату розбиття, відфільтрувавши df['LISTDATE'] так, щоб вона була меншою або дорівнювала split_date.