> Modules non standards > Scikit-Learn > Transformations
Transformations
Scaling d'une array pour avoir un minimum à 0 et un maximum à 1 :
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 :
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