0% ont trouvé ce document utile (0 vote)
102 vues4 pages

TP3 Classification

Le document présente un TP sur la classification binaire et multi-classes en utilisant des algorithmes comme SGDClassifier et K-NN. Il décrit les étapes de génération de données, d'entraînement de modèles et de visualisation des résultats. Enfin, il illustre l'application de ces techniques à des problèmes pratiques tels que la détection de spam et la reconnaissance de chiffres manuscrits.

Transféré par

moritnn
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

Thèmes abordés

  • voisin le plus proche,
  • analyse de données,
  • données aléatoires,
  • évaluation de modèle,
  • données d'apprentissage,
  • algorithme K-NN,
  • données de test,
  • frontière de décision,
  • précision du modèle,
  • données d'entrée
0% ont trouvé ce document utile (0 vote)
102 vues4 pages

TP3 Classification

Le document présente un TP sur la classification binaire et multi-classes en utilisant des algorithmes comme SGDClassifier et K-NN. Il décrit les étapes de génération de données, d'entraînement de modèles et de visualisation des résultats. Enfin, il illustre l'application de ces techniques à des problèmes pratiques tels que la détection de spam et la reconnaissance de chiffres manuscrits.

Transféré par

moritnn
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

Thèmes abordés

  • voisin le plus proche,
  • analyse de données,
  • données aléatoires,
  • évaluation de modèle,
  • données d'apprentissage,
  • algorithme K-NN,
  • données de test,
  • frontière de décision,
  • précision du modèle,
  • données d'entrée

Université Moulay Ismail AU 2024-2025

FS Meknès Département d’Informatique


Parcours d’excellence : SDIA – S6

TP 3: Classification

1. Développement d’un programme de classification binaire

La première étape consiste à générer des données aléatoires avec la


fonction make_classification.

# On va commencer par importer les modules habituels :


import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_classification
from sklearn.linear_model import SGDClassifier

# Génération de données aléatoires : 100 exemples, 2 classes, 2


features x0 et x1
np.random.seed(1)
x, y = make_classification(n_samples=100,n_features=2,
n_redundant=0, n_informative=1,
n_clusters_per_class=1)

# Visualisation des données


plt.figure(num=None, figsize=(8, 6))
plt.scatter(x[:,0], x[:, 1], marker = 'o', c=y, edgecolors='k')
plt.xlabel('X0')
plt.ylabel('X1')
x.shape

(100, 2)

Deuxième étape on doit créer un modèle en utilisant SGDClassifier.

# Génération d'un modele en utilisant la fonction cout 'log'


pour Logistic Regression
model = SGDClassifier(max_iter=1000, eta0=0.001, loss='log')

model.fit(X, y)
print('score:', model.score(x, y))

Troisième étape, une fois le modèle entraîné, on peut afficher sa


frontière de décision avec le code suivant :
Université Moulay Ismail AU 2024-2025
FS Meknès Département d’Informatique
Parcours d’excellence : SDIA – S6

# Visualisation des données
h = .02
colors = "bry"
x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, h),
np.arange(y_min, y_max, h))

Z = model.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)
cs = plt.contourf(xx, yy, Z, cmap=plt.cm.Paired)
plt.axis('tight')

for i, color in zip(model.classes_, colors):


idx = np.where(y == i)
plt.scatter(X[idx, 0], X[idx, 1], c=color,
cmap=plt.cm.Paired, edgecolor='black', s
=20)



On peut réutiliser ce code sur nos propres données pour prédire si un


email est un spam ou encore si une tumeur est maligne ou non.
Université Moulay Ismail AU 2024-2025
FS Meknès Département d’Informatique
Parcours d’excellence : SDIA – S6

2. L’Algorithme de Nearest Neighbour : classification multi-


classes
L’algorithme de Nearest Neighbour (le voisin le plus proche) permet de
résoudre des problèmes de classification à plusieurs classes de façon
simple et très efficace.

Vision par ordinateur avec K-NN


Développement d’un programme capable de reconnaître un chiffre entre
0 et 9 écrits à la main. Voici les chiffres que la machine peut reconnaitre.

Vous pouvez charger ces données depuis Sklearn (la librairie contient des
Datasets de base).
Import des libraires habituelles :
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_digits
from sklearn.neighbors import KNeighborsClassifier

Le code ci-dessous montre un exemple de chiffre présent dans le Dataset,


c’est un exemple du chiffre 0.
Le Dataset comprend 1797 exemples, c’est-à-dire1797 images, et que
chaque exemple contient 64 features. Il s’agit de la valeur de chacun des
64 pixels qui forment les images.

Quand on soumet un nouveau chiffre à la machine, l’algorithme de K-NN


trouve l’exemple du Dataset qui ressemble le plus à notre chiffre, basé
sur le voisin le plus proche pour la valeur de chaque pixel.

# importons une base de données de chiffre


digits = load_digits()
Université Moulay Ismail AU 2024-2025
FS Meknès Département d’Informatique
Parcours d’excellence : SDIA – S6
X = digits.data
y = digits.target

print('dimension de X:', X.shape)

dimension de X: (1797, 64)

L’étape suivante consiste à entraîner le modèle de Nearest Neighbour.


En exécutant le code suivant vous devriez obtenir un score de 99%, ce
qui signifie que votre modèle reconnaitra le bon chiffre à 99%. Ceci
représente un très bon pourcentage.

# visualisons un de ces chiffres


plt.imshow(digits['images'][0], cmap = 'Greys_r')

# Entraînement du modele
model = KNeighborsClassifier()
model.fit(X, y)
model.score(X, y)
0.9905397885364496

Après l’entrainement on va tester une image au hasard et voyons si la


machine arrive à identifier le bon chiffre.
Exemple on va tester la 100ième image de notre Dataset, qui est un 4…
résultat : la machine a su la reconnaître !

#Test du modele
test = digits['images'][100].reshape(1, -1)
plt.imshow(digits['images'][100], cmap = 'Greys_r')
model.predict(test)

Vous aimerez peut-être aussi