samedi 22 avril 2023

Datascience: préparation des données, comment détecter les données hors champ

 Dans la continuation de l'article sur le nettoyage des données, je vais aborder l'étape suivante dans la préparation des données: réduire les données à traiter en se concentrant sur les données représentatives.

 

La réduction ou la suppression de facteur est un enjeu primordial car cela réduira la taille des calculs à effectuer  

Suppression des doublons.

Une première tache sera de supprimer les lignes en double, une ligne doublée n'apporte pas d'information supplémentaire et peuvent même introduire un biais. 

Pandas offre des méthodes pour détecter les doublons et supprimer les lignes: duplicated() et drop_duplicates()

Exemple:


Suppression des données non informatives.

La première des techniques est de supprimer les facteurs présentant une variance nulle ou faible.

Exemple:  une colonne qui ne contiendrait qu'une valeur , aurait une variance nulle et n'apporterait aucune information utilisable.

La colonne x5 contient qu'une valeur pour toutes les lignes. On peut la supprimer.





La méthode nunique()  de Pandas est utile pour détecter les colonnes inutiles et les supprimer avec la méthode drop().

Avec SKLearn.

Sklearn offre une méthode puissante basée sur le seuil de la variance:  VarianceThreshold()

Création d'un jeu de données

from sklearn.datasets import make_regression
X, y = make_regression(n_samples=20, n_features=4,n_informative = 2,  noise=3, random_state=42)
data = pd.DataFrame(X, columns=['x1', 'x2', 'x3', 'x4'])
data.insert(4, 'x5', 0.2)
data.head() #=>
 



Réduction des dimensions
from sklearn.feature_selection import VarianceThreshold
from sklearn import set_config
# nouveau dans sklearn sortie vers Pandas
#set_config(transform_output = "pandas")
print('format avant:', data.shape)
variance = VarianceThreshold().set_output(transform= 'pandas')
dt2 = variance.fit_transform(data.iloc[:,:4])
print('format apres:',dt2.shape)
 
#=>
#format avant: (20, 5)
#format apres: (20, 4)


Il est possible de fournir à VarianceThreshold un seuil de variance et ainsi elargir le champ de
la suppression.
Dans le prochain article on verra comment supprimer les valeurs hors limite qui viennent perturber
l'entrainement des modèles.

Aucun commentaire: