Agrupación en intervalos (Bucketing)
Si eres propietario de una vivienda, es muy importante si una casa tiene 1, 2, 3 o 4 dormitorios. Pero, como con los baños, a partir de cierto punto no te importa tanto si la casa tiene 7 u 8. En este ejemplo veremos cómo encontrar buenos puntos de corte para crear intervalos (buckets).
Este ejercicio forma parte del curso
Ingeniería de características con PySpark
Instrucciones del ejercicio
- Dibuja un gráfico de distribución del
pandasdataframesample_dfusandoSeaborndistplot(). - Dado que parece haber una cola larga de valores poco frecuentes después de 5, crea los
splitsde los buckets: 1, 2, 3, 4, 5+ - Crea el transformador
buckinstanciandoBucketizer()con los splits para definir los buckets; luego establece la columna de entrada comoBEDROOMSy la columna de salida comobedrooms. - Aplica la transformación de Bucketizer sobre
dfusandotransform()y asigna el resultado adf_bucket. Después, verifica los resultados conshow()
ejercicio interactivo práctico
Prueba este ejercicio completando este código de ejemplo.
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']].____()