Partie 2
Partie 2
FOUILLE DE DONNÉES
2ème année Génie Informatique
Semestre 1
PRÉSENTÉ PAR
IIT-Sfax
T. Ben Abdallah & R. Boujelben 2
Organisation du cours
IIT-Sfax
T. Ben Abdallah & R. Boujelben 3
PLAN
DU COURS
Plan du cours
2 Prétraitement de données
IIT-Sfax
T. Ben Abdallah & R. Boujelben 5
Plan du cours (4- Classification & Régression)
C- Arbres de décision
E- Techniques ensemblistes
IIT-Sfax
T. Ben Abdallah & R. Boujelben 6
VOLET PRATIQUE
IIT-Sfax
T. Ben Abdallah & R. Boujelben 7
INTRODUCTION GÉNÉRALE
تقديم عام
Génie Indus 3
8
L’ère des données!
IIT-Sfax
T. Ben Abdallah & R. Boujelben 9
Extraction des Connaissances à partir des Données
Informations
significatives Connaissances
Data Mining
Sens
Produire des
connaissances en faisant
Informations Données parler les données !
extraites préparées
Contexte
Données
IIT-Sfax
T. Ben Abdallah & R. Boujelben 10
Domaines d’application en DM
IIT-Sfax
T. Ben Abdallah & R. Boujelben 11
Quelques applications en DM
IIT-Sfax
T. Ben Abdallah & R. Boujelben 12
Data Mining vs Machine Learning
IIT-Sfax
T. Ben Abdallah & R. Boujelben 13
Données!
Données Tabulaire!
Data Mining /
Machine Learning
IIT-Sfax
T. Ben Abdallah & R. Boujelben 14
CHAPITRE 1
APERÇU GÉNÉRAL SUR
LE PROCESSUS ECD
Génie Indus 3
15
Processus ECD Trois phases majeurs!
IIT-Sfax
T. Ben Abdallah & R. Boujelben 16
Processus ECD Trois phases majeurs!
Données Données
I-Préparation des
données
II-Data Mining
Connaissances Modèles
III-Validation
Modèle retenu
IIT-Sfax
T. Ben Abdallah & R. Boujelben 17
PhaseI: Préparation des données
Observations
IIT-Sfax
T. Ben Abdallah & R. Boujelben 18
PhaseI: Préparation des données
Aucune relation existe entre les valeurs Les valeurs ont un ordre significatif
N’est pas possible de calculer des distances
IIT-Sfax
T. Ben Abdallah & R. Boujelben 19
PhaseI: Préparation des données
Les deux résultats sont d’importance égale Les résultats n’ont pas la même importance
ex. sexe H/F ex. Test médical P/N
IIT-Sfax
T. Ben Abdallah & R. Boujelben 20
PhaseI: Préparation des données
Nettoyage de données
Remplacer les valeurs manquantes
Transformation des données
Supprimer les valeurs aberrantes
Normaliser les données
Détecter les anomalies (outliers detection)
IIT-Sfax
T. Ben Abdallah & R. Boujelben 21
PhaseII : Data Mining Tâches
IIT-Sfax
T. Ben Abdallah & R. Boujelben 22
PhaseII : Data Mining DM descriptif
IIT-Sfax
T. Ben Abdallah & R. Boujelben 23
PhaseII : Data Mining DM descriptif
IIT-Sfax
T. Ben Abdallah & R. Boujelben 24
PhaseII : Data Mining DM prédictif
IIT-Sfax
T. Ben Abdallah & R. Boujelben 25
Apprentissage supervisé
IIT-Sfax
T. Ben Abdallah & R. Boujelben 26
Apprentissage supervisé
Arbres de décision ✓
Réseau de neurones ✓
Régression logistique/ linéaire ✓
Support Vector Machine (SVM) ✓
Gradient Boosting/ XGBoost/CatBoost
✓
Random Forest ✓
IIT-Sfax
T. Ben Abdallah & R. Boujelben 27
PhaseIII: Validation
IIT-Sfax
T. Ben Abdallah & R. Boujelben 28
Quelques outils de Data Mining
Open Source
Licensed
IIT-Sfax
T. Ben Abdallah & R. Boujelben 29
Librairies & Framework
IIT-Sfax
T. Ben Abdallah & R. Boujelben 30
Quiz
1. L’étape de préparation de données consiste principalement à (seule réponse)
Donner un contexte aux données
Donner un sens aux informations
Évaluer et interpréter la fiabilité des données
Répartir les données
IIT-Sfax
T. Ben Abdallah & R. Boujelben 31
CHAPITRE 2
PRÉTRAITEMENT
DE DONNÉES
Génie Indus 3
32
Exemple de dataset! Valeur
aberrante
(Outlier)
Faute
Format invalide Valeurs d’orthographe
variées
IIT-Sfax
T. Ben Abdallah & R. Boujelben 33
Prétraitement des données
❑ Transformation de données
❑ Discrétisation des données
❑ Réduction des données
IIT-Sfax
T. Ben Abdallah & R. Boujelben 34
Analyse Exploratoire des données (AED)!
1/Exploration initiale
2/ Statistique descriptives Identification des variables et les types de données
5/Etude de relation
entre les attributs
Analyse de corrélation
3/Identification des
valeurs manquantes/ Segmentation (Clustering)
outliers et duplicata
4/Visualisation des distributions
IIT-Sfax
T. Ben Abdallah & R. Boujelben 35
Exploration initiale
IIT-Sfax
T. Ben Abdallah & R. Boujelben 36
Statistique descriptives
IIT-Sfax
T. Ben Abdallah & R. Boujelben 37
Identification des valeurs manquantes NaN
Valeurs
manquante
df=
df.isnull().sum()
Équivalent à df.isna()
df.isnull().sum().sum()
#9474+60171+62875=132520
IIT-Sfax
T. Ben Abdallah & R. Boujelben 38
Traitement des données manquantes
IIT-Sfax
T. Ben Abdallah & R. Boujelben 39
Traitement des données manquantes Suppression
ignore_index=True)
df.dropna(subset="Age",axis=1, inplace=True)
IIT-Sfax
T. Ben Abdallah & R. Boujelben 40
Traitement des données manquantes Remplissage (1/2)
df['Age'].fillna(df[['Height', 'Weight']].apply(
lambda x: 40 if (x[0] >= 170 and x[1] >= 80) else 25,
axis=1), 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 & R. Boujelben 41
Traitement des données manquantes Remplissage (2/2)
strategy='mean’ / strategy='median'
Toutes les valeurs des attributs doivent être de type continue
IIT-Sfax
T. Ben Abdallah & R. Boujelben 42
Identification des valeurs aberrantes
Méthode de la fréquence
Isolation Forest
IIT-Sfax
T. Ben Abdallah & R. Boujelben 43
Identification des valeurs aberrantes Boxplot
Outliers
min
Premier quartile Q1= 25e percentile=
inférieure
Moustache
25% des données sont inférieures au valeur de Q1
IQR
box
médiane Q2
Interquartile range (IQR)=Q3-Q1
supérieure
Moustache
max(upper limit)= Q3+1.5 × IQR
Q1, Q3 max
Outliers
IIT-Sfax
T. Ben Abdallah & R. Boujelben 44
Boxplot Q1, Q3 ?
Valeur 10 15 20 25 30 35 40 45
Position 0 1 2 3 4 5 6 7
IIT-Sfax
T. Ben Abdallah & R. Boujelben 45
Traitement des outliers
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"]<lower_limit)]
Série
df['Height']=np.where(df['Height']>=upper_limit,
upper_limit, np.where(df['Height']<=lower_limit,
lower_limit,df['Height']))
IIT-Sfax
T. Ben Abdallah & R. Boujelben 46
Identification & Traitement des lignes dupliquées
df1=df[df.duplicated()]
df.drop_duplicates(inplace=True,
ignore_index=True)
IIT-Sfax
T. Ben Abdallah & R. Boujelben 47
Visualisation des distributions Attribut continu
sns.kdeplot(df['Weight'],
Densité avec une partition gaussienne ,
bw_method='scott')
=Kernel Density Estimator(KDE) bw_adjust=1)
𝐗𝐣
𝟏 𝐚𝟏𝐣 −𝐚𝐢𝐣
𝐃𝐞𝐧𝐬𝐢𝐭𝐲(𝐚𝟏𝐣 )=𝐍𝐡 σ𝐍
𝐢=𝟏 𝐊( ) 𝐨𝐛𝐬𝟏 𝐚𝟏𝐣
𝐡
⋮ ⋮
𝟐
𝐨𝐛𝐬𝐢 𝐚𝐢𝐣
𝟏 −𝒚 Noyau
Fonction noyau 𝐊(𝐲) = 𝒆 𝟐 𝐨𝐛𝐬𝐍 𝐚𝐍𝐣
𝟐𝝅 gaussien
𝐍= Nombre d’observations
𝐡= bandwidth bw ('scott')
𝟎.𝟒𝟕𝟗.𝐬𝐭𝐝(𝐗 𝐣 )
bw ('scott')=bw_adjust × ( 𝟏 )
𝐍𝟓
IIT-Sfax
T. Ben Abdallah & R. Boujelben 48
Type de distribution de données continues
Courbe de Gauss
density
Queue de la
distribution
IIT-Sfax
T. Ben Abdallah & R. Boujelben 49
Calcul de moyenne/ médiane/ mode Exemple
𝐍=10
𝟏 𝐍
moyenne= σ 𝐱 df['Revenu'].mean()#1062.0
𝐍 𝐢=𝟏 𝐢
df=
𝟏𝟐𝟎𝟎+𝟏𝟐𝟓𝟎 df['Revenu'].median()#1225.0
median? =
𝟐 𝐱𝟏 =
200 300 720 1100 1200 1250 1300 1400 1500 1650 𝐱𝟐 =
1 2 3 4 5 6 7 8 9 10
𝐍 𝟏𝟎 𝐍
Index Q2_1= = = 𝟓 et Index Q2_2= + 𝟏 = 𝟔
𝟐 𝟐 𝟐
mode? =
le point où la fonction de densité de probabilité atteint son
maximum!
from scipy.stats import gaussian_kde
kde=gaussian_kde(df['Revenu'])
df.sort_values(by="Revenu", inplace=True)
x_vals = df["Revenu"].values
y_vals = kde(x_vals)
valeur_mode = x_vals[np.argmax(y_vals)]#1300 moyenne<médiane< mode
IIT-Sfax
T. Ben Abdallah & R. Boujelben 50
Histogramme de données continues histplot+kde
𝐍=10
histplot
df=
sns.histplot(x="Revenu", data=df,
𝐱𝟏 =
bins=3)
𝐱𝟐 =
sns.histplot(x="Revenu", data=df,
IIT-Sfax
T. Ben Abdallah & R. Boujelben 51
histplot+kde/ choix optimal de nombre de bins!
Dataset 𝛀
Règle de Freedman-Diaconis 𝐗𝟏 … 𝐗𝐊
𝟏
(− ) 𝐨𝐛𝐬𝟏 𝐚𝟏𝟏 𝐚𝟏𝐊
nombre de bins= 𝟐 ×IQR × 𝐍 𝟑
⋮ ⋮ ⋮ ⋮
Règle de Scott 𝐨𝐛𝐬𝐢 𝐚𝐢𝟏 𝐚𝐢𝐊
std(𝛀) 𝐨𝐛𝐬𝐍 𝐚𝐍𝟏 𝐚𝐍𝐊
nombre de bins= 𝟑. 𝟓 × 𝟏
( )
𝐍𝟑
IIT-Sfax
T. Ben Abdallah & R. Boujelben 52
Histogramme de données discrètes countplot
countplot
df=
Attribut continu
sns.countplot(x="Age", data=df, bins=3)
Attribut discret
sns.countplot(x="Sex", data=df)
,
order=["F","M"])
IIT-Sfax
T. Ben Abdallah & R. Boujelben 53
Analyse de corrélation 1/2
df=
𝐗 𝐘
corrélation de Pearson= 𝐱 𝟏 𝐲𝟏
mesure la relation linéaire entre deux variables ⋮ ⋮
𝐱 𝐢 𝐲𝐢
σ𝐍 ഥ ഥ
𝐢=𝟏(𝐱 𝐢 −𝐗)(𝐲𝐢 −𝐘)
𝐂𝐨𝐫𝐫(𝐗, 𝐘)=
𝟐 𝟐
[−𝟏. . 𝟏] ⋮ ⋮
σ𝐍 ഥ
𝐢=𝟏(𝐱 𝐢 −𝐗) σ𝐍 ഥ
𝐢=𝟏(𝐲𝐢 −𝐘)
𝐱 𝐧 𝐲𝐧
σ𝐍
𝐢=𝟏 𝐱 𝐢
ഥ=
𝐗 =moyenne de 𝐗 avec 𝐍= Nombre df_corr=
𝐍
𝐍
ഥ=σ𝐢=𝟏 𝐱𝐢=moyenne de 𝐘
𝐘 d’observations
𝐍
par défaut numeric_only=False
df_corr=df.corr(numeric_only= True)
Inclure uniquement des données de type float, int ou booléen!
sns.heatmap(df_corr, annot=True,
vmin=-1, vmax=1)
plt.title('Matrice de Corrélation')
plt.show()
IIT-Sfax
T. Ben Abdallah & R. Boujelben 54
Analyse de corrélation 2/2
𝐘 𝐘
𝐂𝐨𝐫𝐫 𝐗, 𝐘 = −𝟏 −𝟏 < 𝐂𝐨𝐫𝐫 𝐗, 𝐘 < 𝟎
Corrélation négative= 𝐗 et 𝐘évoluent Corrélation parfaite
négative= corrélation forte
ensemble de manière linéaire dans des
directions opposées! 𝐗 𝐗
Corrélation=0 = Absence de 𝐘
𝐂𝐨𝐫𝐫 𝐗, 𝐘 = 𝟎
corrélation linéaire entre les attributs
𝐗 et 𝐘 !
𝐗
IIT-Sfax
T. Ben Abdallah & R. Boujelben 55
Transformation des données
pd.DataFrame(arr,columns=['X1','X2'])
Après 𝐌𝐢𝐧𝐌𝐚𝐱𝐒𝐜𝐚𝐥𝐞𝐫
☺ Optimum pour distribution asymétrique
☺ Préserve la forme de la distribution
Sensibles aux valeurs aberrantes
IIT-Sfax
T. Ben Abdallah & R. Boujelben 56
Transformation des données
standard_scaler= StandardScaler()
Après 𝐌𝐢𝐧𝐌𝐚𝐱𝐒𝐜𝐚𝐥𝐞𝐫
arr= standard_scaler.fit_transform(df)
pd.DataFrame(arr,columns=['X1','X2'])
IIT-Sfax
T. Ben Abdallah & R. Boujelben 57
Transformation des données
Standardization 𝐑𝐨𝐛𝐮𝐬𝐭𝐒𝐜𝐚𝐥𝐞𝐫
Transformation des données en utilisant la médiane et l’écart interquartile (IQR)
𝐣𝐢 𝐚 −𝐐𝟐
𝐳𝐣𝐢 = IQR avec IQR= 𝐐𝟑 - 𝐐𝟏 ; 𝐐𝟏= 25e percentile ; 𝐐𝟑= 75e percentile
et 𝐐𝟐= 50e percentile= médiane df=
standard_scaler= RobustScaler()
pd.DataFrame(arr,columns=['X1','X2'])
IIT-Sfax
T. Ben Abdallah & R. Boujelben 58
Transformation des données Encoding Categorial Data
IIT-Sfax
T. Ben Abdallah & R. Boujelben 59
Transformation des données Encoding Categorial Data
IIT-Sfax
T. Ben Abdallah & R. Boujelben 60
Transformation des données Encoding Categorial Data
OneHotEncoder/ get_dummies()
Transformer l’espace de 𝐧 descripteurs à 𝐤
descripteurs binaires (𝐤 > 𝐧)
df=pd.get_dummies(df, columns=['Sex'],
dtype='int32')
IIT-Sfax
T. Ben Abdallah & R. Boujelben 61
Discrétisation des données Méthodes
NB.
Il n’y a pas une discrétisation optimale
Il y a une démarche cohérente par rapport à un objectif donné et une distribution donnée
IIT-Sfax
T. Ben Abdallah & R. Boujelben 62
Discrétisation des données
𝐦𝐚𝐱 𝐱𝐢 −𝐦𝐢𝐧 𝐱𝐢
𝐖𝐢𝐝𝐭𝐡= n_bins
IIT-Sfax
T. Ben Abdallah & R. Boujelben 63
Discrétisation des données
Feature space
𝐅 Sélection
Sélection de descripteurs
𝐅′
Sélection des descripteurs les plus pertinentes à Feature space
après réduction
partir de l’ensemble initial de caractéristiques
Extraction de données
𝐅 𝐅′
Réduction basée sur une transformation des données Extraction
IIT-Sfax
T. Ben Abdallah & R. Boujelben 65
Réduction de dimensionnalité Sélection des descripteurs
Sélection des
descripteurs
Variance
Dispersion ratio Forword Feature Selection Regularisation L1,L2
IIT-Sfax
T. Ben Abdallah & R. Boujelben 66
Réduction de dimensionnalité Filtres vs Wrappers vs Embedded
Learning Learning
Algorithm Algorithm Learning
algorithm
and
Performance
Performance
IIT-Sfax
T. Ben Abdallah & R. Boujelben 67
Réduction de dimensionnalité VarianceThreshold
Tous les attributs doivent être de
𝐍 type numérique + Pas de NaN
𝟏 df=
𝐯𝐚𝐫 𝐗 𝐣 ഥ 𝐣 )𝟐
= (𝐚𝐢𝐣 − 𝐗 [0, +∞[ 𝐗𝐣
𝐍 𝐨𝐛𝐬𝟏 𝐚𝟏𝐣
𝐢=𝟏
𝐍 ⋮ ⋮
ഥ 𝐣 = 𝐚𝐢𝐣
𝐗 𝐨𝐛𝐬𝐢 𝐚𝐢𝐣
𝐢=𝟏
𝐨𝐛𝐬𝐍 𝐚𝐍𝐣
data_high_variance = thresholder.fit_transform(
df.loc[:,["Age","Height","Weight","Year"]])
ndarray comportant les Attributs ayant une variance≥ threshold
IIT-Sfax
T. Ben Abdallah & R. Boujelben 68
Réduction de dimensionnalité Transformation
IIT-Sfax
T. Ben Abdallah & R. Boujelben 69