Algorithme K-
Nearest
Neighbors (KNN)
Analyse et
Implémentation
Plan :
01 Theory lesson
You can describe the topic of the section
here
02 Features of the topic
You can describe the topic of the section
here
03 Tips
You can describe the topic of the section
here
04 Practical exercise
You can describe the topic of the section
here
Qu'est-ce que KNN ?
• Méthode d'apprentissage supervisé.
• Prédit la classe d'un échantillon en fonction des 'k' voisins les plus
proches.
• Basé sur la distance (euclidienne, manhattan, etc.) pour identifier les
voisins.
Description de la Base de Données
• Structure de la Base de Données :
La base de données contient plusieurs colonnes, dont :
température : Valeurs de température (en degrés, probablement Celsius).
pouls : Fréquence cardiaque (en battements par minute).
oxygène : Taux d'oxygène dans le sang (en pourcentage).
glycémie : Taux de glucose dans le sang (en mg/dL).
tension : Tension artérielle (en mmHg).
label : Variable cible indiquant la classe (0 ou 1), probablement liée à la
présence ou à l'absence
d'une maladie.
• Valeurs Manquantes :
Il y a 52 lignes avec des valeurs manquantes dans l'ensemble des colonnes.
Cela
peut poser des défis lors de l'analyse, car les algorithmes d'apprentissage
automatique ne peuvent pas gérer les valeurs manquantes directement.
—
Chargement des données
import pandas as pds # Importation de la bibliothèque pandas sous le nom 'pds’
dataset = pds.read_csv('/content/drive/MyDrive/maladie_observations.csv’) #
Chargement du fichier CSV dans un DataFrame
[Link]().sum() # Vérification du nombre de valeurs manquantes dans chaque
colonnedataset = [Link]() # Suppression des lignes contenant des valeurs
manquantes
Visualisation des données
import seaborn as sns # Importation de la bibliothèque Seaborn pour la visualisation des données
import [Link] as plt # Importation de Matplotlib pour afficher les graphiques
[Link](x='label', data=dataset) # Création d'un graphique en barres comptant les occurrences de
chaque catégorie dans la colonne 'label'
[Link]() # Affichage du graphique
Préparation des données
X = dataset[['temperature', 'pouls', 'oxygene', 'glycemie', 'tension']] # Sélection des
caractéristiques (features) utilisées pour l'entraînement du modèle
y = dataset['label'] # Définition de la variable cible (label) pour la classification
from sklearn.model_selection import train_test_split # Importation de la fonction pour
diviser les 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.4, random_state=101)
# Division des données :
# - 60% pour l'entraînement
# - 40% pour le test
# - random_state=101 permet de reproduire la même répartition à chaque exécution
Normalisation des données
from [Link] import StandardScaler # Importation du module
pour la normalisation des données
scaler = StandardScaler() # Création d'un objet StandardScaler pour
normaliser les données
[Link](X_train) # Apprentissage des paramètres de normalisation
(moyenne et écart-type) sur l'ensemble d'entraînement
X_train_norm = [Link](X_train) # Transformation des données
d'entraînement en appliquant la normalisation
X_test_norm = [Link](X_test) # Transformation des données de
test en utilisant les mêmes paramètres appris sur X_train
Entraînement du modèle KNN
● from [Link] import KNeighborsClassifier # Importation du modèle de
classification KNN (K-Nearest Neighbors)
● knn = KNeighborsClassifier(n_neighbors=1) # Création d'un modèle KNN avec 1 voisin
● [Link](X_train_norm, y_train) # Entraînement du modèle sur les données normalisées
d'entraînement
Prédiction et évaluation
• y_pred = [Link](X_test_norm) # Prédiction des classes sur les données de
test normalisées
from sklearn import metrics # Importation du module metrics pour évaluer les
performances
# Affichage du rapport de classification, qui donne des métriques comme la précision, le
rappel et le F1-score
• print(metrics.classification_report(y_test, y_pred))
# Affichage de la matrice de confusion pour voir les vrais positifs, faux positifs, vrais
négatifs, et faux négatifs
• print(metrics.confusion_matrix(y_test, y_pred))
Algorithme
Support
Vector
Machine
(SVM)
Analyse et Implémentation
Qu'est-ce que SVM ?
• Méthode d'apprentissage supervisé.
• Trouve l'hyperplan qui sépare les classes avec le plus grand marge.
• Utilisé pour la classification et la régression.
Chargement des données
import pandas as pds # Importation de la bibliothèque pandas sous le nom 'pds’
dataset = pds.read_csv('/content/drive/MyDrive/maladie_observations.csv’) # Chargement du
fichier CSV dans un DataFrame
[Link]().sum() # Vérification du nombre de valeurs manquantes dans chaque
colonnedataset = [Link]() # Suppression des lignes contenant des valeurs manquantes
Préparation des données
● x = [Link][:, 0:-1].values # Sélection des caractéristiques (toutes les colonnes sauf la
dernière)
● y = [Link][:, -1].values # Sélection de la cible (la dernière colonne)
● from sklearn.model_selection import train_test_split # Importation de la fonction pour
diviser les données
# Division des données en ensembles d'entraînement et de test (80% pour l'entraînement et 20%
pour le test)
● x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=42)
Entraînement du modèle SVM
● from [Link] import SVC # Importation du classificateur SVM avec un noyau linéaire
● classifier = SVC(kernel='linear', random_state=0) # Création du classificateur SVM avec
noyau linéaire
● [Link](x_train, y_train) # Entraînement du classificateur sur les données
d'entraînement
Prédiction et évaluation
• y_pred = [Link](x_test) # Prédiction des classes sur les données de test avec le
classificateur SVM
• from [Link] import classification_report # Importation du module pour évaluer les
performances
# Affichage du rapport de classification qui fournit des métriques comme la précision, le rappel et le F1-
score
• print(classification_report(y_test, y_pred))
# Affichage de la matrice de confusion qui montre les vrais positifs, faux positifs, vrais négatifs et faux
négatifs
• print(metrics.confusion_matrix(y_test, y_pred))
Matrice de confusion
from [Link] import ConfusionMatrixDisplay # Importation de la classe pour afficher la matrice
de confusion
# Affichage de la matrice de confusion avec les étiquettes des classes ['0', '1']
• cm_display = ConfusionMatrixDisplay(confusion_matrix=confusion_matrix, display_labels=['0', '1'])
# Visualisation de la matrice de confusion sous forme graphique
• cm_display.plot()
Comparaison des Résultats
KNN:
• Précision élevée, rappel parfait pour la classe 1.
• Matrice de confusion montre un excellent classement.
SVM:
• Précision parfaite pour la classe 0, légèrement inférieur pour la classe 1.
• Matrice de confusion montre quelques faux positifs et faux négatifs
Conclusion :
•La sélection de l'algorithme d'apprentissage automatique doit être basée sur les
caractéristiques des données et les objectifs de l'analyse.
•KNN est simple et efficace pour des ensembles de données de petite à moyenne taille.
•SVM est plus robuste et adapté aux données complexes ou volumineuses.
•L'évaluation comparative des algorithmes est essentielle pour optimiser les résultats et
prendre des décisions éclairées en intelligence artificielle.
Merci pour
votre attention