Introduction à l’apprentissage automatique

CSI 4506 - Automne 2025

Marcel Turcotte

Version: sept. 9, 2025 10h13

Préambule

Citation du jour

Citation du jour (suite)

Yoshua Bengio, Université de Montréal, a été à nouveau reconnu par TIME comme l’une des personnes les plus influentes dans le domaine de l’intelligence artificielle.

Remarque

Dans l’évolution de l’intelligence, l’apprentissage a été l’un des premiers jalons à émerger. C’est aussi l’un des mécanismes les plus compris dans l’intelligence naturelle.

Démystifier les mythes

Let’s start by telling the truth: machines don’t learn. (…) just like artificial intelligence is not intelligence, machine learning is not learning.

Fondamentaux de l’apprentissage automatique

Dans ce cours, nous introduirons des concepts essentiels pour comprendre l’apprentissage automatique, y compris les types de problèmes (tâches).

Objectif général :

  • Décrire les concepts fondamentaux de l’apprentissage automatique

Objectifs d’apprentissage

  • Résumer les différents types et tâches en apprentissage automatique
  • Discuter la nécessité des jeux de données d’entraînement et de test

Lectures

  • Russell et Norvig (2020), Chapitre 19 : Apprentissage à partir d’exemples.

Introduction

Justification

Pourquoi un programme informatique devrait-il apprendre ?

Définition

Mitchell (1997), page 2

Un programme informatique apprend à partir de l’expérience \(E\) par rapport à une certaine classe de tâches \(T\) et une mesure de performance \(P\), si sa performance pour les tâches dans \(T\), mesurée par \(P\), s’améliore avec l’expérience \(E\).

Concepts

Voir: images/svg/ml_concepts-00.svg

Types de problèmes

Il existe trois (3) types distincts de rétroaction :

  1. Apprentissage non supervisé : Aucune rétroaction n’est fournie à l’algorithme.
  2. Apprentissage supervisé : Chaque exemple est accompagné d’une étiquette.
  3. Apprentissage par renforcement : L’algorithme reçoit une récompense ou une punition après chaque action.

L’apprentissage supervisé est le type d’apprentissage le plus étudié et sans doute le plus intuitif. C’est généralement le premier type d’apprentissage introduit dans les contextes éducatifs.

Deux phases

  1. Apprentissage (construction d’un modèle)
  2. Inférence (utilisation du modèle)

Apprentissage (construction)

Inférence (utilisation du modèle)

Carp-e Diem! (exemple)

1. Problème : Vont-ils mordre aujourd’hui ?

Objectif : Développer un modèle prédictif pour évaluer la probabilité de succès d’une journée de pêche, classée en trois catégories : ‘Médiocre’, ‘Moyenne’ ou ‘Excellente’.

2. Attributs (caractéristiques)

Différentes sources, y compris The Old Farmer’s Almanac, suggèrent que la phase de la lune est un prédicteur fiable du succès de la pêche.

  • Phase de la lune (catégorielle) : ‘Nouvelle lune’, ‘Premier quartier’, ‘Pleine lune’ et ‘Dernier quartier’.
  • Prévisions météorologiques (catégorielles) : ‘Pluvieux’, ‘Nuageux’ et ‘Ensoleillé’.
  • Température extérieure (numérique) : La température en Celsius.
  • Température de l’eau (numérique) : La température de l’eau du lac ou de la rivière.

3. Données d’entraînement

Exemple Phase de la lune Prévisions météorologiques Température extérieure (°C) Température de l’eau (°C) Probabilité d’une journée de pêche
1 Pleine lune Ensoleillé 25 22 Excellente
2 Nouvelle lune Nuageux 18 19 Moyenne
3 Premier quartier Pluvieux 15 17 Médiocre
4 Dernier quartier Ensoleillé 30 24 Excellente
5 Pleine lune Nuageux 20 20 Moyenne
6 Nouvelle lune Pluvieux 22 21 Médiocre

3. Données

Phase de la lune Prévisions météorologiques Température extérieure (°C) Température de l’eau (°C)
Pleine lune Ensoleillé 25 22
Nouvelle lune Nuageux 18 19
Premier quartier Pluvieux 15 17
Dernier quartier Ensoleillé 30 24
Pleine lune Nuageux 20 20
Nouvelle lune Pluvieux 22 21

Les données sont souvent présentées sous forme tabulaire (matrice), où chaque ligne représente un vecteur d’attributs (feature vector), généralement noté \(x_i\), correspondant au \(i\)-ème exemple dans l’ensemble d’entraînement.

3. Étiquettes

Probabilité d’une journée de pêche
Excellente
Moyenne
Médiocre
Excellente
Moyenne
Médiocre

Les étiquettes sont généralement représentées comme un vecteur colonne, avec \(y_i\) désignant l’étiquette pour le \(i\)-ème exemple.

4. Entraînement du modèle

L’entraînement du modèle consiste à utiliser des données étiquetées pour enseigner à un algorithme d’apprentissage automatique comment faire des prédictions. Ce processus ajuste les paramètres du modèle pour minimiser l’erreur entre les résultats prévus et les résultats réels.

4. Entraînement du modèle (suite)

  • Journée de pêche excellente :
    • Phase de la lune : Pleine lune ou Nouvelle lune
    • Prévisions météorologiques : Ensoleillé
    • Température extérieure : 20°C à 30°C
    • Température de l’eau : 20°C à 25°C

\(\ldots\)

  • Journée de pêche médiocre :
    • Phase de la lune : Premier quartier ou Dernier quartier
    • Prévisions météorologiques : Pluvieux
    • Température extérieure : < 20°C ou > 30°C
    • Température de l’eau : < 20°C ou > 25°C

5. Prédiction

Étant donné de nouvelles données non vues, prédisez si la journée sera réussie.

  • Phase de la lune : Nouvelle lune
  • Prévisions météorologiques : Ensoleillé
  • Température extérieure : 24°C
  • Température de l’eau : 21°C

Cycle de vie

  1. Collecte et préparation des données
  2. Ingénierie des attributs
  3. Entraînement
  4. Évaluation du modèle
  5. Déploiement du modèle
  6. Surveillance et maintenance

Définitions formelles

Apprentissage supervisé (notation)

L’ensemble de données (“expérience”) est une collection d’exemples étiquetés.

  • \(\{(x_i, y_i)\}_{i=1}^N\)
  • Chaque \(x_i\) est un vecteur d’attributs (feature) avec \(D\) dimensions.
  • \(x^{(j)}_i\) est la valeur de l’attribut \(j\) de l’exemple \(i\), pour \(j \in 1 \ldots D\) et \(i \in 1 \ldots N\).
  • L’étiquette \(y_i\) est soit une classe, prise d’une liste finie de classes, \(\{1, 2, \ldots, C\}\), soit un nombre réel, soit un objet complexe (arbre, graphe, etc.).

Problème : Étant donné l’ensemble de données en entrée, créer un modèle qui peut être utilisé pour prédire la valeur de \(y\) pour un \(x\) non vu.

Apprentissage supervisé (suite)

  • Lorsque l’étiquette \(y_i\) est une classe, prise d’une liste finie de classes, \(\{1, 2, \ldots, C\}\), nous appelons la tâche une tâche de classification.

  • Lorsque l’étiquette \(y_i\) est un nombre réel, nous appelons la tâche une tâche de régression.

Exemple avec du code

Scikit-learn

Scikit-learn est une bibliothèque open source (ou à code source ouvert) d’apprentissage automatique qui prend en charge l’apprentissage supervisé et non supervisé. Elle offre également divers outils pour l’entraînement des modèles, le prétraitement des données, la sélection de modèle, l’évaluation de modèle, et de nombreuses autres utilités.

Scikit-learn fournit des dizaines d’algorithmes et de modèles d’apprentissage automatique intégrés, appelés estimateurs.

Construite sur NumPy, SciPy et matplotlib.

Scikit-learn

Exemple : Manchots de Palmer

En cas de bibliothèque manquante

try:
  from palmerpenguins import load_penguins
except:
  ! pip install palmerpenguins
  from palmerpenguins import load_penguins

Exemple : Chargement des données

# Il est d'usage d'utiliser X et y pour les données et les étiquettes

X, y = load_penguins(return_X_y = True)

Exemple : DecisionTree

from sklearn import tree

clf = tree.DecisionTreeClassifier(random_state=42)

Exemple : Entraînement

# Entraînement

clf = clf.fit(X, y)

Exemple : Visualisation (1/2)

import matplotlib.pyplot as plt

tree.plot_tree(clf)
plt.show()

Exemple : Visualisation (2/2)

target_names = ['Adelie','Chinstrap','Gentoo']

tree.plot_tree(clf, 
               feature_names = X.columns,
               class_names = target_names,
               label = 'none',
               filled = True)
plt.show()

Exemple : Prédiction

import pandas as pd

# Création de 2 exemples de test

columns_names = ['bill_length_mm', 'bill_depth_mm', 'flipper_length_mm', 'body_mass_g']
X_test = pd.DataFrame([[34.2, 17.9, 186.8, 2945.0], [51.0, 15.2, 223.7, 5560.0]], columns=columns_names)

# Prédiction

y_test = clf.predict(X_test)

# Affichage des étiquettes prédites pour nos deux exemples

print(y_test)
['Adelie' 'Gentoo']

Exemple : Complet

X, y = load_penguins(return_X_y = True)
clf = tree.DecisionTreeClassifier(random_state=123)
clf = clf.fit(X, y)
tree.plot_tree(clf)
X_test = pd.DataFrame([[34.2, 17.9, 186.8, 2945.0], [51.0, 15.2, 223.7, 5560.0]], columns=columns_names)
print(clf.predict(X_test))
['Adelie' 'Gentoo']

Exemple : Performance

from sklearn.metrics import classification_report, accuracy_score

# Faire des prédictions

y_pred = clf.predict(X)

# Évaluer le modèle

accuracy = accuracy_score(y, y_pred)
report = classification_report(y, y_pred, target_names=target_names)

print(f'Exactitude : {accuracy:.2f}')
print('Rapport de classification :')
print(report)

Exemple : Performance

Exactitude : 1.00
Rapport de classification :
              precision    recall  f1-score   support

      Adelie       0.99      1.00      1.00       152
   Chinstrap       1.00      1.00      1.00        68
      Gentoo       1.00      0.99      1.00       124

    accuracy                           1.00       344
   macro avg       1.00      1.00      1.00       344
weighted avg       1.00      1.00      1.00       344

Exemple : Discussion

Nous avons démontré un exemple complet :

  • Chargement des données
  • Sélection d’un classificateur
  • Entraînement du modèle
  • Visualisation du modèle
  • Faire une prédiction

Exemple : Attendez une minute !

from sklearn.metrics import classification_report, accuracy_score

# Faire des prédictions

y_pred = clf.predict(X)

# Évaluer le modèle

accuracy = accuracy_score(y, y_pred)
report = classification_report(y, y_pred, target_names=target_names)

print(f'Précision : {accuracy:.2f}')
print('Rapport de classification :')
print(report)

Important

Cet exemple est trompeur, voire erroné !

Exemple : Exploration

penguins = load_penguins()
type(penguins)
pandas.core.frame.DataFrame
penguins.head()

Exemple : Exploration

species island bill_length_mm bill_depth_mm flipper_length_mm body_mass_g sex year
0 Adelie Torgersen 39.1 18.7 181.0 3750.0 male 2007
1 Adelie Torgersen 39.5 17.4 186.0 3800.0 female 2007
2 Adelie Torgersen 40.3 18.0 195.0 3250.0 female 2007
3 Adelie Torgersen NaN NaN NaN NaN NaN 2007
4 Adelie Torgersen 36.7 19.3 193.0 3450.0 female 2007

Exemple : Exploration

penguins.describe()

Exemple : Exploration

bill_length_mm bill_depth_mm flipper_length_mm body_mass_g year
count 342.000000 342.000000 342.000000 342.000000 344.000000
mean 43.921930 17.151170 200.915205 4201.754386 2008.029070
std 5.459584 1.974793 14.061714 801.954536 0.818356
min 32.100000 13.100000 172.000000 2700.000000 2007.000000
25% 39.225000 15.600000 190.000000 3550.000000 2007.000000
50% 44.450000 17.300000 197.000000 4050.000000 2008.000000
75% 48.500000 18.700000 213.000000 4750.000000 2009.000000
max 59.600000 21.500000 231.000000 6300.000000 2009.000000

Exemple : Utilisation de Seaborn

import seaborn as sns

# Pairplot utilisant seaborn

sns.pairplot(penguins, hue='species', markers=["o", "s", "D"])
plt.suptitle("Graphiques de dispersion par paires des attributs des manchots")
plt.show()

Exemple : Utilisation de Seaborn

Exemple : Ensemble d’entraînement et de test

from sklearn.model_selection import train_test_split

# Diviser le jeu de données en ensembles d'entraînement et de test

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=7)

Exemple : Création d’un nouveau classificateur

clf = tree.DecisionTreeClassifier()

Exemple : Entraînement du nouveau classificateur

clf.fit(X_train, y_train)

Exemple : Visualisation de l’arbre

tree.plot_tree(clf, 
               feature_names = X.columns,
               class_names = target_names,
               label = 'none',
               filled = True)
plt.show()

Exemple : Faire des prédictions

# Faire des prédictions
y_pred = clf.predict(X_test)

Exemple : Mesurer la performance

# Évaluer le modèle
accuracy = accuracy_score(y_test, y_pred)
report = classification_report(y_test, y_pred, target_names=target_names)

print(f'Exactitude : {accuracy:.2f}')
print('Rapport de classification :')
print(report)

Exemple : Mesurer la performance

Exactitude : 0.93
Rapport de classification :
              precision    recall  f1-score   support

      Adelie       0.96      0.87      0.91        30
   Chinstrap       0.88      1.00      0.94        15
      Gentoo       0.92      0.96      0.94        24

    accuracy                           0.93        69
   macro avg       0.92      0.94      0.93        69
weighted avg       0.93      0.93      0.93        69

Résumé

  • Nous avons introduit la terminologie pertinente.
  • Nous avons examiné un exemple hypothétique.
  • Ensuite, nous explorerons un exemple complet en utilisant scikit-learn.
  • Nous avons effectué une exploration détaillée de nos données.
  • Enfin, nous avons reconnu la nécessité d’un ensemble de test indépendant pour mesurer précisément la performance.

Prologue

Lectures supplémentaires (1/3)

  • The Hundred-Page Machine Learning Book (Burkov 2019) est un manuel succinct et ciblé qui peut être lu en une semaine, ce qui en fait une excellente ressource d’introduction.
  • Disponible sous un modèle « lire d’abord, acheter ensuite », permettant aux lecteurs d’évaluer son contenu avant de l’acheter.
  • Son auteur, Andriy Burkov, a obtenu son doctorat en IA à l’Université Laval.

Lectures supplémentaires (2/3)

Lectures supplémentaires (3/3)

  • Mathematics for Machine Learning (Deisenroth, Faisal, et Ong 2020) vise à fournir les compétences mathématiques nécessaires pour lire des livres sur l’apprentissage automatique.
  • PDF du livre
  • “Ce livre offre une excellente couverture de tous les concepts mathématiques de base pour l’apprentissage automatique. J’ai hâte de le partager avec les étudiants, les collègues et toute personne intéressée à acquérir une compréhension solide des fondamentaux.” Joelle Pineau, Université McGill et Facebook

Références

Burkov, Andriy. 2019. The Hundred-Page Machine Learning Book. Andriy Burkov.
Deisenroth, Marc Peter, A. Aldo Faisal, et Cheng Soon Ong. 2020. Mathematics for Machine Learning. Cambridge University Press. https://doi.org/10.1017/9781108679930.
Géron, Aurélien. 2022. Hands-on Machine Learning with Scikit-Learn, Keras, and TensorFlow. 3ᵉ éd. O’Reilly Media, Inc.
Kingsford, C, et Steven L Salzberg. 2008. « What are decision trees? » Nature biotechnology 26 (9): 1011‑13. https://doi.org/10.1038/nbt0908-1011.
Mitchell, Tom M. 1997. Machine Learning. New York: McGraw-Hill.
Russell, Stuart, et Peter Norvig. 2020. Artificial Intelligence: A Modern Approach. 4ᵉ éd. Pearson. http://aima.cs.berkeley.edu/.

Prochain cours

  • Régression linéaire
  • Descente de gradient
  • Régression logistique

Annexe: Iris Data Set

Exemple: iris data set

Exemple: charger les données

from sklearn.datasets import load_iris

# Load the Iris dataset

iris = load_iris()

Exemple: Utilisant un arbre de décision

from sklearn import tree

clf = tree.DecisionTreeClassifier()

Exemple: Entraînement

# It is customary to use X and y for the data and labels

X, y = iris.data, iris.target

# Training

clf = clf.fit(X, y)

Exemple: Visualiser l’arbre (1/2)

import matplotlib.pyplot as plt

tree.plot_tree(clf)
plt.show()

Exemple: Visualiser l’arbre (2/2)

tree.plot_tree(clf, 
               feature_names=iris.feature_names, 
               class_names=iris.target_names,
               label='none',
               filled=True)
plt.show()

Exemple: Prédiction

# Creatingg 2 test examples
# 'sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)'

X_test = [[5.1, 3.5, 1.4, 0.2],[6.7, 3.0, 5.2, 2.3]]

# Prediction

y_test = clf.predict(X_test)

# Printing the predicted labels for our two examples

print(iris.target_names[y_test])
['setosa' 'virginica']

Exemple: Complet

iris = load_iris()
clf = tree.DecisionTreeClassifier()
X, y = iris.data, iris.target
clf = clf.fit(X, y)
tree.plot_tree(clf)
X_test = [[5.1, 3.5, 1.4, 0.2],[6.7, 3.0, 5.2, 2.3]]
y_test = clf.predict(X_test)
print(iris.target_names[y_test])
['setosa' 'virginica']

Exemple: Performance

from sklearn.metrics import classification_report, accuracy_score

# Make predictions

y_pred = clf.predict(X)

# Evaluate the model

accuracy = accuracy_score(y, y_pred)
report = classification_report(y, y_pred, target_names=iris.target_names)

print(f'Accuracy: {accuracy:.2f}')
print('Classification Report:')
print(report)

Exemple: Performance

Accuracy: 1.00
Classification Report:
              precision    recall  f1-score   support

      setosa       1.00      1.00      1.00        50
  versicolor       1.00      1.00      1.00        50
   virginica       1.00      1.00      1.00        50

    accuracy                           1.00       150
   macro avg       1.00      1.00      1.00       150
weighted avg       1.00      1.00      1.00       150

Exemple: Discussion

Nous avons vu un exemple complet :

  • Chargement des données
  • Sélection d’un classificateur
  • Entraînement du modèle
  • Visualisation du modèle
  • Réalisation d’une prédiction

Exemple: Prise 2

from sklearn.metrics import classification_report, accuracy_score

# Make predictions

y_pred = clf.predict(X)

# Evaluate the model

accuracy = accuracy_score(y, y_pred)
report = classification_report(y, y_pred, target_names=iris.target_names)

print(f'Accuracy: {accuracy:.2f}')
print('Classification Report:')
print(report)

Important

Cet exemple est trompeur, voire même fautif!

Exemple: Exploration

print(f'Dataset Description:\n{iris["DESCR"]}\n')
Dataset Description:
.. _iris_dataset:

Iris plants dataset
--------------------

**Data Set Characteristics:**

:Number of Instances: 150 (50 in each of three classes)
:Number of Attributes: 4 numeric, predictive attributes and the class
:Attribute Information:
    - sepal length in cm
    - sepal width in cm
    - petal length in cm
    - petal width in cm
    - class:
            - Iris-Setosa
            - Iris-Versicolour
            - Iris-Virginica

:Summary Statistics:

============== ==== ==== ======= ===== ====================
                Min  Max   Mean    SD   Class Correlation
============== ==== ==== ======= ===== ====================
sepal length:   4.3  7.9   5.84   0.83    0.7826
sepal width:    2.0  4.4   3.05   0.43   -0.4194
petal length:   1.0  6.9   3.76   1.76    0.9490  (high!)
petal width:    0.1  2.5   1.20   0.76    0.9565  (high!)
============== ==== ==== ======= ===== ====================

:Missing Attribute Values: None
:Class Distribution: 33.3% for each of 3 classes.
:Creator: R.A. Fisher
:Donor: Michael Marshall (MARSHALL%PLU@io.arc.nasa.gov)
:Date: July, 1988

The famous Iris database, first used by Sir R.A. Fisher. The dataset is taken
from Fisher's paper. Note that it's the same as in R, but not as in the UCI
Machine Learning Repository, which has two wrong data points.

This is perhaps the best known database to be found in the
pattern recognition literature.  Fisher's paper is a classic in the field and
is referenced frequently to this day.  (See Duda & Hart, for example.)  The
data set contains 3 classes of 50 instances each, where each class refers to a
type of iris plant.  One class is linearly separable from the other 2; the
latter are NOT linearly separable from each other.

.. dropdown:: References

  - Fisher, R.A. "The use of multiple measurements in taxonomic problems"
    Annual Eugenics, 7, Part II, 179-188 (1936); also in "Contributions to
    Mathematical Statistics" (John Wiley, NY, 1950).
  - Duda, R.O., & Hart, P.E. (1973) Pattern Classification and Scene Analysis.
    (Q327.D83) John Wiley & Sons.  ISBN 0-471-22361-1.  See page 218.
  - Dasarathy, B.V. (1980) "Nosing Around the Neighborhood: A New System
    Structure and Classification Rule for Recognition in Partially Exposed
    Environments".  IEEE Transactions on Pattern Analysis and Machine
    Intelligence, Vol. PAMI-2, No. 1, 67-71.
  - Gates, G.W. (1972) "The Reduced Nearest Neighbor Rule".  IEEE Transactions
    on Information Theory, May 1972, 431-433.
  - See also: 1988 MLC Proceedings, 54-64.  Cheeseman et al"s AUTOCLASS II
    conceptual clustering system finds 3 classes in the data.
  - Many, many more ...

Exemple: Exploration

print(f'Feature Names: {iris.feature_names}')
Feature Names: ['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']
print(f'Target Names: {iris.target_names}')
Target Names: ['setosa' 'versicolor' 'virginica']
print(f'Data Shape: {iris.data.shape}')
Data Shape: (150, 4)
print(f'Target Shape: {iris.target.shape}')
Target Shape: (150,)

Exemple: Utilisant Pandas

import pandas as pd

# Create a DataFrame

df = pd.DataFrame(iris.data, columns=iris.feature_names)
df['species'] = iris.target

Exemple: Utilisant Pandas (suite)

# Display the first few rows of the DataFrame

print(df.head())
   sepal length (cm)  sepal width (cm)  petal length (cm)  petal width (cm)  \
0                5.1               3.5                1.4               0.2   
1                4.9               3.0                1.4               0.2   
2                4.7               3.2                1.3               0.2   
3                4.6               3.1                1.5               0.2   
4                5.0               3.6                1.4               0.2   

   species  
0        0  
1        0  
2        0  
3        0  
4        0  

Exemple: Utilisant Pandas (suite)

# Summary statistics

print(df.describe())
       sepal length (cm)  sepal width (cm)  petal length (cm)  \
count         150.000000        150.000000         150.000000   
mean            5.843333          3.057333           3.758000   
std             0.828066          0.435866           1.765298   
min             4.300000          2.000000           1.000000   
25%             5.100000          2.800000           1.600000   
50%             5.800000          3.000000           4.350000   
75%             6.400000          3.300000           5.100000   
max             7.900000          4.400000           6.900000   

       petal width (cm)     species  
count        150.000000  150.000000  
mean           1.199333    1.000000  
std            0.762238    0.819232  
min            0.100000    0.000000  
25%            0.300000    0.000000  
50%            1.300000    1.000000  
75%            1.800000    2.000000  
max            2.500000    2.000000  

Exemple: Utilisant Seaborn

import seaborn as sns

# Map target values to species names

df['species'] = df['species'].map({0: 'setosa', 1: 'versicolor', 2: 'virginica'})

# Pairplot using seaborn

sns.pairplot(df, hue='species', markers=["o", "s", "D"])
plt.suptitle("Pairwise Scatter Plots of Iris Features", y=1.02)
plt.show()

Exemple: Utilisant Seaborn

Exemple: Ensemble d’entraînement et ensemble de test

from sklearn.model_selection import train_test_split

# Split the dataset into training and testing sets

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=7)

Exemple: Créer un nouvel arbre

# Train the model
clf = tree.DecisionTreeClassifier()

Exemple: Entraîner le modèle

# Train the model
clf.fit(X_train, y_train)

Exemple: Prédictions

# Make predictions
y_pred = clf.predict(X_test)

Exemple: mesurer la performance

from sklearn.metrics import classification_report, accuracy_score
# Make predictions

# Evaluate the model
accuracy = accuracy_score(y_test, y_pred)
report = classification_report(y_test, y_pred, target_names=iris.target_names)

print(f'Accuracy: {accuracy:.2f}')
print('Classification Report:')
print(report)

Exemple: mesurer la performance

Accuracy: 0.90
Classification Report:
              precision    recall  f1-score   support

      setosa       1.00      1.00      1.00         7
  versicolor       0.91      0.83      0.87        12
   virginica       0.83      0.91      0.87        11

    accuracy                           0.90        30
   macro avg       0.91      0.91      0.91        30
weighted avg       0.90      0.90      0.90        30

Marcel Turcotte

Marcel.Turcotte@uOttawa.ca

École de science informatique et de génie électrique (SIGE)

Université d’Ottawa