Cet article est la suite des articles sur la datascience avec Python, n'hésitez pas à aller voir les autres si jamais ce n'est pas encore fait afin de tout comprendre.
Aujourd'hui, nous allons voir continuer à voir comment traiter des données brutes afin de les rendre exploitables par un modèle de machine learning. Ne perdons pas de temps, on va supposer que vous avez suivi l'article précédent et que vous avez déjà importé vos données.
Le nettoyage des données consiste à éliminer les données inutiles, incorrectes, dupliquées, corrompues ou incomplètes d'un ensemble de données dans le cadre du processus de préparation des données, dans le but de créer des ensembles de données fiables, uniformes et standardisés. Pandas est une excellente bibliothèque pour manipuler les données et les analyser.
Il existe quatre façons d'effectuer le nettoyage des données :
Commençons par exclure les valeurs manquantes de notre dataset:
df.dropna()
Par défaut, l'axe est l'axe 0. Cela va donc exclure une ligne complète si jamais une de ses valeurs est manquante.
Ensuite, on va remplacer les NaN :
from numpy import NaN
df.replace({NaN:1.00})
On peut aussi remplacer les valeurs nulles par des scalaires :
df.fillna(10) # remplace les valeurs nulles par 10
Nous pouvons également effectuer les remplacements en utilisant la moyenne, la médiane ou le mode. Pour les données numériques, nous pouvons calculer leur moyenne ou leur médiane et utiliser le résultat pour remplacer les valeurs manquantes. Pour les données non numériques, nous pouvons calculer leur mode pour remplacer la valeur manquante.
df.age.fillna(age_mean, inplace=True)
Il y a d'autres méthodes de remplacement :
s_m = MinMaxScaler(feature_range=(0, 2))
rescaledX = s_m.fit_transform(X)
b_n = Binarizer(threshold = 1.0).fit(X)
b_X = b_n.transform(X)
Cela consiste à augmenter la quantité et la diversité d'un ensemble d'entraînement en appliquant des transformations aléatoires.
C'est utile afin d'entraîner un modèle sur des données qui ne sont pas toutes similaires.
Cela fonctionne particulièrement bien sur les images, c'est ce que nous allons voir maintenant.
Il faut installer Tensorflow pour commencer :
pip install tensorflow
Ensuite on peut importer tensorflow :
import tensorflow as tf
generator = tf.keras.preprocessing.image.ImageDataGenerator(
width_shift_range=[-90,-40,0,40,90],
height_shift_range=[-40,0,40]
)
x, y = next(generator.flow_from_directory('images', batch_size=1))
plt.imshow(x[0].astype('uint8'));
generator = tf.keras.preprocessing.image.ImageDataGenerator(
brightness_range=(0.8,4.2)
)
x, y = next(generator.flow_from_directory('images', batch_size=1))
plt.imshow(x[0].astype('uint8'));
generator = tf.keras.preprocessing.image.ImageDataGenerator(
shear_range=46
)
x, y = next(generator.flow_from_directory('images', batch_size=1))
plt.imshow(x[0].astype('uint8'));
generator = tf.keras.preprocessing.image.ImageDataGenerator(
zoom_range=[0.2,3.0]
)
x, y = next(generator.flow_from_directory('images', batch_size=1))
plt.imshow(x[0].astype('uint8'));
generator = tf.keras.preprocessing.image.ImageDataGenerator(
channel_shift_range=180
)
x, y = next(generator.flow_from_directory('images', batch_size=1))
plt.imshow(x[0].astype('uint8'));
generator = tf.keras.preprocessing.image.ImageDataGenerator(
horizontal_flip=True,
vertical_flip=True
)
x, y = next(generator.flow_from_directory('images', batch_size=1))
plt.imshow(x[0].astype('uint8'));
Il y a beaucoup d'autres possibilités, mais contentons nous uniquement de celles ci pour l'instant.
Pfiou, nous en avons fini avec le prétraitement des données. Dans le prochain article nous pourrons enfin nous attaquer aux choses sérieuses avec la régression !