Préparer la Random Forest Regression

Ingénierie des caractéristiques avec PySpark

John Hogue

Lead Data Scientist, General Mills

Hypothèses requises pour les variables

Random Forest Regression

  • Données asymétriques/non normales ? OK
  • Non normalisées ? OK
  • Données manquantes ? OK
  • Données catégorielles ? OK

Hypothèses

Ingénierie des caractéristiques avec PySpark

Variables ajoutées

Économiques

  • Taux hypothécaires sur 30 ans

Gouvernementales

  • Prix médian des maisons par ville
  • Répartition par âge des maisons par ville
  • Répartition par taille des maisons par ville

Sociales

  • Indice de marche
  • Indice vélo

Saisonnières

  • Jours fériés bancaires
Ingénierie des caractéristiques avec PySpark

Variables construites

Variables temporelles

  • Valeur limitée avec un an de données
  • Semaines de congés

Taux, ratios, sommes

  • Contexte d'affaires
  • Contexte personnel

Variables enrichies

  • Colonnes texte non libres
  • Supprimer les faibles effectifs
# What is shape of our data?
print((df.count(), len(df.columns)))
(5000, 126)
Ingénierie des caractéristiques avec PySpark

Colonnes du dataframe vers vecteurs de caractéristiques

from pyspark.ml.feature import VectorAssembler
# Replace Missing values
df = df.fillna(-1)
# Define the columns to be converted to vectors
features_cols = list(df.columns)
# Remove the dependent variable from the list
features_cols.remove('SALESCLOSEPRICE')
Ingénierie des caractéristiques avec PySpark

Colonnes du dataframe vers vecteurs de caractéristiques

# Create the vector assembler transformer
vec = VectorAssembler(inputCols=features_cols, outputCol='features')

# Apply the vector transformer to data df = vec.transform(df)
# Select only the feature vectors and the dependent variable ml_ready_df = df.select(['SALESCLOSEPRICE', 'features'])
# Inspect Results 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
Ingénierie des caractéristiques avec PySpark

Nous sommes prêts pour le Machine Learning !

Ingénierie des caractéristiques avec PySpark

Preparing Video For Download...