Mis a jour le 2025-04-14, 12:10

Transformations

Scaling d'une array pour avoir un minimum à 0 et un maximum à 1 :
  • from sklearn.preprocessing import MinMaxScaler
    scaler = MinMaxScaler()
    scaler.fit(X_train)
    X_train_scaled = scaler.transform(X_train)
        
  • une fois qu'on a fait le fit, on peut ensuite réappliquer exactement la même transformation à un autre dataset : X_test_scaled = scaler.transform(X_test)
  • X_train_scaled = scaler.fit_transform(X_train) : raccourci pour faire le fit et le transform en un appel (mais les paramètres sont mémorisés de la même façon).
  • X_train2 = scaler.inverse_transform(X_train_scaled) : permet d'effectuer la transformation inverse.
X2 = sklearn.preprocessing.scale(X, axis = 0) : scaling par colonne (moyenne de 0 et écart-type de 1 pour chaque colonne
Scaling d'une array pour avoir une moyenne 0 et une variance 1 :
  • from sklearn.preprocessing import StandardScaler
    scaler = StandardScaler()
    scaler.fit(X_train)
    X_train_scaled = scaler.transform(X_train)
        
  • une fois qu'on a fait le fit, on peut ensuite réappliquer exactement la même transformation à un autre dataset : X_test_scaled = scaler.transform(X_test)
  • X_train_scaled = scaler.fit_transform(X_train) : raccourci pour faire le fit et le transform en un appel (mais les paramètres sont mémorisés de la même façon).
  • X_train2 = scaler.inverse_transform(X_train_scaled) : permet d'effectuer la transformation inverse.
  • on peut juste centrer les données (moyenne = 0) dans toucher à la variance avec StandardScaler(with_std = False)
  • on peut juste réduire les données (variance = 1) dans toucher à la moyenne avec StandardScaler(with_mean = False)
OneHotEncoder : encode les valeurs de type catégorie en vecteur binaire :
  • from sklearn.preprocessing import OneHotEncoder
    ar = numpy.array([['A', 'C'], ['A', 'T'], ['T', 'A']])
    encoder = OneHotEncoder()
    encoder.fit(ar)
    newAr = encoder.transform(ar)
        
  • par défaut, on récupère une matrice sparse
  • encoder = OneHotEncoder(sparse = False) : pour avoir une matrice non sparse
  • encoder = OneHotEncoder(categories = [['A', 'C', 'G', 'T']] * 2) : pour indiquer pour chaque feature les catégories possibles (sous forme de liste de listes, une sous-liste par feature).
  • encoder = OneHotEncoder(drop = 'first') : oublie la première catégorie dans le cas où elle peut être prédite par l'absence des autres (évite la colinéarité des features).
  • encoder.fit_transform(ar) : fait le fitting et la transformation en un appel.
ColumnTransformer : permet de configurer des transformers pour chaque colonne d'un dataframe :
  • Transformation des 3 premières colonnes avec un OneHotEncoder, et pour les autres, on les redonne non affectées (remainder = 'passthrough')
    from sklearn.compose import ColumnTransformer
    transformer = ColumnTransformer([('myTransformer', OneHotEncoder(sparse = False), [0, 1, 2])], remainder = 'passthrough')
    transformer.fit(df)
    myArray = transformer.transform(df)
        
  • le premier argument de ColumnTransformer est une liste de tuples : (nom donné au transformer, transformer, indices des colonnes du dataframe à transformer avec).
  • On peut indiquer qu'une colonne (ou plusieurs) ne doivent pas être modifiées en fournissant le triplet : ('unmodified', 'passthrough', ['col1', 'col2']) (unmodified est juste un nom quelconque, col1 et col2 sont les noms des colonnes à ne pas modifier).
  • au lieu des indices des colonnes (numériques), on peut aussi donner les noms (string).
  • remainder = 'drop' : élimine les colonnes sans transformer correspondant (défaut).
  • le résultat renvoyé est une array numpy, avec toutes les colonnes non transformées à la fin.
  • les colonnes sont dans l'ordre des différents transformer et de leur indices : d'abord indices du premier transformer dans l'ordre, puis indices du second, ..., puis colonnes non transformées.
  • c'est une array numpy qui est renvoyée.

Copyright python-simple.com
programmer en python, tutoriel python, graphes en python, Aymeric Duclert