Cours-DM_Chap2 PDF
Document Details
Uploaded by Deleted User
T. Ben Abdallah & T. Ben Said
Tags
Summary
This document details data preprocessing techniques, examples of datasets, and exploratory data analysis (EDA). It discusses various methods for data cleaning, transformation, and reduction, suitable for undergraduate studies.
Full Transcript
CHAPITRE 2 PRÉTRAITEMENT DES DONNÉES...
CHAPITRE 2 PRÉTRAITEMENT DES DONNÉES Génie Indus 3 32 Exemple de dataset (avec anomalies!) Format date Outliers!! Attributs discrets # Id Nom Date. N Sexe A1 A2 A3 A4 1 111 John 31/12/1990 M 767 0 Ireland Dublin Valeur 2 222 Mery 15/10/1978 F 22 0.5 Iceland NAN manquante 3 333 Alice 19/04/2000 F 60 300 Spain Madrid Lignes dupliquées 4 789 Alex 15/03/2000 A 35 23 Germany Berlin 5 789 Alex 15/03/2000 A 35 23 Germany Berlin 6 555 Peter 1983-12-01 M NAN 10 Italy Rome 7 777 Calvin 05/05/1995 M 32 0.13 Italy Rome 8 888 Roxane 03/08/1948 F 44 0.8 Portugal Lisbon 9 999 Anne 05/09/1992 F 986 5 Switzerland Geneva 10 101010 Paul 14/11/1992 M 24 26 Ytali Rome valeurs uniques Valeurs variées Faute d’orthographe IIT-Sfax T. Ben Abdallah & T. Ben Said 33 EDA & Prétraitement de données EXPLORATORY DATA ANALYSIS (EDA) DATA PREPROCESSING ANALYSE EXPLORATOIRE DES DONNÉES PRÉTRAITEMENT DES DONNÉES Analyse les données pour obtenir des Prépare et transforme les données afin informations initiales et comprendre qu’elles soient prêtes pour l’entraînement leurs caractéristiques des modèles EDA & Prétraitement de données sont complémentaires EDA permet de mieux comprendre les données, ce qui peut orienter les décisions à prendre lors du prétraitement des données IIT-Sfax T. Ben Abdallah & T. Ben Said 34 EDA & Prétraitement de données EXPLORATORY DATA ANALYSIS (EDA) DATA PREPROCESSING ANALYSE EXPLORATOIRE DES DONNÉES PRÉTRAITEMENT DES DONNÉES Exploration initiale : Identification des variables et les types de données Nettoyage des données Statistique descriptive : Aperçu initial de la distribution de données Transformation de données Identification des valeurs manquantes/ outliers et duplicata Discrétisation des données Visualisation des distributions Réduction des données Etude de relation entre les attributs : Analyse de corrélation IIT-Sfax T. Ben Abdallah & T. Ben Said 35 Exploration initiale DataFrame df= Identification des types de colonnes df.info() Age, Height & Weight comportent des valeurs manquantes! 271116 rows × 7 columns IIT-Sfax T. Ben Abdallah & T. Ben Said 36 Statistique descriptive Attributs de type objet df.describe(include="all") Valeur la plus fréquente IIT-Sfax T. Ben Abdallah & T. Ben Said 37 NETTOYAGE DES DONNÉES 38 Identification des valeurs manquantes Valeurs manquantes df= df.isnull().sum() Équivalent à df.isna() Nombre total de valeurs manquantes df.isnull().sum().sum() #9474+60171+62875=132520 IIT-Sfax T. Ben Abdallah & T. Ben Said 39 Traitement des données manquantes Suppression des instances/colonnes Remplissage des ayant des valeurs manquantes valeurs manquantes dropna Par une valeur Par l’élément le plus fréquent/ fictive moyenne/médiane fillna SimpleImputer bfill ffill IIT-Sfax T. Ben Abdallah & T. Ben Said 40 Traitement des données manquantes Suppression df= Suppression des lignes Valeur par défaut df.dropna(axis=0 ,inplace=True,ignore_index=True) Suppression des colonnes df.dropna(axis=1 ,inplace=True,ignore_index=True) Suppression dans un ensemble df.dropna(subset=["Height","Weight"],axis=0, …) df.dropna(subset="Age",axis=1, …) Conserver uniquement les df.dropna(thresh=7, how="any", inplace=True) lignes/colonnes avec au moins 7 valeurs non manquantes! df.dropna(thresh=7, how="any", inplace=True) "any" : Supprimer la ligne ou la colonne si au moins une valeur est NaN "all" : Supprimer la ligne ou la colonne uniquement si toutes les valeurs sont NaN IIT-Sfax T. Ben Abdallah & T. Ben Said 41 Traitement des données manquantes Remplissage (1/2) Par une valeur fictive df= Nombre de NAN total à traiter! df['Age'].fillna(0, inplace=True) ,limit=2) df['Age'].fillna(df[['Height', 'Weight']].apply( lambda x: 40 if (x >= 170 and x >= 80) else 25, axis=1), inplace=True) Remplissage ffill bfill df['Age'].ffill(inplace=True) vers l’avant df['Age'].fillna(method='ffill', inplace=True) Remplissage df['Age’].bfill(inplace=True) vers l’arrière df['Age'].fillna(method='bfill', inplace=True) Il est recommandé de trier les données! IIT-Sfax T. Ben Abdallah & T. Ben Said 42 Traitement des données manquantes Remplissage (2/2) Par l’élément le plus fréquent/ moyenne/médiane from sklearn.impute import SimpleImputer mf_imputer = SimpleImputer(missing_values=np.nan, 24 24.0 strategy='most_frequent') 24 'most_ 24.0 frequent' arr=mf_imputer.fit_transform(df.loc[:,['Age']]) NaN 24.0 ndarray 25 25.0 Il faut avoir un pd.DataFrame(arr,columns=['Age']) 30 30.0 DataFrame ou ndarry 2D! strategy='mean’ / strategy='median' Toutes les valeurs des attributs doivent être de type continue IIT-Sfax T. Ben Abdallah & T. Ben Said 43 Identification des valeurs aberrantes Identifier les instances ayant un comportement non conforme Méthode des valeurs extrêmes (Extreme Value Analysis) Méthode de la règle des 𝐤-voisins les plus proches Boîtes à moustaches (Boxplot) Méthodes basées sur des seuils Méthode de la fréquence Isolation Forest IIT-Sfax T. Ben Abdallah & T. Ben Said 44 Identification des valeurs aberrantes Boxplot Outliers min(max,upper_limit) Premier quartile Q1= 25e percentile= 25% supérieure Moustache des données sont inférieures à la valeur de Q1 Deuxième quartile Q3= 75e percentile= 75% des données sont inférieures à la valeur de Q3 Quartile Q3 Médiane = Q2= 50e percentile IQR box médiane Q2 Interquartile range (IQR)= Q3-Q1 Quartile Q1 lower_limit = Q1 1.5 × IQR inférieure Moustache upper_limit = Q3+1.5 × IQR Outliers : valeurs supérieures à upper_limit max(min,lower_limit) valeurs inférieures à lower_limit Outliers IIT-Sfax T. Ben Abdallah & T. Ben Said 45 Identification des valeurs aberrantes Boxplot Calcul de Q1 et Q3 Soit la distribution de données T suivante : 𝐍=8 observations Valeur 10 15 20 25 30 35 40 45 Position 0 1 2 3 4 5 6 7 Q1, Q3= np.percentile(T, [25,75]) 𝟐𝟓 Index_Q1=( ) × (𝐍-1)=1.75 𝟏𝟎𝟎 𝟕𝟓 Index_Q3=( ) × (𝐍-1)=5.25 𝟏𝟎𝟎 Q1 =15+(20-15)× partie décimale(Index_Q1)= 15+(20-15)×0.75=18.75 Q3 =35+(40-35)× partie décimale(Index_Q3)= 35+(40-35)×0.25=36.25 IIT-Sfax T. Ben Abdallah & T. Ben Said 46 Traitement des valeurs aberrantes sns.boxplot(data=df,x="Height") Q1,Q3=np.percentile(df["Height"], [25,75]) IQR=Q3-Q1 upper_limit=Q3+1.5*IQR lower_limit=Q1-1.5*IQR outliers=df["Height"][(df["Height"]>upper_limit)| (df["Height"]upper_limit, upper_limit, np.where(df['Height']