시작하기무료로 시작하기

One-Hot 인코딩

미국에서는 거주 지역에 따라 자녀가 다닐 수 있는 학교가 정해져요. 그래서 많은 분들이 이사할 집이 어떤 학군에 속하는지 매우 중요하게 생각하죠. SCHOOLDISTRICTNUMBER는 번호로 표시되지만, 실제로는 범주형 변수예요. 즉, 이 값을 합하거나 평균 내는 것은 의미가 없어요. 따라서 이 예제에서는 SCHOOLDISTRICTNUMBER를 범주형에서 숫자 벡터로 변환해, 나중에 Machine Learning 모델에서 사용할 수 있도록 하겠습니다.

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

PySpark로 하는 Feature Engineering

강의 보기

연습 안내

  • 입력을 SCHOOLDISTRICTNUMBER, 출력을 School_Index로 하여 StringIndexer transformer를 string_indexer라는 이름으로 생성하세요.
  • string_indexerdffit()transform()으로 적용하세요. 변환된 데이터프레임은 indexed_df에 저장하세요.
  • 입력을 School_Index, 출력을 School_Vec로 하여 OneHotEncoder transformer를 encoder라는 이름으로 생성하세요.
  • indexed_dftransform()을 적용하세요. 제공된 코드를 사용해 변환의 단계별 결과를 확인해 보세요.

실습형 인터랙티브 연습

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

from pyspark.ml.feature import OneHotEncoder, StringIndexer

# Map strings to numbers with string indexer
string_indexer = ____(inputCol=____, outputCol=____)
indexed_df = ____.____(df).____(df)

# Onehot encode indexed values
encoder = ____(inputCol=____, outputCol=____)
encoded_df = ____.____(indexed_df)

# Inspect the transformation steps
encoded_df[['SCHOOLDISTRICTNUMBER', 'School_Index', 'School_Vec']].show(truncate=100)
코드 편집 및 실행