Revision

Back to Python


Steps

I. 1st Data Exploration: statistiques de bases

  1. head(), describe(), dtypes, nunique(), isnull()
  2. Identifier le label
  3. Discuter des colonnes compliquées, ce qu’on pourrait en faire et les jeter directement
  4. Transformer en catégories les colonnes numérique avec peu de valeurs uniques non ordonnées: df.astype({‘col’: ‘object’})
  5. Supprimer les colonnes catégories avec trop de valeurs et qui ne semblent pas avoir de valeur
  6. Créer une liste de variables numériques et une de variables catégorielles


II. Missing values: regarder les missing values pour voir quoi en faire

  1. Si une colonne a peu de valeurs manquantes, supprimer les lignes associées
  2. Etudier le lien entre les valeurs manquantes des colonnes et la variable cible (2 histogrames/mean de y)
  3. Si lien, remplacer par une valeur spécifique (-1 ou 0 ou une nouvelle catégorie par exemple) avec fillna()
  4. Si pas de lien, on peut supprimer les entrées ou remplacer par une valeur (mean, 0) (à faire plus tard)


III. 2nd Data Exploration: distribution du label et des features

  1. Histrogram
  2. Regarder si distribution logarithmique dans se cas on peut appliquer une fonction log: apply(sign(x) * np.log(abs(x)+1))
  3. Pour les outliers: clipper leur valeur: clip(lower=XX, upper=XX) ou supprimer au dela d’un quantile
  4. Possibilité d’utiliser une méthode de détection d’outlier (OPTICS ou IsolationForest): en parler


IV. 3rd Data Exploration: lien entre les features et la variable cible

  1. Si label=cat -> vs cat -> crosstab(y, col) + f_chi2(crosstab) / vs num -> box(x=y, y=col) + f_oneway(y, col)
  2. Si label=num -> vs cat -> box(x=col, y=y) + f_oneway(col, y) / vs num -> scatter(col, y) + corr(x, y)
  3. Par défaut garder toutes les colonnes mais ça donne une idée de ce qu’on peut attendre du modèle


V. Pipeline

  1. Séparer X et y puis séparer test et train avec train_test_val (model_selection)
  2. Vérifier que plus de données sont manquantes où alors qu’elles vont être prises en compte
  3. Utiliser Imputer pour transformer les na en moyenne ou médiane (ou val) (utiliser un pipeline si besoin)
  4. Utiliser TargetEncoder pour encoder les colonnes catégorielles (utiliser un pipeline si besoin)
  5. Mettre dans un ColumnTransformer avec chaque pipeline associée à des colonnes
  6. Faire un pipeline avec le ColumnTranformer et un model (GradientBoosting)


VI. Fit

  1. Option 1: fit sur X_train et test sur X_test
  2. Option 2: utiliser cross_val_score sur X_train (make_scorer)
  3. Option 3: RandomizedSearchCV avec les distribution à définir + fit le meilleur modèle sur X_train


VII. Metric

  1. Régression MSE ou MAE
  2. Classification: Accuracy, f1_score, roc_auc_score, confusion_matrix, roc_curve(predict_proba)