Preparación para Random Forest Regression

Ingeniería de características con PySpark

John Hogue

Lead Data Scientist, General Mills

Supuestos necesarios para las características

Random Forest Regression

  • ¿Datos sesgados/no normales? OK
  • ¿Sin escalar? OK
  • ¿Datos faltantes? OK
  • ¿Datos categóricos? OK

Supuestos

Ingeniería de características con PySpark

Características anexadas

Económicos

  • Tipos de hipoteca a 30 años

Gubernamentales

  • Precio medio de vivienda en la ciudad
  • Porcentaje por antigüedad de vivienda en la ciudad
  • Porcentaje por tamaño de vivienda en la ciudad

Sociales

  • Walk Score
  • Bike Score

Estacionales

  • Festivos bancarios
Ingeniería de características con PySpark

Características generadas

Características temporales

  • Valor limitado con un año de datos
  • Semanas con festivos

Tasas, ratios, sumas

  • Contexto empresarial
  • Contexto personal

Características ampliadas

  • Columnas de texto no libre
  • Quitar observaciones con baja frecuencia
# ¿Cuál es la forma de los datos?
print((df.count(), len(df.columns)))
(5000, 126)
Ingeniería de características con PySpark

Columnas del dataframe a vectores de características

from pyspark.ml.feature import VectorAssembler
# Reemplaza valores faltantes
df = df.fillna(-1)
# Define las columnas a convertir en vectores
features_cols = list(df.columns)
# Quita la variable dependiente de la lista
features_cols.remove('SALESCLOSEPRICE')
Ingeniería de características con PySpark

Columnas del dataframe a vectores de características

# Crea el transformador VectorAssembler
vec = VectorAssembler(inputCols=features_cols, outputCol='features')

# Aplica el transformador al dataset df = vec.transform(df)
# Selecciona solo los vectores y la variable dependiente ml_ready_df = df.select(['SALESCLOSEPRICE', 'features'])
# Revisa resultados ml_ready_df.show(5)
+----------------+--------------------+
| SALESCLOSEPRICE|            features|
+----------------+--------------------+
|143000          |(125,[0,1,2,3,5,6...|
|190000          |(125,[0,1,2,3,5,6...|
|225000          |(125,[0,1,2,3,5,6...|
|265000          |(125,[0,1,2,3,4,5...|
|249900          |(125,[0,1,2,3,4,5...|
+----------------+--------------------+
only showing top 5 rows
Ingeniería de características con PySpark

¡Ya podemos hacer machine learning!

Ingeniería de características con PySpark

Preparing Video For Download...