스케일러를 스케일링하기
이전 연습 문제에서는 단일 변수를 MinMax 스케일링했어요. 스케일링해야 할 변수가 아주 많다면, 각 변수마다 수백 줄의 코드를 쓰고 싶지는 않으실 거예요. 이전 연습 문제를 확장해 이를 함수로 만들어 봅시다.
이 연습은 강의의 일부입니다
PySpark로 하는 Feature Engineering
연습 안내
min_max_scaler라는 함수를 정의하고, 매개변수로 스케일링할 데이터프레임df와 열 이름 목록cols_to_scale를 받도록 하세요.for루프를 사용해 목록의 각 열을 순회하면서 MinMax 스케일링을 적용하세요.- 새 열이 추가된 데이터프레임
df를 반환하세요. - 함수
min_max_scaler()를df와 열 목록cols_to_scale에 적용하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
def ____(____, ____):
# Takes a dataframe and list of columns to minmax scale. Returns a dataframe.
for col in ____:
# Define min and max values and collect them
max_days = df.agg({col: 'max'}).collect()[0][0]
min_days = df.agg({____: 'min'}).collect()[0][0]
new_column_name = 'scaled_' + col
# Create a new column based off the scaled data
df = df.withColumn(____,
(df[____] - min_days) / (max_days - min_days))
return ____
df = min_max_scaler(____, ____)
# Show that our data is now between 0 and 1
df[['DAYSONMARKET', 'scaled_DAYSONMARKET']].show()