Escalando tus escaladores
En el ejercicio anterior, aplicamos min-max scaling a una sola variable. Supón que tienes MUCHAS variables que escalar; no querrás cientos de líneas de código para cada una. Vamos a ampliar el ejercicio anterior y convertirlo en una función.
Este ejercicio forma parte del curso
Ingeniería de características con PySpark
Instrucciones del ejercicio
- Define una función llamada
min_max_scalerque reciba como parámetrosdf, un dataframe, ycols_to_scale, la lista de columnas que quieres escalar. - Usa un bucle
forpara iterar por cada columna de la lista y aplicarles min-max scaling. - Devuelve el dataframe
dfcon las nuevas columnas añadidas. - Aplica la función
min_max_scaler()sobredfy la lista de columnascols_to_scale.
ejercicio interactivo práctico
Prueba este ejercicio completando este código de ejemplo.
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()