Масштабуємо ваші скейлери
У попередній вправі ми виконали min-max масштабування однієї змінної. Припустімо, що у вас БАГАТО змінних для масштабування — ви не хочете писати сотні рядків коду для кожної. Розширімо попередню вправу й перетворімо її на функцію.
Ця вправа є частиною курсу
Опрацювання ознак у PySpark
Інструкції до вправи
- Створіть функцію
min_max_scaler, яка приймає параметри:df— датафрейм, іcols_to_scale— список стовпців для масштабування. - Використайте цикл
for, щоб пройтися кожним стовпцем зі списку та виконати min-max масштабування. - Поверніть датафрейм
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()