One-Hot 인코딩
미국에서는 거주 지역에 따라 자녀가 다닐 수 있는 학교가 정해져요. 그래서 많은 분들이 이사할 집이 어떤 학군에 속하는지 매우 중요하게 생각하죠. SCHOOLDISTRICTNUMBER는 번호로 표시되지만, 실제로는 범주형 변수예요. 즉, 이 값을 합하거나 평균 내는 것은 의미가 없어요. 따라서 이 예제에서는 SCHOOLDISTRICTNUMBER를 범주형에서 숫자 벡터로 변환해, 나중에 Machine Learning 모델에서 사용할 수 있도록 하겠습니다.
이 연습은 강의의 일부입니다
PySpark로 하는 Feature Engineering
연습 안내
- 입력을
SCHOOLDISTRICTNUMBER, 출력을School_Index로 하여StringIndexertransformer를string_indexer라는 이름으로 생성하세요. string_indexer를df에fit()과transform()으로 적용하세요. 변환된 데이터프레임은indexed_df에 저장하세요.- 입력을
School_Index, 출력을School_Vec로 하여OneHotEncodertransformer를encoder라는 이름으로 생성하세요. indexed_df에transform()을 적용하세요. 제공된 코드를 사용해 변환의 단계별 결과를 확인해 보세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
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)