0% ont trouvé ce document utile (0 vote)
61 vues111 pages

Partie3 MARS2023

Transféré par

waelos
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)
61 vues111 pages

Partie3 MARS2023

Transféré par

waelos
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
Vous êtes sur la page 1/ 111

ATELIER FOUILLE DE DONNÉES

Mastère SIDATA
RAHMA BOUJELBANE
[email protected]

M1 SIDATA
DATA MINING

Détection des maladies

Recherche de l’information

Analyse des avis des internautes Détection objets en mouvements


POURQUOI LE DATAMINIG
Contexte : BigData , quantité énorme de données

→Nous sommes à l’heure des « data » … qui arrivent de partout et que


l’on sait collecter et conserver

D’autre part…….
POURQUOI LE DATA MINING
• Exemple introductif : demande de crédit bancaire
L’expert se fonde sur son « expérience »
pour prendre la bonne décision

• Divorcé
• 5 enfants à charge
• chômeur en fin de droit
• compte à découvert
POURQUOI LE DATA MINING

Produire des connaissances en faisant


parler les données
[ordinateurs/serveurs]

DATA MINING Connaissances

Outils et techniques
UN EXEMPLE DE DÉCOUVERTE D’INFORMATION
ET DE CONNAISSANCE

Q1 : Combien de personnes ont pris un abonnement à un magazine de sport cette année ? !


réalisable en SQL à partir des données opérationnelles sous réserve d'indexations suffisantes des tables
concernées
! seule difficulté : ne pas pénaliser le serveur transactionnel par des requêtes trop longues

Q2 : A-t-on vendu plus d'abonnements de magazines de sport cette année que l'année ?
! nécessite de conserver toutes les dates de souscription même pour les abonnements résiliés
UN EXEMPLE DE DÉCOUVERTE D’INFORMATION
ET DE CONNAISSANCE

Q4 : Quelles sont les caractéristiques principales de mes lecteurs de magazines de voiture ? ! question
beaucoup plus ouverte :
Il s’agit de trouver une règle et non plus de la vérifier ou de l'utiliser c'est pour ce type de question que
sont mis en œuvre des outils de fouille de données

Q5 : Peut-on prévoir les pertes de clients et prévoir des mesures pour les diminuer ? ! question ouverte :
Il faut disposer d'indicateurs comme : durées d'abonnement, délais de paiement, ... ! question (classique
dans le bancaire) avec une forte composante temporelle et nécessite des données historiques
• Comment produire les connaissances????
COMMENT PRODUIRE LES CONNAISSANCES
Nous, les êtres humains, sommes quotidiennement confronté à des problèmes que nous cherchons à
résoudre.
Par exemple : Comment augmenter nos bénéfices ? Comment détecter une fraude? Comment
acquérir un nouveau client? ……
Ou tout simplement quelle route emprunter pour aller au travail ?
COMMENT PRODUIRE LES CONNAISSANCES
Solution 1 : Ordinateur !!!

Pour nous aider dans nos recherches, on utilise l’ordinateur, qui permet de résoudre en
quelques minutes des calculs qui nous prendraient des millions d’années à effectuer.
Mais il faut savoir qu’un ordinateur ne sait en réalité faire qu’une chose : résoudre les
calculs qu’on lui donne.
COMMENT PRODUIRE LES
CONNAISSANCES
À partir de là, 2 situations possibles :
1. On connait le calcul à effectuer pour résoudre notre problème.
Dans ce cas, facile ! On entre ce calcul dans l’ordinateur, c’est ce qu’on appelle la
programmation, et l’ordinateur nous donne le résultat.

Exemple :
• Déterminer la structure d’un pont

2. On ne connait pas le calcul qui résout notre problème


Dans ce cas... on est bloqué. Impossible de donner à un ordinateur un calcul que
nous ne connaissons pas.

C’est comme vouloir poster un statut sur Facebook


que nous n’aurions pas écrit.
COMMENT PRODUIRE LES CONNAISSANCES
Exemples :
-> Reconnaitre un visage sur une photo
→ Prédire le cours de la Bourse
→ Prédire qu’un client va quitter sa banque
→ Prédire la valeur des dégâts suite à un sinistre

Doit-on donc perdre tout espoir de voir un jour un ordinateur nous aider à Prédire le cours de la Bourse
? À reconnaitre un visage …
?
Bien sûr que non !
Solution 2 :
Le Data mining ( et notamment les techniques de machine learning/ apprentissage automatique) a justement
été inventé pour venir débloquer la situation 2 (quand on ne connait pas le calcul) en utilisant des
techniques de Data mining
SOLUTION 2

Apprentissage

Donner à une machine la capacité d’apprendre sans la programmer de


façon explicite

Machine Learning
13
Laisser la Machine apprendre à partir d’expériences

Le Machine Learning consiste à laisser l’ordinateur apprendre quel calcul


effectuer, plutôt que de lui donner ce calcul (c’est-à-dire le programmer de
façon explicite).

C’est en tout cas la définition du Machine Learning selon son inventeur


Arthur Samuel, un mathématicien américain qui a développé un
programme pouvant apprendre tout seul comment jouer aux Dames en
1959.
MACHINE LEARNING : TECHNIQUES

Bonjour
Apprentissage
Apprentissage supervisé Non supervisé

15
IL Y A AUSSI
Apprentissage par renforcement
Apprentissage semi supervisé

l’agent essaie plusieurs solutions (on parle « d’exploration »), observe la


réaction de l’environnement et adapte son comportement (les variables)
pour trouver la meilleure stratégie (il « exploite » le résultat de ses
explorations). Un des concepts clés de ce type de problèmes est l’équilibre
entre ces phases d’exploration et d’exploitation. Cette méthode est
particulièrement adaptée aux problèmes nécessitant un compromis entre
la quête de récompenses à court terme et celle de récompenses à long
terme. Parmi les exemples de problèmes traités de cette façon, on peut
évoquer : apprendre à un robot à marcher en terrain difficile, à
conduire (cas de la voiture autonome) ou à accomplir une tâche
spécifique (comme jouer au jeu de go),
Les principales familles de problèmes d’’apprentissage
par renforcement sont les algorithmes de bandits, les
problèmes de décisions (partiellement) markovien et
les arbres de jeu.
DATA MINING OU FOUILLE DE DONNÉES

→Le data mining est l’art d’extraire des connaissances à partir des données.

→Le data mining consiste à transformer des données en informations utiles,


en établissant des relations entre les données ou en repérant des patterns.
-->Ces informations (ou nouvelles connaissances) peuvent ensuite être utilisées
par les entreprises pour augmenter un chiffre d’affaires ou pour réduire des
coûts. Elles peuvent également servir à mieux comprendre une clientèle afin
d’établir de meilleures stratégies marketing.

→Le data mining ne se limite pas au traitement des données structurées sous
forme de tables numériques; il offre des moyens pour aborder les corpus en
langage naturel (text mining), les images (image mining), le son (sound mining) ou
la vidéo et dans ce cas, on parle alors plus généralement de multimedia mining.
PROCESSUS D’EXTRACTION DE CONNAISSANCE À PARTIR DE DONNÉES
ECD
→L’Extraction de Connaissances à partir des Données est un processus non
trivial d’identification de structures inconnues, valides et potentiellement
exploitables dans les bases de données » (Fayyad et al., 1991)
Algorithme de machine learningRègles d‘associations
Statistique descriptive

ECD

Modèles

Nouvelles
Connaissances

4–
1- 2- Prétraitements 3–
Mise en forme de connaissances
Données Fouille de données/datamining
DATA MINING : BRASSAGE DES CULTURES ET
DES TECHNIQUES
LES MÉTHODES SELON LES FINALITÉS

Les méthodes
sont le plus
souvent
complémentair
es !
LES LOGICIELS DE FOUILLES DE DONNÉES

Orange : est développé par Blaz Zupan, à la Faculty of Computer and Information
Science, de lʼUniversité de Ljubljana en Slovenie
! Il est destiné à lʼenseignement et à la recherche, et téléchargeable à lʼadresse :
http://www.ailab.si/orange
Il implémente aussi diverses méthodes de fouilles de données issues du domaine de la
statistique exploratoire, de lʼapprentissage automatique et des bases de données, …
LES LOGICIELS DE FOUILLES DE DONNÉES

Weka : ! Weka (Waikato Environment for Knowledge Analysis) est un ensemble de


classes et d'algorithmes en Java développé à lʼUniversité de Waikato en Nouvelle
Zélande
→Weka implémente les principaux algorithmes de la fouille, notamment : - les arbres
de décision - les réseaux de neurones !
il est téléchargeable (versions Unix et Windows) à l'adresse :
http://www.cs.waikato.ac.nz/ml/weka
→développé en complément du livre : Data Mining par I. Witten et E. Frank (éditions
Morgan Kaufmann).
peut être utilisé de plusieurs façons : - par l'intermédiaire d'une interface utilisateur
(comme utilisée en TP)
→ sur la ligne de commande. - par l'utilisation des classes fournies à l'intérieur de
programmes Java (classes documentées)
LES LOGICIELS DE FOUILLES DE DONNÉES

Tanagra : TANAGRA est un logiciel gratuit développé à lʼUniversité de Lumiere Lyon 2,


laboratoire ERIC, par Ricco Rakotomalala !
Il est destiné à lʼenseignement et à la recherche, et téléchargeable à lʼadresse :
http://chirouble.univ-lyon2.fr/~ricco/cours/index.html
Il implémente diverses méthodes de fouilles de données issues du domaine de la statistique
exploratoire, de lʼapprentissage automatique et des bases de données, …
LES LOGICIELS DE FOUILLES DE DONNÉES

Python
Langages de programmation pour l’analyse des données

RAHMA BOUJELBEN
4. Les 4 librairies à maîtriser pour le Machine Learning
Le plus souvent,

Il n’est pas nécessaire de développer ses propres fonctions car celles-ci


sont déjà développées dans des librairies open source.

Par exemple, la librairie Sklearn contient toutes les fonctions


mathématiques et les différent algorithme de Machine learning
4. LES 4 LIBRAIRIES À MAÎTRISER POUR LE MACHINE LEARNING

Pour importer une librairie dans Python, rien de plus simple. Il suffit
d’écrire le nom de la librairie précédé de « import » en tête de votre
programme. Il est également possible d’importer certaines fonctions de la
librairie en écrivant from « librairie » import « truc ».
4. LES 4 LIBRAIRIES À MAÎTRISER POUR LE
MACHINE LEARNING

Pour importer une librairie dans Python, rien de plus simple. Il


suffit d’écrire le nom de la librairie précédé de « import » en tête de
votre programme. Il est également possible d’importer certaines
fonctions de la librairie en écrivant from « librairie » import «
truc ».
Import NumPy as np

Numpy est la librairie qui permet de créer et manipuler des


matrices simplement et avec efficacité.
4. LES 4 LIBRAIRIES À MAÎTRISER POUR LE
MACHINE LEARNING

Matplotlib est la librairie qui permet de visualiser nos Datasets,


nos fonctions, nos résultats sous forme de graphes, courbes et
nuages de points.

import matplotlib.pyplot as plt

RAHMA BOUJELBEN
4. LES 4 LIBRAIRIES À MAÎTRISER POUR LE
MACHINE LEARNING

→Scikit-learn est une librairie pour Python spécialisée dans le machine


learning (apprentissage automatique).

→Plusieurs fonctionnalités de pré-traitement des données sont disponibles


dans le package sklearn.preprocessing

from sklearn import preprocessing

from sklearn.linear_model import LinearRegression

from sklearn.model_selection import train_test_split


4. LES 4 LIBRAIRIES À MAÎTRISER POUR LE
MACHINE LEARNING

Pandas est une excellente librairie pour importer vos tableaux


Excel (et autres formats) dans Python dans le but de tirer des
statistiques et de charger votre Dataset dans Sklearn.
Pour utiliser pandas :

import pandas as pd
4. LES 4 LIBRAIRIES À MAÎTRISER POUR LE
MACHINE LEARNING

1 . Importer les données


Données
2. Nettoyer les données

3. Diviser les données en données d’apprentissage et données de test

4. Créer le modele
Modèle
5. Apprendre le modele

6. Evaluer le modele

7. Enregistrer le modele
Déploiement
6. Faire les prédictions
Données : Datasets
tabulaires
NOTION 1 – DATASET
Exemples d’appartements avec leur prix 𝒚 ainsi que certaines de leurs caractéristiques
(features).

=descripteurs=Attributs
Features

Target

classe X1 X2 X3 X4

Fraude val1 val2 val3 oui

Non val4 val5 Val6 oui


Fraude
Non val7 val8 val9 NOn
Fraude

Problème de regression
Objectif : Partant des données, l’objectif est de déterminer à quel groupe l’individu ω∗ a le plus chance d’appartenir.
Exemple : Dans une classe, un professeur considère deux groupes d’élèves, G1 et G2, en fonction de leur compétence. On
dispose uniquement des notes et de l’affectation de 6 élèves :

Maths Physique Ed Mus Art Plas Groupe

Mohamed 20 20 0 0 G1
Ali 8 8 12 12 G2
Farah 20 20 0 0 G1
Lilia 0 0 20 20 G2
Mariem 10 10 10 10 G1
Mouna 2 2 18 18 G2

Problème de classification
• Data pre processing
DATA MINING : MULTIPLICITÉ DES SUPPORTS ET
DES SOURCES
ANOMALIES!
Attribut nominal ordinal
Descripteurs/ Features/Attribut
Attribut nominale

X1 X2 X3 X4 X5 X6 X7 X8 X9 Target Attribut constant

767 NAN Moyen oui 4 1000 3 2 /06/ 2021 78 oui


Ligne NAN
nstances 2/ 06 /2015
22 oui Petit Non 5 1200 3 75 non
NAN

60 oui Grand ?? 2 9 3 2 /06 /2014 15 oui


Lignes dupliquées

2 /06 /2021
35 NAN Grand oui 3 400 3 60 non
Outliers

2 /06 /2021 Attribut Date


15 oui Petit NAN NAN 8 3 NAN oui

Case vide
NAN NAN NAN NAN NAN NAN NAN NAN 34 OUI
Distribution de valeurs variées
3 oui Moyen Non 5 6 3 2 /04 /2013 75 non
Attribut classe nominal
40
7 oui Petit Non 5 6 3 01 /02 /2012 75 oui
PRÉPARATION DES DONNÉES

 Nettoyage des données

 Transformation de données
 Réduction des données

41
NETTOYAGE DES DONNÉES

Comment détecter les anomalies

Etude Exploratoire

42
DÉTECTION D’ANOMALIES

Identifier le type des colonnes (numériques/ nominales)

Identifier les cases vides

Identifier les NAN

Les lignes dupliquées

Les valeurs aberrantes (outliers)

43
DÉTECTION D’ANOMALIES

Identifier le type des colonnes (numériques/ nominales)


Dataframe.describes (include = « all »)

Nominales

Numérique

44
DÉTECTION DES CASES VIDES

import numpy as np
np.where(df.applymap(lambda x: x == ''))

Coordonnées des cases vides (1,1) , ( 2, 3)

45
DÉTECTION DES VALEURS MANQUANTES NAN

Valeurs
Exploration des valeurs manquantes manquante
data.xlsx
import pandas as pd
import numpy as np

df=pd.read_excel(r'chemin\data.xlsx')

df1=df.isna() # ou bien df.isnull() # retourne


True lorsque la valeur est manquante

df.isnull().sum() X1 1
⋮ ⋮ ⋮ ⋮ ⋮
X2 1
X3 2
X4 2
46
TRAITEMENT DES VALEURS ABERRANTES
Détection des valeurs aberrantes: Boxplot / Boite à moustache

→ C’est un graphique permet de résumer une variable de manière simple et visuel,


d'identifier les valeurs extrêmes et de comprendre la répartition des observations.

47
TRAITEMENT DES VALEURS ABERRANTES
Détection des valeurs aberrantes: Boxplot / Boite à moustache

1) La liste des données est rangée par ordre croissant ( N=30)

Médiane = 248
→ Si N est impair (N=2n+1) la médiane est la donnée de rang n+1
→ Si N est pair ( N=2n) la médiane est la demi somme des données de rang
n et de rang n+1 .
TRAITEMENT DES VALEURS ABERRANTES

Détection des valeurs aberrantes: Boxplot / Boite à moustache

Q1 = 239
→ Le premier quartile ( Q1 ) est la plus petite donnée de la liste telle qu’au
moins un quart des données de la liste sont inférieures ou égales à Q1.
Rang Q1= 30/4, Rang Q1= 7,5, Rang Q1 =8 , Q1 = 239

Q3 = 251
→ Le premier quartile ( Q3 ) s est la plus petite donnée de la liste telle qu’au
49
moins les trois quarts des données de la liste sont inférieures ou égales à
Q3 .Rang Q3= 30*3/4, Rang Q3= 22,5, Rang Q3 =23 , Q3 = 251
TRAITEMENT DES VALEURS ABERRANTES
Détection des valeurs aberrantes: Boxplot / Boite à moustache

12
269
218
239
251
TRAITEMENT DES VALEURS ABERRANTES
Détection des valeurs aberrantes: Boxplot / Boite à moustache
Python

percentile25 = train['Age'].quantile(0.25)
percentile75 = train['Age'].quantile(0.75)
upper_limit = percentile75 + 1.5 * (percentile75-percentile25)
lower_limit = percentile25 - 1.5 * (percentile75-percentile25)
TRAITEMENT DES VALEURS ABERRANTES
Remplacer les valeurs aberrantes par une valeur significative

Modifier des valeurs :Requête


Dataframe.loc[dataframe[« colonne »]>1000,[« colonne »]]=1000

df_covid['Température'] = np.where(df_covid['Température'] >= upper_limit, upper_limit,


np.where(df_covid['Température'] <= lower_limit,lower_limit, df_covid['Température']))

52
TRAITEMENT DES VALEURS MANQUANTES

NAN

Solution 1 Solution 2 Solution 3

Suppression Suppression + limite


Remplacer
Dropna ( dropna+ Thresh)

Axis: 0 = lignes or 1 =colonnes

53
TRAITEMENT DES VALEURS MANQUANTES A B C

B NAN 3 NAN
2 4 NAN
Solution 1 : Suppression 3
4 5 NAN
4
→ dataframe .dropna (how=« any », axis =1) NAN 6 NAN
Si une seule valeur de la ligne est égale à NAN alors toute la ligne 5
va être supprimer 6 A B
→ dataframe .dropna (how=« all »,axis =1) NAN 3
Si la valeur NAN est présente dans toutes la lignes
2 4

Solution 2 : Suppression avec limite 4 5


NAN 6
A B
→ dataframe1 = dataframe.dropna(thresh = 2 , axis = 1 )
NAN 3
La limite est un entier qui spécifie le moins de valeurs non manquantes qui
empêchent les lignes ou les colonnes d’être supprimer 2 4
54
4 5
NAN 6
Conserver uniquement les lignes où 70 % ou plus de données valides sont disponibles

my_data.shape[0] → nmbre de ligne

my_data.shape[1] → nombre de colonne

my_data=my_data.dropna(axis=0,thresh=my_data.shape[1]*0.7)

my_data=my_data.dropna(axis=1,thresh=my_data.shape[0]*0.7)
TRAITEMENT DES VALEURS MANQUANTES
Solution 3 : Remplissage des valeurs manquantes par une valeur fictive
df.fillna(0)

from sklearn.impute import SimpleImputer

mf_imputer = SimpleImputer(missing_values=np.nan, strategy='most_frequent')


arr=mf_imputer.fit_transform(df) # arr est de type ndarray
pd.DataFrame(arr,columns=['X1','X2','X3','X4'])

strategy='mean' ?
strategy='median' ?

Toutes les valeurs des attributs doivent être de type continue


56
TRAITEMENT DES VALEURS MANQUANTES

-Avec la moyene de la colonne


train['Age'].fillna((train['Age'].mean()), inplace=True)
-avec la une valeur que vous definnissez
train["Age"].fillna("25", inplace = True)
-

57
TRAITEMENT DES VALEURS MANQUANTES
Solution 3 : Remplissage des valeurs manquantes par une
valeur fictive
Backfill/bfill : Remplir les NAN avec la prochaine observation valide

58
TRAITEMENT DES VALEURS MANQUANTES
Solution 3 : Remplissage des valeurs manquantes par une valeur fictive
ffill : Remplir les NAN avec la dernière observation valide

59
Remplissage de NAN bfill, backfill or ffill which fills the place with value in the Forward index or Previous/B
ack respectively.
-axis: 0 = lignes or 1 =colonnes

# backfill = Forward index or or ffill = the Previous/Back respectively.

train["Embarked"].fillna( method ='ffill', inplace = True)

# limit : spécifie le nombre maximal de NAN consécutuve à remplir


train["Embarked"].fillna( method ='ffill', limit = 1, inplace = True)
TRAITEMENT DES LIGNES DUPLIQUÉES

Détection les lignes dupliqués


Repérer les lignes dupliquées
Dataframe [Dataframe.duplicated ()]

Suppression des lignes dupliquées

Dataframe . Drop_duplicates(inplace=true)
SUPPRIMER DES COLONNES

train.drop('Cabin',axis=1,inplace=True)
Traitement de string

df_covid['Douleur']=df_covid['Douleur'].replace("oui",1.)
df_covid.head()
Traitement de string

dataset['Title'] = dataset.Name.str.extract(' ([A-Za-z]+)\.', expand=False)

pd.crosstab(train['Title'], train['Sex'])
Prétraitements des données

Traitement des
anomalies :NAN
Encodage Normalisation
valeurs aberrantes
,vides , etc ????

Sklearn.preprocessing

1- Etoile 0 0
2- Cercle 1 1
3- Triangle 2 0.25
0.33

Rahma Boujelbane
Liste des transformer : Sklearn.preprocessing

Utilité : cohérence des données

Rahma Boujelbane
Liste des transformer : Sklearn.preprocessing

Train set
Train set transformé

Test set Test set


transformé Evaluation
E Modèle

Utilité : cohérence des données

Rahma Boujelbane
Liste des transformer : Sklearn.preprocessing

Principe

1) Fit ( X_train ) : permet de developper une fonction de 1) Transform : permet d’appliquer


transformation à partir de X_train dette fonction sur les données

X_train X_train
2
Triangle
1
Cercle
0
Etoile
2
Triangle

Rahma Boujelbane
Encodage
Encodage : transformer les variables nominales en variables catégorielles

Détecter les variable


catégorielle

Rahma Boujelbane
Encodage

Encodage : Deux types d’encodages

- One hot encoding

- Ordinal encoding

Rahma Boujelbane
Encodage

Label Encoder : Encode chaque classe de varaible y en une valeur numérique

from sklearn.preprocessing import LabelEncoder


enc=LabelEncoder()
df[‘Survived']=enc.fit_transform(df[[‘Survived']])

Lors de la prédiction
enc.inverse_transf=orm (np.array([0]))
→ Covid 19

Rahma Boujelbane
Encodage

1) Ordinal encoding : ( Label Encoder , Ordinal Encoder)

Principe : Associe chaque catégorie ou classe d’une variable à une valeur décimale unique
X_train
Triangle 2
Cercle 1
Etoile 0 Df = ordinal encoder ( )
Triangle 1
Cercle 1 Encoder .fit_transform ()
Triangle 2

Ces catégories n’ont rien d’ordinale


Etoile < Cercle < Triangle ??????
Rahma Boujelbane
Encodage

1) One hot encoder :

Encodage binaire : encode chaque valeur d’une variable categorielle en une variable binaire

→ LabelBinarizer ()
→ Multilabel Binarizer ( )
→ One HotEncoder()

Rahma Boujelbane
Encodage

Label binarizer : encode chaque classe de la variable y en on hot

Rahma Boujelbane
Encodage

Encodage binaire : catégories à plusieurs valeurs

Rahma Boujelbane
Encodage

Encodage binaire : solution


Stocker les informations dans 3 tableaux

Compressed Sparse Row

Rahma Boujelbane
Encodage

Encodage binaire : Encode les variables X en One_Hot

Rahma Boujelbane
Encodage
Résumé

Mais Faites attention au


catégories inconnues
dans le test set !!!!

Erreur

Développer une fonction


d’encodage

Rahma Boujelbane
Normalisation

La normalisation

La mise à l'échelle consiste à altérer les données afin de réduire leur variance ou leur valeur absolue. Elle
est utile pour les cas suivants :

•Lorsque les variables d'un jeu de données ont des ordres de grandeur différents, elles peuvent fausser les
estimations des algorithmes d'apprentissage automatique.

•Les classificateurs utilisant la distance euclidienne seront affectés si un des composant est distribué sur un
espace beaucoup plus grand que les autres.

• L’apprentissage est plus rapide si les données partagent la même échelle

Rahma Boujelbane
La normalisation des données

Difficulté de converger vers le minimum

Rahma Boujelbane
La normalisation des données

Transformation MIN_MAX Scaler : Transforme chaque variable X de telle sorte à être


comprise en 0 et 1 ( avec conservation de rapport de distance )

Rahma Boujelbane
La normalisation des données

Transformation MIN_MAX Scaler

Rahma Boujelbane
La normalisation des données

Transformation MIN_MAX Scaler

Rahma Boujelbane
La normalisation des données

Standard scaler

Standardise chaque variable X : La moyenne est nulle et l’écart type égale 1

Moyenne
Ecart type

Rahma Boujelbane
La normalisation des données

Standard scaler et MIN MAX sont très sensibles aux outliers

Evitez d’utiliser MinMaxScaler ou StadardScaler en présence d’outliers .


Cela rend vos données difficiles à exploiter

Rahma Boujelbane
La normalisation des données

Robust Scaler : moins sensibles au outliers

from sklearn.preprocessing import RobustScaler


Rscaler = RobustScaler()
train_scaled = RobustScaler().fit(X_train)
test_scaled=Rscaler.transform(X_test)
Rahma Boujelbane
Les pipelines

Rahma Boujelbane
Les pipelines

La classe Pipeline
Pour créer une pipeline , 2 options :
Classe Pipeline
Fonction make _ pipeline

Model= make_pipeline ( StandardScaler (), SGDClassifier () )

Model. Fit ( Xtrain, ytrain )


Model. Score (X_test, ytest )
model. Predict ( Xtest )
Une pipeline est plus simple à lire et à utiliser
Eviter d’avoir des fuites de données ou des données mal transformées
Permet de faire des cross validation
Les pipelines

On peut utiliser GridSearchCv pour trouver les meilleurs paramètres de la pipeline


Les pipelines : Exemple
Les pipelines : Exemple
La normalisation des données

Standard scaler

Standardise chaque variable X : La moyenne est nulle et l’écart type égale 1

Moyenne
Ecart type
Liste des transformer : Sklearn.preprocessing

→ LabelBinarizer ()
→ Multilabel Binarizer ( )
→ One HotEncoder()
TRANSFORMATION DES DONNÉES

Standardization 𝐌𝐢𝐧 − 𝐌𝐚𝐱

La mise à l'échelle consiste à altérer les données afin de réduire leur variance ou leur valeur absolue. Elle est utile pour
les cas suivants :

•Lorsque les variables d'un jeu de données ont des ordres de grandeur différents, elles peuvent fausser les estimations
des algorithmes d'apprentissage automatique.

•Les classificateurs utilisant la distance euclidienne seront affectés si un des composant est distribué sur un espace
beaucoup plus grand que les autres.

• L’apprentissage est plus rapide si les données partagent la même échelle

96
TRANSFORMATION DES DONNÉES

Standardization 𝐌𝐢𝐧 − 𝐌𝐚𝐱


❑ Transformation des valeurs de caractéristiques à l'échelle pour qu’elles se situent entre
un maximum (=1) et un minimum (=0)
Descripteurs

𝐱𝟏 … 𝐱𝐢 𝐱𝐩
aji −min 𝐱 𝐢 𝐨𝐛𝐬𝟏 𝐚𝟏𝟏 ⋮ 𝐚𝟏𝐢 𝐚𝟏𝐩
aji =
max 𝐱 𝐢 − min 𝐱 𝐢 ⋮ ⋮ ⋮ ⋮ ⋮
𝐨𝐛𝐬𝐣 𝐚𝐣𝟏 ⋮ 𝐚𝐣𝐢 𝐚𝐣𝐩
𝐨𝐛𝐬𝐍 𝐚𝐍𝟏 … 𝐚𝐍𝐢 𝐚𝐍𝐩

from sklearn.preprocessing import MinMaxScaler data_N.xlsx


∈ [𝟎 … 𝟏]
df=pd.read_excel(r'chemin\data_N.xlsx')
min_max_scaler = MinMaxScaler()
arr = min_max_scaler.fit_transform(df)
pd.DataFrame(arr,columns=['X1','X2']) 97
TRANSFORMATION DES DONNÉES ENCODING CATEGORIAL DATA
df_outlook

OrdinalEncoder & LabelEncoder


❑ Convertir des chaines de caractères
en nombres entiers ordinaux
import pandas as pd
from sklearn.preprocessing import OrdinalEncoder
df_outlook=data[['outlook']]
enc = OrdinalEncoder()

arr= enc.fit_transform(df_outlook)
df_outlook=pd.DataFrame(arr, columns= ['outlook'])

98
TRANSFORMATION DES DONNÉES ENCODING CATEGORIAL DATA

OneHotEncoder sunny overcast rainy

❑ Transformer l’espace de 𝐧 descripteurs 1 0 0


à 𝐤 descripteurs binaires (𝐤 > 𝐧) 1 0 0
0 1 0
import pandas as pd 0 0 1
from sklearn.preprocessing import OneHotEncoder 0 0 1
0 0 1
df_outlook=data[['outlook']]
enc = OneHotEncoder() 0 1 0
1 0 0
arr= enc.fit_transform(df_outlook).toarray() 1 0 0
df_outlook=pd.DataFrame(arr, columns= 0 0 1
['outlook=overcast', 'outlook=rainy', 1 0 0
'outlook=sunny']) 0 1 0
0 1 0
0 0 1

99
RÉDUCTION DE DIMENSIONNALITÉ

F Sélection
F : feature space
F′

sélection de
descripteurs

F′: feature space après réduction

100
RÉDUCTION DE DIMENSIONNALITÉ

Supervised Feature Unsupervised Feature


Selection Selection
o Variance

o Dispersion ratio
Méthodes Méthodes Méthodes ⋮
Filtres Wrappers Embedded

o Missing values o Forword Feature o Regularisation L1,L2


Selection
o Information gain o Random Forest
o Backward Feature importance
o Chi-square Test selection ⋮
⋮ ⋮

101
SÉLECTION DES ATTRIBUTS


from sklearn.ensemble import ExtraTreesClassifier
RandomasForest
import matplotlib.pyplot plt importance
model = ExtraTreesClassifier()
model.fit(x_reduced_train,y_train)

print(model.feature_importances_)

102
SÉLECTION DES ATTRIBUTS

• Variance

variances = df.var()
varres=pd.DataFrame(variances)
varres[varres[0] < 0.025]

103
ECHANTILLONNAGE : SPLIT DE DONNÉES

X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.3,shuffle=Fa


lse)

70% -80%
20% -30%
104
ECHANTILLONNAGE : SPLIT DE DONNÉES
Descripteurs Classe (Label)=Target

Observation A1 A2 A3 Classe
1 1 0.001 12.134 1
Ensemble 2 0 0.023 12.001 0
d’apprentissage 3 1 0.456 9.0073 1
4 0 0.114 4.0017 0 C.Désirée C.Prédite
5 0 0.555 19.771 1 1 1
6 1 0.551 6.9912 0 0 1
0 0
Modèle 0 1
Classe
1 0
1
7 0 0.020 14.478 ? 1 1
Ensemble de test
0
8 1 0.003 8.1238 ? 0 0
0
7 0 0.020 13.478 ? 1 1
105 0
8 1 0.003 2.1238 ?
APPRENTISSAGE

106
EVALUATION

Matrice de confusion (avec 𝐍 classes) Classe prédite


𝐂𝐌 C1 … Ci CN
Tableau bidimensionnel 𝐍 lignes × 𝐍 colonnes CM(1,1) CM(1,i)
C1

désirée
Classe
⋮ ⋮
CM(i,i): Nombre d’observations désirées CM(i,j)
Ci
comme Ci et prédites comme Ci CN CM(N,N)

*n le nombre total des observations


A1 A2 … C.Désirée C.Prédite
1 Oui Oui
❑Taux de classification Accuracy τ 2 Non Oui
σNi=1 CM(i,i)
3 Non Non
τ= 4 Non Oui
n 5 Oui Non
❑Taux d’erreur Error rate e 6 Oui Oui
7 Non Non
σN σ N
i=1 j=1 CM(i,j)
8 Oui Oui
e= =1−τ 107
n
EVALUATION

❑Rappel recallCi
La proportion des items pertinents proposés parmi l'ensemble des Classe prédite
𝐂𝐌 C1 … Ci CN
items pertinents
C1 CM(1,1) CM(1,i)

désirée
Classe
CM(i,i) ⋮ ⋮
recallCi = N Ci CM(i,i)
σj=1 CM(i,j) CN CM(N,N)

Cas de 2 classes yes, no True Positive Classe prédite False Negative


Rappelyes =True Positive rate yes no
𝐓𝐏 𝐓𝐏 𝐅𝐍
= Sensitivity = yes

désirée
Classe
𝐓𝐏+𝐅𝐍
no 𝐅𝐏 𝐓𝐍

Rappelno = True Negative rate


𝐓𝐍
= Sensitivity =
𝐅𝐏+𝐓𝐍 False Positive True Negative
108
EVALUATION
❑Précision

→ La proportion des items pertinents parmi l'ensemble des items proposés


Précisionyes
𝐓𝐏
Précisionyes =
𝐓𝐏+𝐅𝑷

True Positive Classe prédite False Negative


Précisionno
yes no
𝐓𝐍 yes 𝐓𝐏 𝐅𝐍

désirée
Précision =

Classe
𝐅𝐍+𝐓𝐍 𝐅𝐏 𝐓𝐍
no

False Positive True Negative

109
Evaluation
❑F-mesure

La F-mesure correspond à un compromis de la précision et du rappel donnant la performance du système.


Ce compromis est donnée de manière simple par la moyenne harmonique de la précision et du rappel
Mesure la capacité du système à donner toutes les solutions pertinentes et à refuser les autres

110
Evaluation

from sklearn.metrics import classification_report, confusion_matrix


print(classification_report(y_test, yhat))
matrix = confusion_matrix(y_test, yhat)

111

Vous aimerez peut-être aussi