Académique Documents
Professionnel Documents
Culture Documents
partie 4
partie 4
Nachaoui Mourad
ENSA de Khouribga
25 mars 2024
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 1 / 103
Les données sont générées dans toutes les interactions et transactions
que nous eectuons.
En ligne ou hors ligne : nous générons des données chaque jour, chaque
minute. À une banque, un point de vente, sur les réseaux sociaux,
passer un appel mobile : chaque interaction génère des données.
Les données se présentent sous deux formes : les données structurées
et les données non structurées.
Lorsque vous passez cet appel mobile à votre ami, l'opérateur télécom
obtient les données de l'appel telles que la durée de l'appel, le coût de
l'appel, l'heure de la journée, etc.
De même, lorsque vous eectuez une transaction en ligne via votre
portail bancaire, les données sont générées autour du montant de la
transaction, du destinataire, de la raison de la transaction, de la
date/heure, etc.
Tous ces points de données qui peuvent être représentées dans une
structure lignes-colonnes sont appelées données structurées. La plupart
de les données utilisées et analysées sont structurées. Ces données
sont stockées dans des bases de données et des serveurs utilisant
Oracle, SQL, AWS, MySQL, etc.
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 2 / 103
Données, types de données et sources de données
Les données peuvent être divisées entre structurées et non structurées. Les
données structurées sont plus faciles à travailler tandis que l'apprentissage
en profondeur est généralement est utilisé pour les données non structurées
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 3 / 103
Données Non Structurées
Les données non structurées sont celles qui ne peuvent pas être
représentées dans une structure ligne-colonne, du moins dans leur
format de base.
Les exemples de données non structurées incluent les données
textuelles (publications sur Facebook, tweets, avis, commentaires,
etc.), les images et photos (Instagram, photos de produits), les chiers
audio ( enregistrements, appels de centres d'appels) et les vidéos
(publicités, vidéos YouTube, etc.).
Toutes les données non structurées peuvent être sauvegardées et
analysées.
Comme vous pouvez l'imaginer, il est plus dicile d'analyser les
données non structurées que les données structurées.
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 4 / 103
Données Non Structurées
Un point important à noter est que même les données non structurées
doivent être converties en entiers an que les ordinateurs puissent les
comprendre et les traiter.
Par exemple, une image en couleur a des pixels et chaque pixel a des
valeurs RVB (rouge, vert, bleu) allant de 0 à 255. Cela signie que
chaque image peut être représentée sous forme de matrices contenant
des entiers, et ces données peuvent être ensuite fournies à l'ordinateur
pour une analyse ultérieure.
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 5 / 103
Qualité des Données
Un aspect vital souvent ignoré et peu discuté est la qualité des données. La
qualité des données détermine la qualité de l'analyse et des insights
générés. Souvenez-vous :
"des déchets en entrée, des déchets en sortie".
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 6 / 103
Qualité des Données
Nous devons nous assurer que les données disponibles respectent les
normes suivantes :
Complétude des données : Il s'agit du pourcentage d'attributs
disponibles. Dans le monde des aaires réel, nous constatons que de
nombreux attributs sont manquants, ou ont des valeurs NULL ou NA.
Il est conseillé de nous assurer que nous obtenons les données de
manière adéquate et d'en garantir la complétude. Pendant la phase de
préparation des données, nous traitons ces variables en les remplaçant
ou en les supprimant selon les besoins.
Validité des données : Cela consiste à s'assurer que tous les
indicateurs clés de performance (KPI) sont capturés lors de la phase
d'identication des données. Les contributions des experts en la
matière (SME) de l'entreprise jouent un rôle crucial dans cette
assurance. Ces KPI sont calculés et vériés par les SME. Par exemple,
lors du calcul du coût moyen d'un appel d'abonné mobile, le SME
pourrait suggérer d'ajouter/supprimer quelques coûts comme le coût
du spectre, le coût d'acquisition, etc.
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 7 / 103
Qualité des Données (Suite)
Précision des données : Cela consiste à s'assurer que tous les points
de données capturés sont corrects et qu'il n'y a aucune information
incohérente dans nos données. On observe que, en raison d'erreurs
humaines ou de problèmes logiciels, des informations erronées sont
parfois capturées. Par exemple, lors de la capture du nombre de clients
achetant dans un magasin de détail, les chires du week-end sont
généralement plus élevés que ceux des jours de semaine. Cela doit être
assuré pendant la phase exploratoire.
Consistance des données : Les données utilisées doivent être
cohérentes et ne doivent pas varier entre les systèmes et les interfaces.
Souvent, diérents systèmes sont utilisés pour représenter un KPI. Par
exemple, le nombre de clics sur une page de site web peut être
enregistré de diérentes manières. La cohérence dans ce KPI garantira
une analyse correcte et des insights cohérents.
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 8 / 103
Qualité des Données (Suite)
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 9 / 103
Qualité des Données (Suite)
Les problèmes les plus courants rencontrés dans les données sont les
valeurs manquantes, les doublons, les valeurs indésirables, les valeurs
aberrantes, etc. Vous étudierez en détail comment résoudre ces
problèmes de manière logique et mathématique.
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 10 / 103
Diérences entre le Génie Logiciel et l'Apprentissage
Automatique
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 11 / 103
Diérences d'Approche
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 12 / 103
Exemple Simplié
En utilisant le génie logiciel, vous coderez les étapes exactes avec des
coordonnées précises et des instructions pour automatiser l'ouverture
d'une canette de cola.
En revanche, en utilisant l'apprentissage automatique, vous montrerez
le processus d'ouverture de la canette au système à de nombreuses
reprises. Le système apprendra le processus en observant diérentes
étapes ou en se "formant" lui-même.
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 13 / 103
Exemple Réel
Imaginons que vous travaillez pour une banque qui propose des cartes
de crédit. Vous êtes dans l'unité de détection de fraude et votre travail
est de classier une transaction comme frauduleuse ou authentique.
Utilisant le génie logiciel, vous pourriez implémenter des conditions
comme celles décrites dans la gure suivant, créant un arbre de
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 15 / 103
Conclusion de comparaison GL et ML
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 16 / 103
Projets d'Apprentissage Automatique (ML)
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 17 / 103
Étapes d'un Projet ML
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 18 / 103
Étapes d'un Projet ML
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 19 / 103
Dés Anticipés
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 20 / 103
Conclusion
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 21 / 103
Algorithmes d'Apprentissage Supervisé
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 22 / 103
Régression vs Classication
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 23 / 103
Algorithmes d'Apprentissage Supervisé
classication.
4 Forêt Aléatoire : pour les problèmes de régression et de classication.
régression et de classication.
Il existe de nombreux autres algorithmes comme k plus proches voisins,
Naive Bayes, LDA, etc. Les réseaux neuronaux peuvent également être
utilisés pour la classication et la régression. Nous étudierons tous ces
algorithmes en détail tout au long du cours, en développant également des
solutions en Python.
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 24 / 103
Comparaison et Sélection d'Algorithmes
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 25 / 103
Conclusion pour les algorithmes d'apprentissage supervisé
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 26 / 103
Étapes d'un Algorithme d'Apprentissage Supervisé
Les étapes dans un projet ML ont été discutées précédemment. Ici, nous
examinerons spéciquement les étapes pour les algorithmes d'apprentissage
supervisé. Les principes de qualité des données, de complétude et de
robustesse s'appliquent à chacune des étapes d'un problème supervisé.
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 27 / 103
Étape 1 : Dénition de la Variable Cible
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 28 / 103
Étape 2 : Identication des Données d'Entraînement
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 29 / 103
Étape 3 : Préparation des Données
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 30 / 103
Étape 4 : Analyse Exploratoire
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 31 / 103
Étape 5 : Modélisation ML
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 32 / 103
Ces étapes sont itératives et essentielles pour résoudre un problème
d'apprentissage supervisé. Elles assurent la qualité, la complétude et la
pertinence des données pour obtenir des résultats ables.
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 33 / 103
Étapes de Formation de l'Algorithme
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 34 / 103
Étapes de Formation de l'Algorithme (suite)
4 L'ensemble de données d'entraînement est utilisé pour entraîner
l'algorithme. Les variables indépendantes agissent comme facteur de
guidage et la variable cible est celle que nous essayons de prédire.
5 L'ensemble de données de test est utilisé pour comparer l'exactitude
des tests. Les données de test/validation ne sont pas exposées à
l'algorithme pendant la phase d'entraînement.
6 Il convient de noter que l'exactitude des tests est beaucoup plus
importante que l'exactitude de l'entraînement. Puisque l'algorithme
devrait être capable de généraliser mieux sur des données invisibles,
l'accent est mis sur l'exactitude des tests.
7 Pendant le processus de développement du modèle, nous itérons à
travers divers paramètres d'entrée de notre modèle, appelés
hyperparamètres. L'ajustement des hyperparamètres est réalisé pour
obtenir la meilleure solution et la plus stable.
8 L'ensemble de validation ne doit être exposé à l'algorithme qu'une
seule fois, après avoir nalisé le réseau/l'algorithme et terminé
l'ajustement.
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 35 / 103
Comparaison et Implémentation
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 36 / 103
Ces étapes de formation d'algorithme garantissent une évaluation précise
de la performance et une sélection de la meilleure solution pour
l'implémentation dans un environnement de production.
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 37 / 103
Prétraitement des Données
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 38 / 103
Outils Techniques Requis
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 39 / 103
Analyse de Régression - Exemple 1
1 Importez les bibliothèques nécessaires : numpy, pandas, matplotlib et
scikit-learn.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.datasets import make_regression
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 41 / 103
Analyse de Régression - Exemple 1
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 42 / 103
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.datasets import make_regression
X, Y = make_regression(n_features=1, noise=5, n_samples=5000)
plt.xlabel('Caractéristique - X')
plt.ylabel('Cible - Y')
plt.scatter(X, Y, s=5)
linear_model = LinearRegression()
linear_model.fit(X, Y)
pred = linear_model.predict(X)
plt.scatter(X, Y, s=25, label='entraînement')
plt.scatter(X, pred, s=25, label='prédiction')
plt.xlabel('Caractéristique - X')
plt.ylabel('Cible - Y')
plt.legend()
plt.show()
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 43 / 103
Conclusion
Nous avons créé une solution pour la régression linéaire à l'aide d'un
ensemble de données d'exemple. Cette approche vous familiarise avec les
concepts de base de la régression linéaire.
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 44 / 103
Analyse de Régression - Exemple 2
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 45 / 103
Étape 1 : Importez toutes les bibliothèques requises ici :
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
import warnings
warnings.filterwarnings(action="ignore", module="scipy",
message="^internal gelsd")
Étape 2 : Chargez l'ensemble de données à l'aide de la fonction pandas :
house_df= pd.read_csv('House_data_LR.csv')
house_df.head()
Ramarque
Il est possible que les données soient présentes sous la forme .xls ou .txt
déposer. Parfois, les données doivent être chargées directement depuis la
base de données en établissant une connexion à la base de données.
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 46 / 103
Étape 3 : Vériez s'il existe une valeur nulle dans l'ensemble de données :
house_df.isnull().any()
Étape 4 : Il existe une variable qui n'a pas de sens. Nous laissons tomber
la variable Unamed :
house_df.drop('Unamed : 0', axis = 1, inplace = True)
Étape 5 : Après avoir supprimé la variable, jetons un ÷il aux premières
lignes dans l'ensemble de données :
maison_df.head()
Étape 6 : Nous allons maintenant préparer l'ensemble de données pour la
création du modèle en séparant la variable indépendante et la variable cible.
X = maison_df.iloc[:, :1].values
y = house_df.iloc[:, -1].values
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 47 / 103
Étape 7 : Les données sont divisées en train et test maintenant. Répartition
Train/Test : la création d'un ensemble de données d'entraînement et de
test implique le fractionnement l'ensemble de données en ensembles de
formation et de test respectivement, qui sont mutuellement exclusif. Après
quoi, vous vous entraînez avec le kit d'entraînement et testez avec le
ensemble de test. Cela fournira une évaluation plus précise des données
hors échantillon précision car l'ensemble de données de test ne fait pas
partie de l'ensemble de données qui a été utilisé pour entraîner les données.
C'est plus réaliste pour les problèmes du monde réel.
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 48 / 103
Cela signie que nous connaissons le résultat de chaque point de données
dans cette ensemble de données, ce qui le rend idéal pour tester ! Et comme
ces données n'ont pas été utilisées pour entraîner le modèle, le modèle n'a
aucune connaissance du résultat de ces points de données. Il s'agit donc
essentiellement d'un test hors échantillon. Testez ici les données sont de 25
% ou 0,25. L'état aléatoire, comme son nom l'indique, sert à initialiser le
système interne. générateur de nombres aléatoires, qui à son tour décide de
la répartition du train/ indices de tests. Le garder xe nous permet de
reproduire la même répartition train/test et donc en vérication de la sortie.
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y,
test_size = 0.25, random_state = 5)
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 49 / 103
Étape 8 : Ajustez maintenant les données à l'aide du modèle de régression
linéaire :
from sklearn.linear_model import LinearRegression
simple_lr= LinearRegression()
simple_lr.fit(X_train, y_train)
Étape 9 : Le modèle est maintenant formé. Utilisons-le pour prédire sur les
données de test
y_pred = simple_lr.predict(X_test)
Étape 10 : Nous allons d'abord tester le modèle sur les données
d'entraînement. Nous allons essayer de prédisez sur les données
d'entraînement et visualisez les résultats sur celles-ci.
plt.scatter(X_train, y_train, color = 'r')
plt.plot(X_train, simple_lr.predict(X_train), color = 'b')
plt.title('Sqft Living vs Price for Training')
plt.xlabel('Square feet')
plt.ylabel('House Price')
plt.show()
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 50 / 103
Étape 11 : Testons maintenant le modèle sur les données de test. C'est la
mesure correcte pour vérier la robustesse du modèle.
plt.scatter(X_test, y_test, color = 'r')
plt.plot(X_train, simple_lr.predict(X_train), color = 'b')
plt.title('Sqft Living vs Price for Test')
plt.xlabel('Square feet')
plt.ylabel('House Price')
Étape 12 : Voyons maintenant dans quelle mesure nos prédictions sont
bonnes ou mauvaises. Nous calculerons le MSE et le R2.
from sklearn.metrics import mean_squared_error
from math import sqrt
rmse = sqrt(mean_squared_error(y_test, y_pred))
from sklearn.metrics import r2_score
r2 = r2_score(y_test, y_pred)
adj_r2 = 1 - float(len(y)-1)/(len(y)-len(simple_lr.coef_)-1)*(1
rmse, r2, adj_r2, simple_lr.coef_, simple_lr.intercept_
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 51 / 103
Étape 13 : Nous allons maintenant faire une prédiction sur la valeur
invisible de x :
import numpy as np
x_unseen=np.array([1500]).reshape(1,1)
simple_lr.predict(x_unseen)
The prediction is 376666.84
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 52 / 103
Code Python pour la Régression Linéaire Simple
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
import warnings
warnings.filterwarnings(action="ignore", module="scipy",
message="^internal gelsd")
house_df = pd.read_csv('House_data_LR.csv')
house_df.head()
house_df.isnull().any()
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 53 / 103
house_df.head()
X = house_df.iloc[:, :1].values
y = house_df.iloc[:, -1].values
y_pred = simple_lr.predict(X_test)
import numpy as np
x_unseen = np.array([1500]).reshape(1,1)
simple_lr.predict(x_unseen)
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 55 / 103
Résultats et Métriques
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 56 / 103
Conclusion
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 57 / 103
Exemple 3 : Régression linéaire multiple pour l'ensemble de données sur le
logement Nous travaillons sur l'ensemble de données sur les prix de
l'immobilier. La variable cible est la prévision des prix de l'immobilier, et il
existe certaines variables indépendantes.
Étape 1 : Importez d'abord toutes les bibliothèques requises.
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
import warnings
warnings.filterwarnings(action="ignore", module="scipy",
message="^internal gelsd")
Étape 2 : Importez les données sous forme de chier .csv. Vériez ensuite
les premières lignes.
house_mlr = pd.read_csv('House_data.csv')
house_mlr.head()
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 58 / 103
Étape 3 : Explorons ensuite l'ensemble de données dont nous disposons.
Cela se fait à l'aide de la commande house_mlr.info().
Étape 4 : la commande house_mlr.describe() donnera les détails sur
toutes les variables numériques.
Un très bon moyen de visualiser les variables consiste à utiliser un tracé en
boîte et moustaches en utilisant le code suivant.
fig = plt.figure(1, figsize=(9, 6))
ax = fig.add_subplot(111)
ax.boxplot(house_mlr['sqft_living15'])
Étape 5 : Nous allons maintenant vérier les corrélations entre les
variables. Cela se fera à l'aide d'une matrice de corrélation qui est
développée à l'aide du code suivant :
house_mlr.drop(['id', 'date'], axis = 1, inplace = True)
fig, ax = plt.subplots(figsize = (12,12))
ax = sns.heatmap(house_mlr.corr(),annot = True)
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 59 / 103
L'analyse de la matrice de corrélation montre qu'il existe une certaine
corrélation entre quelques variables. Par exemple, entre sqft_above et
sqft_living, il existe une corrélation de 0,88. Et c'est tout à fait attendu.
Pour ce premier exemple simple, nous ne traitons pas les variables corrélées.
Étape 6 : Nous allons maintenant nettoyer un peu les données. Il y a
quelques valeurs nulles présentes dans l'ensemble de données. Nous
abandonnons maintenant ces valeurs nulles.
house_mlr.isnull().any()
house_mlr ['basement'] = (house_mlr ['sqft_basement'] > 0).
astype(int)
house_mlr ['renovated'] = (house_mlr ['yr_renovated'] > 0).
astype(int)
to_drop = ['sqft_basement', 'yr_renovated']
house_mlr.drop(to_drop, axis = 1, inplace = True)
house_mlr.head()
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 60 / 103
Étape 7 : Les variables catégorielles sont converties en variables
numériques à l'aide d'un codage à chaud.
categorical_variables = ['waterfront', 'view', 'condition',
'grade', 'floors','zipcode']
house_mlr = pd.get_dummies(house_mlr, columns = categorical_
variables, drop_first=True)
house_mlr.head()
Étape 8 : Nous allons maintenant diviser les données en entraînement et
test, puis ajuster le modèle. La taille du test représente 25 % des données.
X = house_mlr.iloc[:, 1:].values
y = house_mlr.iloc[:, 0].values
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y,
test_size = 0.25, random_state = 5)
from sklearn.linear_model import LinearRegression
multiple_regression = LinearRegression()
multiple_regression.fit(X_train, y_train)
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 61 / 103
Étape 9 : Prédisez les résultats de l'ensemble de tests.
y_pred = multiple_regression.predict(X_test)
Étape 10 : Nous allons maintenant vérier l'exactitude de notre modèle.
from sklearn.metrics import mean_squared_error
from math import sqrt
rmse = sqrt(mean_squared_error(y_test, y_pred))
from sklearn.metrics import r2_score
r2 = r2_score(y_test, y_pred)
adj_r2 = 1 - float(len(y)-1)/(len(y)-len(multiple_regression.
coef_)-1)*(1 - r2)
rmse, r2, adj_r2
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 62 / 103
Introduction au classication supervisé
Dans le cas d'un problème de classication, le modèle prédictif peut
prendre directement la forme d'une fonction f à valeurs dans 0, 1, ou
utiliser une fonction intermédiaire g à valeurs réelles, qui associe à une
observation un score d'autant plus élevé qu'elle est susceptible d'être
positive. Ce score peut par exemple être la probabilité que cette
observation appartienne à la classe positive. On obtient alors f en seuillant
g ; g est appelée fonction de décision.
Dénition 1
Dans le cadre d'un problème de classication binaire, on appelle fonction
de décision, ou fonction discriminante, une fonction g : X 7→ R telle que
f (x) = 0 si et seulement si g (x) ≤ 0 et f (x) = 1 si et seulement si
g (x) > 0.
Cette dénition se généralise dans le cas de la classication multi-classe :
on a alors C fonctions de décision gc : X 7→ R telles que
f (x) = arg max gc (x).
c=1,...,c
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 63 / 103
Le concept de fonction de décision permet de partitionner l'espace en
régions de décision :
Dénition : (Région de décision)
Dans le cas d'un problème de classication binaire, la fonction
discriminante partitionne l'espace des observations X en deux régions de
décision, R0 et R1 , telles que :
R0 = {x ∈ X |g (x) ≤ 0} et R1 = {x ∈ X |g (x) > 0}.
Dans le cas multi-classe, on a alors C régions de décision :
Rc = {x ∈ X |gc (x) = max gk (x)}.
k
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 64 / 103
Les régions de décision sont séparées par des frontières de décision :
Dénition (Frontière de décision)
Dans le cadre d'un problème de classication, on appelle frontière de
décision, ou discriminant, l'ensemble des points de X où une fonction de
décision s'annule. Dans le cas d'un problème binaire, il y a une seule
frontière de décision ; dans le cas d'un problème multi-classe à C classes, il
y en a C .
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 65 / 103
Algorithmes de classication
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 66 / 103
Exemples d'utilisation
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 67 / 103
Algorithmes utilisables
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 68 / 103
Minimisation du risque empirique (ERM)
Convexication du risque. Données : (Xi , Yi )i=1,...,n ∈ X × {−1, 1}
indépendantes et identiquement distribuées.
But : trouver f : X → {−1, 1} telle que :
R(f ) = E(1f (X )̸=Y ) = P(f (X ) ̸= Y )
soit le plus petit possible.
Remarque 1. R(f ) désigne le risque, ou encore la probabilité d'erreur de f .
Problème : {−1, 1} n'est pas un espace vectoriel, donc {f : X → {−1, 1}}
non plus, ce qui peut poser une diculté pour résoudre un problème de
minimisation.
Nouveau but : trouver f : X → R et considérer alors la fonction :
x 7→ sign(f (x)) comme prédicteur, où :
1 si a > 0
sign(a) = −1 si a < 0
0 si a = 0
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 69 / 103
Risque : Le risque devient alors :
R(f ) = P(sign(f (X )) ̸= Y ) = E(1sign(f (X ))̸=Y ) = E(1Yf (X )≤0 )
= E[Φ0−1 (Yf (X ))]
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 70 / 103
Exemple 1.
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 72 / 103
Remarque 2. Pour ce dernier exemple, il y a deux formulations possibles :
1 La formulation SVM (=support vector machine) séparable :
1
tel que yi (w T xi + b) ≥ 1
min ||w ||2
2
2 La formulation SVM non séparable :
1 n
min ||w ||2 + c tel que yi (w T xi + b) ≥ 1 − ξi , ξi ≥ 0
X
ξi
2 i=1
Ou encore :
1 n
min ||w ||2 + c
X
Φ(yi f (xi )))
2 i=1
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 73 / 103
Exemple 2. Si on note :
1 n n n
L(w , ξ, α, β) = ||w ||2 + c αi (yi (w T xi + b) − 1 + ξi )
X X X
ξi − β i ξi −
2 i=1 i=1 i=1
1
i=P
Et le problème dual s'écrit : maxα − 12 || n
i=1 αi yi xi ||
2 telle que :
n
0 =
X
αi yi
i=1
0 ≤ αi ≤ c
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 74 / 103
Remarque 3. Les conditions de KKT s'écrivent :
(c − αi )ξi = 0, i = 1, . . . , n
αi (yi (w T xi + b) − 1 + ξi ) = 0, i = 1, . . . , n
On remarque alors que si yi (w T xi + b) − 1 > 0, cela signie qu'on est à
droite du hinge et, puisque ξi ≥ 0 implique ici ξi = 0, on a : αi = 0.
De même, si yi (w T xi + b) − 1 = 0, cela signie qu'on est sur le hinge, et
on a : 0 ≤ αi ≤ c .
Enn, si yi (w T xi + b) − 1 < 0, cela signie qu'on est à gauche du hinge, et
on a : αi = c , car ξi > 0.
Notons que ceci est un cas particulier du théorème du représentant (cours
sur les noyaux).
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 75 / 103
Il existe de nombreuses façons d'évaluer la performance prédictive d'un
modèle d'apprentissage supervisé. Cette section présente les principaux
critères utilisés.
Le nombre d'erreurs de classication est utilisé pour évaluer la qualité d'un
modèle prédictif. Il est préférable d'exprimer ce nombre d'erreurs sous
forme de fraction du nombre total d'exemples, par exemple un taux
d'erreur de 1% est plus parlant qu'un nombre absolu d'erreurs.
Un modèle qui prédit si une radiographie montre une tumeur
inquiétante : une fausse alerte est moins problématique que de ne pas
détecter la tumeur.
Les performances d'un modèle de classication (binaire ou multiclasse)
peuvent être résumées dans une matrice de confusion.
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 76 / 103
Dénition de la Matrice de Confusion
Matrice de Confusion : Une matrice M contenant autant de lignes que
de colonnes que de classes, où Mck est le nombre d'exemples de la classe c
pour laquelle l'étiquette k a été prédite.
Classe réelle/prédite 0 1
0 Vrais Négatifs (TN) Faux Négatifs (FN)
1 Faux Positifs (FP) Vrais Positifs (TP)
Vrais Positifs (TP) : Exemples positifs correctement classiés.
Faux Positifs (FP) : Exemples négatifs étiquetés positifs par le
modèle.
Vrais Négatifs (TN) : Exemples négatifs correctement classiés.
Faux Négatifs (FN) : Exemples positifs étiquetés négatifs par le
modèle.
Les faux positifs sont également appelés fausses alarmes ou erreurs de type
I, tandis que les faux négatifs sont des erreurs de type II.
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 77 / 103
Critères d'Évaluation à partir de la Matrice de Confusion
TP
Rappel (Recall) : Rappel =
TP + FN
Le rappel mesure la proportion d'exemples positifs correctement identiés.
TP
Précision (Precision) : Précision =
TP + FP
La précision mesure la proportion de prédictions positives correctes.
2 · Précision · Rappel
F-mesure (F-score) : F=
Précision + Rappel
La F-mesure est la moyenne harmonique de la précision et du rappel.
TN
Spécicité (Specicity) : Spécicité =
FP + TN
La spécicité mesure la proportion d'exemples négatifs correctement
identiés.
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 78 / 103
Évaluation de Méthodes de Classication Binaire
Courbe ROC (Receiver-Operator Characteristic) :
Dénition : courbe décrivant la sensibilité en fonction du
complémentaire de la spécicité lorsque le seuil de décision change.
Utilité : évaluer la qualité de la fonction de décision avant le seuillage.
Synthèse : l'aire sous la courbe ROC (AUROC) est souvent utilisée
pour quantier la performance du modèle.
Exemple : voir Figure pour une illustration de la courbe ROC.
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 79 / 103
Courbe Précision-Rappel (PR)
Courbe PR (Precision-Recall curve) :
Dénition : courbe décrivant l'évolution de la précision en fonction du
rappel lorsque le seuil de décision change.
Utilité : complément de la courbe ROC pour évaluer la qualité de la
fonction de décision.
Synthèse : l'aire sous la courbe PR (AUPR) est souvent utilisée pour
quantier la performance du modèle.
Exemple : voir Figure pour une illustration de la courbe PR.
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 80 / 103
Comprendre la fonction logistique
La fonction logistique est une membre des fonctions sigmoïdes (en forme
de S), et elle est représentée par la formule suivante :
1
f (θ) =
1 + e −θ
Ne laissez pas cette équation vous erayer. Ce qui importe réellement, c'est
l'aspect visuel de cette fonction. Heureusement, nous pouvons utiliser notre
ordinateur pour générer une série de valeurs pour θpar exemple, entre
-10 et 10.
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 81 / 103
Ensuite, nous pouvons insérer ces valeurs dans la formule et tracer les
valeurs de y résultantes par rapport aux valeurs de θ, comme nous l'avons
fait dans le code suivant :
import numpy as np
import pandas as pd
fig, ax = plt.subplots(1, 1, figsize=(16, 8))
theta = np.arange(-10, 10, 0.05)
y = 1 / (1 + np.exp(-1 * theta))
pd.DataFrame(
{
'theta': theta,
'y': y
}
).plot(
title='Logistic Function',
kind='scatter', x='theta', y='y',
ax=ax
)
fig.show()
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 82 / 103
1
0.8
0.6
y
0.4
0.2
0
−10 −5 0 5 10
θ
Deux caractéristiques clés à remarquer dans la fonction logistique sont les
suivantes :
1 y se situe uniquement entre 0 et 1. Elle tend vers 1 lorsque θ tend vers
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 85 / 103
Fonction objectif
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 87 / 103
Solveurs
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 88 / 103
Conguration du classieur de régression logistique et
Solveurs
t_intercept : Habituellement, en plus du coecient pour chaque
caractéristique, il y a un intercepte constant dans votre équation.
Néanmoins, il y a des cas où vous pourriez ne pas avoir besoin d'un
intercepte. Par exemple, si vous savez avec certitude que la valeur de y
doit être de 0,5 lorsque toutes les valeurs de x sont de 0. Une autre
situation est lorsque vos données ont déjà une colonne constante
supplémentaire avec toutes les valeurs dénies à 1.
max_iter : Pour que le solveur trouve les coecients optimaux, il
parcourt les données d'entraînement plus d'une fois. Ces itérations
sont également appelées époques. Vous dénissez généralement une
limite sur le nombre d'itérations pour éviter le surajustement.
tol : Il s'agit d'une autre manière d'arrêter le solveur d'itérer trop. Si
vous le réglez sur une valeur élevée, cela signie que seules les
améliorations importantes entre une itération et la suivante sont
tolérées ; sinon, le solveur s'arrêtera.
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 89 / 103
penalty : Cela choisit les techniques de régularisation à utiliser. Il peut
s'agir de L1 , L2 , elastic-net, ou aucun pour aucune régularisation.
C ou alpha : Ce sont des paramètres pour dénir à quel point vous
voulez que la régularisation soit forte. Des valeurs plus petites pour C
spécient une régularisation plus forte, tandis que pour alpha, des
valeurs plus grandes sont nécessaires pour une régularisation plus forte.
l1_ratio : Lors de l'utilisation d'un mélange de L1 et L2 , comme dans
elastic-net, cette fraction spécie combien de poids donner à L1 par
rapport à L2 .
Solveurs :
liblinear : Ce solveur est implémenté dans LogisticRegression et est
recommandé pour les petits ensembles de données.
sag ou saga : Ces solveurs sont implémentés dans LogisticRegression
et RidgeClassier. Ils sont plus rapides pour les grands ensembles de
données.
lbfgs : Ce solveur est implémenté dans LogisticRegression. Il supporte
la pénalité L2 ou aucune régularisation du tout.
Descente de gradient stochastique (SGD) : Il existe des
implémentations dédiées pour SGD - SGDClassier et SGDRegressor.
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 90 / 103
Contexte Professionnel
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 91 / 103
Objectif Commercial
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 92 / 103
Jeu de Données
Loan_ID : Identiant unique du prêt
Gender : Homme/Femme
Married : Marié (O/N)
Dependents : Nombre de personnes à charge
Education : Éducation de l'applicant (Gradué/Non gradué)
Self_Employed : Travailleur indépendant (O/N)
ApplicantIncome : Revenu de l'applicant
CoapplicantIncome : Revenu du co-emprunteur
LoanAmount : Montant du prêt en milliers
Loan_Amount_Term : Durée du prêt en mois
Credit_History : Historique de crédit conforme aux directives
Property_Area : Zone (Urbain/Semi-Urbain/Rural)
Loan_Status : Prêt approuvé (O/N)
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 93 / 103
Importation des Bibliothèques
Étape 1 : Importez d'abord toutes les bibliothèques requises. En important
Seaborn pour des tracés statistiques, an de diviser les trames de données
en ensemble d'entraînement et en ensemble de test, nous utiliserons la
fonction de fractionnement de données du package sklearn, qui est basée
sur une fonction aléatoire. Pour calculer les mesures de précision et les
matrices de confusion, nous avons importé des métriques de sklearn.
Code Python
import pandas as pd
from sklearn.linear_model import LogisticRegression
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.model_selection import train_test_split
import numpy as np
import os,sys
from scipy import stats
from sklearn import metrics
import
Nachaoui Mouradseaborn as sn Cours sur la Classication Supervisée
(ENSA de Khouribga) 25 mars 2024 94 / 103
Étape 2 : Chargez l'ensemble de données à l'aide de la commande
read_csv. Le résultat est présenté ci-dessous.
loan_df = pd.read_csv('CreditRisk.csv')
loan_df.head()
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 95 / 103
Étape 6 : Visualisez ensuite les données comme un graphique linéaire.
plt.plot(credit_df.LoanAmount)
plt.xlabel('Loan Amount')
plt.ylabel('Frequency')
plt.title("Plot of the Loan Amount")
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 97 / 103
Étape 12 : Vériez les types de données présents dans les données
dont nous disposons actuellement,
credit_df.info()
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 98 / 103
Étape 16 : Divisez maintenant en ensembles de formation et de test.
Nous nous divisons dans un ratio de 70 : 30
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, Y, test_
size=0.30)
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 99 / 103
Étape 19 : Ensuite, nous calculerons le rapport de cotes à partir des
coecients en utilisant la formule odds ratio=exp(coef ). Ensuite,
nous calculerons la probabilité à partir du rapport de cotes en utilisant
la formule de probabilité= odds / (1+odds).
log_coef = pd.DataFrame(lg.params, columns=['coef'])
log_coef.loc[:, "Odds_ratio"] = np.exp(log_coef.coef)
log_coef['probability'] = log_coef['Odds_ratio']/(1+log_
coef['Odds_ratio'])
log_coef['pval']=lg.pvalues
pd.options.display.float_format = '{:.2f}'.format
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 101 / 103
Étape 23 : Nous allons ensuite faire la prédiction pour l'ensemble de
test et la visualiser,
pred_test = log_reg.predict(X_test)
mat_test = confusion_matrix(y_test,pred_test)
print("confusion matrix = \n",mat_test)
ax= plt.subplot()
ax.set_ylim(2.0, 0)
annot_kws = {"ha": 'left',"va": 'top'}
sns.heatmap(mat_test, annot=True, ax = ax, fmt= 'g',
annot_kws=annot_kws); #annot=True to annotate cells
ax.set_xlabel('Predicted labels');
ax.set_ylabel('True labels');
ax.set_title('Confusion Matrix');
ax.xaxis.set_ticklabels(['Not Approved', 'Approved']);
ax.yaxis.set_ticklabels(['Not Approved', 'Approved']);
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 102 / 103
Étape 24 : Créons maintenant la courbe AUC ROC et obtenons le
score AUC.
from sklearn.metrics import roc_auc_score
from sklearn.metrics import roc_curve
logit_roc_auc = roc_auc_score(y_test, log_reg.predict(X_test))
fpr, tpr, thresholds = roc_curve(y_test, log_reg.predict_
proba(X_test)[:,1])
plt.figure()
plt.plot(fpr, tpr, label='Logistic Regression (area = %0.2f)' %
logit_roc_auc)
plt.plot([0, 1], [0, 1],'r--')
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('Receiver operating characteristic')
plt.legend(loc="lower right")
plt.savefig('Log_ROC')
plt.show()
Nachaoui Mourad (ENSA de Khouribga) Cours sur la Classication Supervisée 25 mars 2024 103 / 103