Ajustar datos

Ingeniería de características con PySpark

John Hogue

Lead Data Scientist, General Mills

¿Por qué transformar los datos?

Transformación

Ingeniería de características con PySpark

¿Qué es MinMax Scaling?

Escalado MinMax

Ingeniería de características con PySpark

Escalado MinMax

# define min and max values and collect them
max_days = df.agg({'DAYSONMARKET': 'max'}).collect()[0][0]
min_days = df.agg({'DAYSONMARKET': 'min'}).collect()[0][0]

# create a new column based off the scaled data df = df.withColumn("scaled_days", (df['DAYSONMARKET'] - min_days) / (max_days - min_days))
df[['scaled_days']].show(5)
+--------------------+
|         scaled_days|
+--------------------+
|0.044444444444444446|
|0.017777777777777778|
| 0.12444444444444444|
| 0.08444444444444445|
| 0.09333333333333334|
+--------------------+
only showing top 5 rows
Ingeniería de características con PySpark

¿Qué es la estandarización?

Transformar a distribución normal estándar

  • z = (x - μ)/ σ
  • Media, μ = 0
  • Desviación típica, σ = 1

Estandarización

Ingeniería de características con PySpark

Estandarización

mean_days = df.agg({'DAYSONMARKET': 'mean'}).collect()[0][0]
stddev_days = df.agg({'DAYSONMARKET': 'stddev'}).collect()[0][0]

# Create a new column with the scaled data df = df.withColumn("ztrans_days", (df['DAYSONMARKET'] - mean_days) / stddev_days)
df.agg({'ztrans_days': 'mean'}).collect()
[Row(avg(ztrans_days)=-3.6568525985103407e-16)]
df.agg({'ztrans_days': 'stddev'}).collect()
[Row(stddev(ztrans_days)=1.0000000000000009)]
Ingeniería de características con PySpark

¿Qué es el escalado logarítmico?

Distribución sin escalar

Gráfico de distribución sin procesar

Distribución con escala logarítmica

Gráfico de distribución con log

Ingeniería de características con PySpark

Escalado logarítmico

# import the log function
from pyspark.sql.functions import log
# Recalculate log of SALESCLOSEPRICE
df = df.withColumn('log_SalesClosePrice', log(df['SALESCLOSEPRICE']))
Ingeniería de características con PySpark

¡Vamos a practicar!

Ingeniería de características con PySpark

Preparing Video For Download...