0% ont trouvé ce document utile (0 vote)
98 vues69 pages

Partie 2

Le cours de fouille de données pour les étudiants en génie informatique vise à sensibiliser à l'importance du Data Mining et à maîtriser ses techniques. Il est structuré en trois phases : préparation des données, Data Mining et validation des modèles, avec une répartition horaire de 26 heures de cours et 16 heures de travaux pratiques. Les étudiants apprendront à appliquer des méthodes descriptives et prédictives, ainsi que des outils de Data Mining dans divers domaines d'application.

Transféré par

serine zaghdoud
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
98 vues69 pages

Partie 2

Le cours de fouille de données pour les étudiants en génie informatique vise à sensibiliser à l'importance du Data Mining et à maîtriser ses techniques. Il est structuré en trois phases : préparation des données, Data Mining et validation des modèles, avec une répartition horaire de 26 heures de cours et 16 heures de travaux pratiques. Les étudiants apprendront à appliquer des méthodes descriptives et prédictives, ainsi que des outils de Data Mining dans divers domaines d'application.

Transféré par

serine zaghdoud
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

FASCICULE DE COURS

FOUILLE DE DONNÉES
2ème année Génie Informatique
Semestre 1

PRÉSENTÉ PAR

M. Taoufik BEN ABDALLAH Mme. Rahma BOUJELBEN


[email protected][email protected]
2023-2024 ⚫
Objectifs du cours

Sensibiliser les étudiants à l’importance du Data Mining en tant


que nouvel domaine technologique
Positionner le Data Mining dans le processus d’Extraction des
Connaissances à partir des Données (ECD)
Maîtriser les principes théoriques et pratiques de quelques
techniques du Data Mining

IIT-Sfax
T. Ben Abdallah & R. Boujelben 2
Organisation du cours 

RÉPARTITION APPROXIMATIVE DU CHARGE HORAIRE


COURS+TD TRAVAUX PRATIQUES
26h 16h

EVALUATION 20% DS 25% Projet 55% Examen

IIT-Sfax
T. Ben Abdallah & R. Boujelben 3
PLAN
DU COURS
Plan du cours

1 Aperçu général sur le processus ECD

2 Prétraitement de données

3 DM descriptif : Découverte des règles d’association

4 DM prédictif : Classification & Régression

IIT-Sfax
T. Ben Abdallah & R. Boujelben 5
Plan du cours (4- Classification & Régression)

A- Estimation des performances

B- Régression linéaire & logistique

C- Arbres de décision

D- Machine à vecteur de support

E- Techniques ensemblistes

IIT-Sfax
T. Ben Abdallah & R. Boujelben 6
VOLET PRATIQUE

Calcul Scientifique avec

Exploration des données avec

Visualisation graphique avec &

Prétraitement de Données, Échantillonnage, Apprentissage


Automatique et Évaluation des Performances avec

IIT-Sfax
T. Ben Abdallah & R. Boujelben 7
INTRODUCTION GÉNÉRALE
‫تقديم عام‬

Génie Indus 3
8
L’ère des données!

 Masse de données souvent non-exploitée

 Beaucoup de données mais peu de connaissances

Comment exploiter les données

Solution: Extraction des Connaissances


à partir des Données (ECD)

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

Vision par ordinateur Traitement du Langage Recommandation Industrie


Naturel (NLP) de contenu

Agriculture Éducation Finance Santé Transport

IIT-Sfax
T. Ben Abdallah & R. Boujelben 11
Quelques applications en DM

Système de recommandations Détection des maladies Détection Fraude bancaires

Analyse des avis des internautes Détection objets en mouvements

IIT-Sfax
T. Ben Abdallah & R. Boujelben 12
Data Mining vs Machine Learning

Data Mining= Découverte de


Data Science
connaissances à partir de
données
Statistics
Machine Learning= La façon
d’écrire des programmes qui
peuvent apprendre Data Machine
DL IA
Mining Learning

Data Mining implique ECD


l’utilisation de ML
IA : Intelligence Artificielle
DL : Deep Learning

IIT-Sfax
T. Ben Abdallah & R. Boujelben 13
Données!

Données structurées Données semi-structurées Données non-structuré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!

Préparation des données

Data Mining : étape centrale de l’ECD

Interprétation & Validation des modèles

IIT-Sfax
T. Ben Abdallah & R. Boujelben 16
Processus ECD Trois phases majeurs!

Données Données

I-Préparation des
données

Informations Espace de descripteurs

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

1. Détection des descripteurs


❑ Construction de l’espace des données qui va être exploré
❑ Espace des données= Jeu de donnée= Espace de descripteurs (Feature space)
❑ Collection d’observations ou objets + leurs attributs
❑ Une collection d’attributs décrivent un objet
❑ Un objet est également appelé échantillon=entité = instance

Client Salaire S. Familiale Ville


1 Moyen Divorcé Tunis Descripteurs = Attributs =
2 Elevé Célibataire Tunis
3
variables =caractéristiques
Faible Célibataire Sfax
⋮ ⋮ ⋮ ⋮ = Information

Observations
IIT-Sfax
T. Ben Abdallah & R. Boujelben 18
PhaseI: Préparation des données

1. Détection des descripteurs


⚫ Type de valeurs des descripteurs

A. Discret : chaine de caractères (nominal & ordinal)


Nominal ≠ Ordinal

Aucune relation existe entre les valeurs  Les valeurs ont un ordre significatif
 N’est pas possible de calculer des distances

ex. Noir/ Rouge/ Blanc ex. Chaud>Moyen>Froid

IIT-Sfax
T. Ben Abdallah & R. Boujelben 19
PhaseI: Préparation des données

1. Détection des descripteurs


⚫ Type de valeurs des descripteurs

B. Binaire : Seulement deux valeurs (vrai, faux / 0,1)


Symétrique ≠ Asymétrique

 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

C. Continue : Nombres entier ou réels =valeurs quantitatifs

IIT-Sfax
T. Ben Abdallah & R. Boujelben 20
PhaseI: Préparation des données

2. Prétraitement Data preprocessing

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)

Discrétisation des données


Réduction des données
Convertir les attributs continus en
attributs discrets Réduire des données ou des descripteurs

IIT-Sfax
T. Ben Abdallah & R. Boujelben 21
PhaseII : Data Mining Tâches

Appliquer de méthodes intelligentes


pour extraire des modèles de données

⧫ Data Mining descriptif


Mettre en évidence des informations présentes
mais cachées par le volume de données

⧫ Data Mining prédictif


Extrapoler de nouvelles informations à partir
des informations présentes

IIT-Sfax
T. Ben Abdallah & R. Boujelben 22
PhaseII : Data Mining DM descriptif

Statistique descriptive: Résumé des données qui soit le plus


intelligible → Représentation graphique

Découverte des règles d’association : Découvrir des relations


entre des produits (secteur de Marketing)

IIT-Sfax
T. Ben Abdallah & R. Boujelben 23
PhaseII : Data Mining DM descriptif

Apprentissage non-supervisé Clustering


→ Organisation des données en groupes
→ Les données similaires soient dans le même groupe

Client Salaire S. Familiale Ville Classe Pas de cible


1 Moyen Divorcé Tunis
(pas de label)
2 Elevé Célibataire Tunis ? non
3 Faible Célibataire Sfax ? non
⋮ ⋮ ⋮ ⋮ ?⋮

IIT-Sfax
T. Ben Abdallah & R. Boujelben 24
PhaseII : Data Mining DM prédictif

Apprentissage supervisé classification/ Régression


→ Extrapoler des nouvelles informations à partir de données existantes
→ Prédire la classe de nouvelles données observées)
Rembourse Classe
Client Salaire S. Familiale Ville
son crédit
1 Moyen Divorcé Tunis ? oui Très
2 Elevé Célibataire Tunis ? non
3 Faible Célibataire Sfax ? non couteux
⋮ ⋮ ⋮ ⋮ ?⋮ à avoir !!!

IIT-Sfax
T. Ben Abdallah & R. Boujelben 25
Apprentissage supervisé

Classification : Prédire des valeurs discrets

⚫ Sera-t-il froid ou chaud demain? Froid (A)/ chaud (B)

Régression : Prédire des valeurs continues

⚫ Quelle est la température demain?

IIT-Sfax
T. Ben Abdallah & R. Boujelben 26
Apprentissage supervisé

⚫ Techniques souvent utilisées

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

Les modèles extraits ne peuvent être utilisés


directement en toute fiabilité!

Validation= évaluer les performances d’un modèle

DM descriptif= Visualisation + Interprétation

DM prédictif= Échantillonnage+Calcul d’erreur

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

2. L’espace de descripteurs est une représentation matricielle (plusieurs réponses)


 De connaissances
 D’informations
 Où les colonnes sont les descripteurs et les lignes sont les échantillons
 Où les colonnes sont les échantillons et les lignes sont les descripteurs
3. L’apprentissage supervisé (seule réponse)
 Est appliqué pour constituer des groupes d’objets homogènes et différenciés
 Consiste à utiliser des données pour dégager des informations
 Est appliqué principalement pour le regroupement
 Nécessite des échantillons étiquetés par un ou plusieurs classes

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)

# Id Nom Date. N Sexe A1 A2 A3 A4

1 111 John 31/12/1990 M 0 0 Ireland Dublin Valeur


manquante
2 222 Mery 15/10/1978 F 1 0.5 Iceland

3 333 Alice 19/04/2000 F 0 300 Spain Madrid


Lignes
dupliquées 4 789 Alex 15/03/2000 A 1 23 Germany Berlin

5 789 Alex 15/03/2000 A 1 23 Germany Berlin


Attribut 6 555 Peter 1983-12-01 M 1 10 Italy Rome
inutile
(valeurs 7 777 Calvin 05/05/1995 M 0 0 Italy Rome
uniques)
8 888 Roxane 03/08/1948 F 0 0 Portugal Lisbon

9 999 Anne 05/09/1992 F 0 5 Switzerland Geneva

10 101010 Paul 14/11/1992 M 1 26 Ytali Rome

Faute
Format invalide Valeurs d’orthographe
variées
IIT-Sfax
T. Ben Abdallah & R. Boujelben 33
Prétraitement des données

⚫ Analyse exploratoire des données



❑ Nettoyage 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

Aperçu initial de la distribution 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

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 & R. Boujelben 36
Statistique descriptives

Attributs de type objet


df.describe(include="all")

Valeur la plus fréquente

IIT-Sfax
T. Ben Abdallah & R. Boujelben 37
Identification des valeurs manquantes NaN
Valeurs
manquante
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 & R. Boujelben 38
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 & R. Boujelben 39
Traitement des données manquantes Suppression

Valeur par défaut


df.dropna(subset=["Height","Weight"],
df=
axis=0, inplace=True,

ignore_index=True)

df.dropna(subset="Age",axis=1, inplace=True)

Conserver uniquement les


lignes/colonnes avec au moins
2 valeurs non manquantes!
df.dropna(thresh=2, how="any", inplace=True)

df.dropna(thresh=2, 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 & R. Boujelben 40
Traitement des données manquantes Remplissage (1/2)

Par une valeur fictive df=


Nombre de NAN consécutive à remplir!
df['Age'].fillna(0, inplace=True),limit=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 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 & R. Boujelben 41
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
ndarray strategy='most_frequent') 24 'most_ 24.0
frequent'
arr=mf_imputer.fit_transform(df.loc[:,['Age']]) NaN 24.0
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 & R. Boujelben 42
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 & 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

Deuxième quartile Q3= 75e percentile=


75% des données sont inférieures au valeur de Q3 Quartile Q1

Médiane = Q2= 50e percentile

IQR

box
médiane Q2
Interquartile range (IQR)=Q3-Q1

min(lower limit)= Q1−1.5 × IQR Quartile Q3

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 ?

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 & 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

 Détection des lignes dupliquées df=

df1=df[df.duplicated()]

 Suppression des lignes dupliquées

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

Asymétrique négative= Asymétrique positive=


Symétrique
Asymétrique à gauche Asymétrique à droite
moyenne moyenne moyenne
médiane médiane médiane
mode mode mode

Courbe de Gauss
density

Queue de la
distribution

moyenne<médiane< mode mode<médiane< moyenne mode=moyenne=médiane

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,

bins=3, kde=True, stat='density')


Asymétrique à gauche
moyenne=1062.0
median=1225.0
mode=1300.0

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= 𝟑. 𝟓 × 𝟏
( )
𝐍𝟑

Règle de racine carrée


nombre de bins= 𝐍

Règle de Sturges (optimale pour des


échantillons de taille limitée)
nombre de bins=𝟏 + 𝐥𝐨𝐠 𝟐 (𝐍)

Expérimentation : Essayer plusieurs valeurs de Un choix judicieux du nombre de


bins & choisir celle qui offre la représentation la bins peut donner un histogramme
plus informative de la distribution des données qui reflète bien la distribution!

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 Positive= 𝐗 et 𝐘évoluent 𝐘


𝟎 < 𝐂𝐨𝐫𝐫 𝐗, 𝐘 < 𝟏
𝐘
𝐂𝐨𝐫𝐫 𝐗, 𝐘 = 𝟏
ensemble de manière linéaire dans la Corrélation parfaite
positive= corrélation forte
même direction!
𝐗 𝐗

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

Standardization 𝐌𝐢𝐧 − 𝐌𝐚𝐱

Transformation des valeurs de caractéristiques à l'échelle pour qu’elles se


situent entre un maximum et un minimum
aji −min 𝐱 𝐢 𝐱𝟏 … 𝐱𝐢 𝐱𝐩
aji = [𝟎 … 𝟏] 𝐨𝐛𝐬𝟏 𝐚𝟏𝟏 ⋮ 𝐚𝟏𝐢 𝐚𝟏𝐩
max 𝐱 𝐢 − min 𝐱 𝐢
⋮ ⋮ ⋮ ⋮ ⋮
from sklearn.preprocessing import MinMaxScaler 𝐨𝐛𝐬𝐣 𝐚𝐣𝟏 ⋮ 𝐚𝐣𝐢 𝐚𝐣𝐩
𝐨𝐛𝐬𝐍 𝐚𝐍𝟏 … 𝐚𝐍𝐢 𝐚𝐍𝐩
min_max_scaler=MinMaxScaler()
df=
arr=min_max_scaler.fit_transform(df)

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

Standardization 𝐳𝐬𝐜𝐨𝐫𝐞 𝐳𝐣𝐢


Transformation des données en divisant la différence entre les données 𝐚𝐣𝐢
𝐚𝐣𝐢 − 𝐌𝐢
et la moyenne 𝐌𝐢 par l’écart type 𝛔𝐢 𝐳𝐣𝐢 =
𝛔𝐢
1 𝐍 σ𝐍
j=1(𝐚𝐣𝐢 −𝐌𝐢 )² df=
avec 𝐌𝐢 = σ 𝐚 et 𝛔𝐢 = et 𝐍= Nombre d’observations
𝐍 j=1 𝐣𝐢 𝐍

from sklearn.preprocessing import StandardScaler

standard_scaler= StandardScaler()
Après 𝐌𝐢𝐧𝐌𝐚𝐱𝐒𝐜𝐚𝐥𝐞𝐫
arr= standard_scaler.fit_transform(df)

pd.DataFrame(arr,columns=['X1','X2'])

☺ Optimum pour distribution symétrique


 Sensibles aux valeurs aberrantes

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=

from sklearn.preprocessing import RobustScaler

standard_scaler= RobustScaler()

arr= standard_scaler.fit_transform(df) Après 𝐑𝐨𝐛𝐮𝐬𝐭𝐒𝐜𝐚𝐥𝐞𝐫

pd.DataFrame(arr,columns=['X1','X2'])

☺ Optimum lorsqu’il y a des valeurs aberrantes dans les données

IIT-Sfax
T. Ben Abdallah & R. Boujelben 58
Transformation des données Encoding Categorial Data

OrdinalEncoder & LabelEncoder 1/2

Convertir des chaines de caractères en nombres entiers


ordinaux
from sklearn.preprocessing import OrdinalEncoder
enc = OrdinalEncoder()
df[["Sex","Season"]]=enc.fit_transform(
df.loc[:,["Sex", "Season"]])

from sklearn.preprocessing import LabelEncoder


enc = LabelEncoder()
df[["Sex","Season"]]=enc.fit_transform(
df.loc[:,["Sex", "Season"]])
df["Sex"]=enc.fit_transform(df.loc[:,"Sex"])
Série 1D

IIT-Sfax
T. Ben Abdallah & R. Boujelben 59
Transformation des données Encoding Categorial Data

OrdinalEncoder / LabelEncoder 2/2

Comment spécifie-t-on l'ordre des catégories lors de


l’utilisation de OrdinalEncoder ou LabelEncoder?!

from sklearn.preprocessing import OrdinalEncoder,


Label Encoder
ord_categories= [["M", "F"],
["Summer", "Springer", "Autumn", "Winter"]]
enc1 = OrdinalEncoder(categories=ord_categories)
enc2 = LabelEncoder(categories=["M", "F"])
df[["Sex","Season"]]=enc1.fit_transform(
df.loc[:,["Sex", "Season"]])

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 (𝐤 > 𝐧)

from sklearn.preprocessing import OneHotEncoder


enc = OneHotEncoder(sparse_output=False,
categories=[["M", "F"]])
df[["S=F","S=H"]]=enc.fit_transform(
df.loc[:,["Sex"]])
DataFrame 2D!
df.drop(labels=["Sex"], axis=1, inplace=True)

df=pd.get_dummies(df, columns=['Sex'],
dtype='int32')

IIT-Sfax
T. Ben Abdallah & R. Boujelben 61
Discrétisation des données Méthodes

Equal-Width Discretization Equal-Frequency Discretization K-Means Discretization


'uniform' 'quantile' 'K-Means'

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

Equal-Width Discretization 'uniform'


Séparer toutes les valeurs possibles de chaque descripteur en
n_bins intervalles (classes), chacune ayant la même largeur

𝐦𝐚𝐱 𝐱𝐢 −𝐦𝐢𝐧 𝐱𝐢
𝐖𝐢𝐝𝐭𝐡= n_bins

from sklearn.preprocessing import KBinsDiscretizer


enc = KBinsDiscretizer(n_bins=4, encode='ordinal',
strategy='uniform', subsample=None)
df['Age'] = enc.fit_transform(df[['Age']]) 40−21
=4.75
4
☺ Optimum pour distribution uniforme et symétrique min max
0.0 1.0 2.0 3.0
[ [ [ [ ]
 Inadaptée pour les distributions asymétriques 21 25.75 30.5 35.25 40

IIT-Sfax
T. Ben Abdallah & R. Boujelben 63
Discrétisation des données

Equal-Frequency Discretization 'quantile'


Séparer toutes les valeurs possibles de chaque descripteur
en n_bins intervalles (classes), chacune ayant ± le
même nombre d’observation

from sklearn.preprocessing import KBinsDiscretizer


enc = KBinsDiscretizer(n_bins=4, encode='ordinal',
strategy='quantile', subsample=len(df))
df['Age'] = enc.fit_transform(df[['Age']])
min max
21 22 23 24 24 25 27 31 34 38 40 0.0 1.0 2.0 3.0
[ [ [ [ ]
0 1 2 3 4 5 6 7 8 9 10 21 24 27 38 40
𝐢×n 𝟏×𝟏𝟏 𝟐×𝟏𝟏 𝟑×𝟏𝟏
𝐈𝐧𝐝𝐞𝐱 𝐢 = 𝐈𝐧𝐝𝐞𝐱 𝟏 = =2.75≅3 𝐈𝐧𝐝𝐞𝐱 𝟐= =5.5≅6 𝐈𝐧𝐝𝐞𝐱𝟑 = =8.25≅9
n_bins 𝟒 𝟒 𝟒

☺ Optimum pour distribution asymétrique


IIT-Sfax
T. Ben Abdallah & R. Boujelben 64
Réduction de dimensionnalité

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

Construire un nouveau ensemble réduit de


descripteurs à partir de l'ensemble initial 𝐅 : feature space
𝐅′: feature space après réduction

IIT-Sfax
T. Ben Abdallah & R. Boujelben 65
Réduction de dimensionnalité Sélection des descripteurs

Sélection des
descripteurs

Méthodes Méthodes Méthodes


Filtres Wrappers Embedded

Variance
Dispersion ratio Forword Feature Selection Regularisation L1,L2

Missing values Backward Feature selection Random Forest importance


Information gain

IIT-Sfax
T. Ben Abdallah & R. Boujelben 66
Réduction de dimensionnalité Filtres vs Wrappers vs Embedded

FEATURE SELECTION METHOD

WRAPPER FILTER EMBEDDED

Set of All Features

Generate a Selecting the Generate a


Subset Best Subset Subset

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, +∞[ 𝐗𝐣
𝐍 𝐨𝐛𝐬𝟏 𝐚𝟏𝐣
𝐢=𝟏
𝐍 ⋮ ⋮
ഥ 𝐣 = ෍ 𝐚𝐢𝐣
𝐗 𝐨𝐛𝐬𝐢 𝐚𝐢𝐣
𝐢=𝟏
𝐨𝐛𝐬𝐍 𝐚𝐍𝐣

from sklearn.feature_selection import VarianceThreshold


Par défaut =0
thresholder = VarianceThreshold(threshold=40)

data_high_variance = thresholder.fit_transform(
df.loc[:,["Age","Height","Weight","Year"]])
ndarray comportant les Attributs ayant une variance≥ threshold

v = thresholder.fit(df.loc[:,["Age","Height","Weight","Year"]]) Variance obtenue pour


print(v.variances_) chaque descripteur !

IIT-Sfax
T. Ben Abdallah & R. Boujelben 68
Réduction de dimensionnalité Transformation

Méthodes linéaires Méthodes non-linéaires

IIT-Sfax
T. Ben Abdallah & R. Boujelben 69

Vous aimerez peut-être aussi