1. 학습
  2. /
  3. 강의
  4. /
  5. PySpark로 하는 Feature Engineering

Connected

연습 문제

시계열 분할 만들기

영상에서, 시계열 데이터는 무작위로 분할하면 미래의 데이터가 모델에 유입되어 과적합을 일으킬 수 있어 위험하다는 점을 배웠어요. 시계열에서는 보통 새로운 데이터가 생길 때마다 확보하게 되고, 최신 데이터로 모델을 재학습하고 싶을 때가 많죠. 영상에서는 학습/테스트 세트를 퍼센트 기준으로 분할하는 방법을 보여드렸지만, 여기서는 마지막 45일치 데이터를 테스트 세트로 두고, 나머지 모든 사용 가능한 데이터로 학습하고 싶다고 가정해 봅시다.

이번 연습에서는 마지막 45일치 데이터를 테스트로, 나머지를 학습으로 사용하기 위한 분할 날짜를 찾는 함수를 만들어 볼 거예요. 표준 python 라이브러리 datetime에서 timedelta()는 이미 임포트되어 있으니 참고하세요.

지침

100 XP
  • 데이터프레임 df, 분할에 사용할 날짜 컬럼 split_col, 테스트 세트 일수 test_days를 인자로 받고 기본값을 45로 하는 함수 train_test_split_date()를 작성하세요.
  • split_col의 min과 max 날짜를 ,()를 사용해 구하세요.
  • max_date에서 test_days를 뺀 날짜를 분할 기준으로 사용하세요. 이때 days 매개변수를 받는 timedelta()를 사용하며, 여기서는 test_days를 전달하세요,
  • OFFMKTDATE를 split_col로 사용해 split_date를 구하고, 이를 이용해 데이터프레임을 train_df와 test_df 두 개로 필터링하세요. test_df는 마지막 45일치 데이터만 포함해야 합니다. 추가로, df['LISTDATE']가 split_date 이하인 주택만 포함되도록 필터링해 test_df에 반영하세요.