시작하기무료로 시작하기

관측치가 적은 열 제거하기

많은 feature engineering을 마친 뒤에는 한 걸음 물러서서 무엇을 만들어냈는지 점검하는 것이 좋아요. 범주형 특성에 대해 exploding이나 OneHot Encoding 같은 자동화 기법을 사용했다면 이제 수백 개의 새로운 이진 특성이 생겼을 수도 있어요. Feature selection 자체는 별도의 강의 주제이지만, 데이터 세트의 차원을 줄이기 위해 빠르게 적용할 수 있는 방법들도 있습니다.

이 연습에서는 관측치가 30개 미만인 열을 제거하겠습니다. 30은 통계적 유의성을 논할 때 흔히 쓰이는 최소 관측치 수예요. 그보다 적으면 우연에 의한 관계가 과적합을 일으키기 쉽습니다!

NOTE: 데이터는 데이터프레임 df 에 들어 있습니다.

이 연습은 강의의 일부입니다

PySpark로 하는 Feature Engineering

강의 보기

연습 안내

  • 이진 열 목록을 반복하는 제공된 for 루프를 사용해, 해당 열의 값 sumagg 함수로 계산하세요. 즉시 계산을 실행하기 위해 collect() 를 사용하고 결과를 obs_count 에 저장하세요.
  • obs_countobs_threshold 와 비교하세요. obs_countobs_threshold 보다 작거나 같으면 if 문이 참이 되어야 합니다.
  • cols_to_remove 목록에 추가된 열들을 drop() 을 사용해 제거하세요. * 를 사용하면 목록을 언패킹할 수 있다는 점을 기억하세요.
  • PySpark 데이터프레임의 시작과 종료 형태를 출력하세요. 레코드 수는 count() 를 사용하고, 열의 개수는 df.columns 또는 new_df.columnslen() 을 적용해 구하세요.

실습형 인터랙티브 연습

이 예제를 이 샘플 코드를 완성하여 풀어보세요.

obs_threshold = 30
cols_to_remove = list()
# Inspect first 10 binary columns in list
for col in binary_cols[0:10]:
  # Count the number of 1 values in the binary column
  obs_count = df.____({col: ____}).____()[0][0]
  # If less than our observation threshold, remove
  if ____ ____ ____:
    cols_to_remove.append(col)
    
# Drop columns and print starting and ending dataframe shapes
new_df = df.____(*____)

print('Rows: ' + str(df.____()) + ' Columns: ' + str(____(df.____)))
print('Rows: ' + str(new_df.____()) + ' Columns: ' + str(____(new_df.____)))
코드 편집 및 실행