버킷화(Bucketing)
주택 소유자라면 침실이 1개인지, 2개인지, 3개인지, 4개인지가 매우 중요해요. 하지만 욕실 수와 마찬가지로 어떤 지점을 넘어서면 집에 침실이 7개인지 8개인지는 크게 신경 쓰지 않게 됩니다. 이 예제에서는 좋은 기준점을 찾아 버킷으로 묶는 방법을 살펴보겠습니다.
이 연습은 강의의 일부입니다
PySpark로 하는 Feature Engineering
연습 안내
Seaborn의distplot()을 사용해pandas데이터프레임sample_df의 분포를 그려 보세요.- 5 이후에 드물게 나타나는 값들이 긴 꼬리를 이루는 것처럼 보이므로, 1, 2, 3, 4, 5+ 구간의 버킷
splits를 만드세요. - 버킷을 설정할
splits로Bucketizer()를 생성해 변환기buck을 만들고, 입력 컬럼은BEDROOMS, 출력 컬럼은bedrooms로 설정하세요. transform()으로df에 Bucketizer 변환을 적용해 결과를df_bucket에 할당하세요. 그런 다음show()로 결과를 확인하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
from pyspark.ml.feature import Bucketizer
# Plot distribution of sample_df
sns.____(____, axlabel='BEDROOMS')
plt.show()
# Create the bucket splits and bucketizer
splits = [____, ____, ____, ____, ____, ____, float('Inf')]
buck = ____(splits=____, inputCol=____, outputCol=____)
# Apply the transformation to df: df_bucket
df_bucket = ____.____(____)
# Display results
df_bucket[['BEDROOMS', 'bedrooms']].____()