TP2KNN
TP2KNN
TP2KNN
Machine learning
TP2 : K plus proches voisins
Consigne :
Nous allons étudier un algorithme d'apprentissage supervisé assez simple : l'algorithme des "k
plus proches voisins" (en anglais "k nearest neighbors" : knn). En apprentissage supervisé,
un algorithme reçoit un ensemble de données étiquetées avec des valeurs de sorties
correspondantes sur lequel il va pouvoir s’entraîner et définir un modèle de prédiction.
Cet algorithme pourra par la suite être utilisé sur de nouvelles données afin de prédire
leurs valeurs de sorties.
L’exécution de l’algorithme des K plus proches voisins suit les étapes ci-après :
Dans l’exemple suivant, on a trois classes (w1, w2, w3) et le but est de trouver la classe de
l’exemple inconnu x. On choisit k=5, parmi les 5 plus proches voisins de x, la majorité (4)
appartiennent à w1 on déduit que la classe de x est w1.
ENSEIGNANTE : MME HOUDA ANOUN
Nous allons utiliser un jeu de données relativement connu dans le monde du machine learning : le jeu
de données "iris". On peut classer les iris en 3 espèces : « iris setosa », « iris virginica » et « iris
versicolor ».
Dans le dataset « iris.csv » envoyé par mail, vous trouverez les données de 50 iris :
Récupérer le fichier iris.csv envoyé par mail et placer le dans un dossier MachineLearning sur
votre Bureau.
import pandas
import matplotlib.pyplot as plt
#visualisation
#pour avoir un repère orthonormé
plt.axis('equal')
#tracer en vert les points correspondants aux iris d’espèce
Setosa, en rouge les points associés aux iris Versicolor et en
bleu les points associés aux iris Virginica
plt.scatter(x[lab == 0], y[lab == 0], color='g',
label='setosa')
plt.scatter(x[lab == 1], y[lab == 1], color='r',
label='versicolor')
plt.scatter(x[lab == 2], y[lab == 2], color='b',
label='virginica')
#nommer les axes
plt.xlabel('longueur des pétales')
plt.ylabel('largeur des pétales')
plt.legend()
plt.show()
model.fit(X.to_numpy(),lab)
A FAIRE :
Ecrire un programme Python, qui permet de lire au clavier la longueur et la largeur des
pétales d’un nouvel IRIS et qui affiche l’espèce de ce dernier comme suit :
Longueur ? : 4
Largeur ? 1.7
Votre Iris de longueur de pétale 4 cm et de largeur de pétale 1.7cm fait partie de l’espèce
VERSICOLOR
3. Evaluation du modèle
Afin d’évaluer la performance du modèle et calculer son taux de bonne prédictions, il faut
commencer par répartir le data-set initial en deux jeux de données : un jeu de données utilisé
pour l’apprentissage du modèle et un autre jeu de donnée utilisé pour l’évaluation du modèle.
Pour cela, on utilise la fonction train_test_split, par défaut, le data_set d’entrainement
comprend 75% des données du data-set d’origine.
X=iris[['petal_length', 'petal_width']]
y=iris['species']
#repartition du data-set en deux : data-set d’entrainement
(x_train, y_train) et data-set de test (x_test, y_test)
x_train, x_test, y_train, y_test = train_test_split(X, y,
random_state=0)
Récupérer le data-set fruit_data_with_colors.txt envoyé par mail. Nous allons utiliser les
variables prédictives (mass, width et height) pour prédire la catégorie d’un fruit parmi ces
trois catégories :
1 : pomme
2 : mandarine
3 : orange
4 : citron
8. Calculer le taux de bonnes prédictions du modèle sur le jeu de données de test. Qu’en
déduisez-vous ?