Vous êtes sur la page 1sur 2

TP2 : Perceptron Multi-Couche

Majdoub Manel
Groupes : LSI A03-01, LSI A03-02

Objectif :
Étudier les réseaux de neurones artificiels de type Perceptron Multi-Couche (Multi-
Layer Perceptron MLP). Vous utiliserez la fonction MLPClassifier définie dans le mo-
dule sklearn.neural_network, qui fournit une implémentation du Perceptron Multi-Couche
pour la classification.
MLPClassifier comprend plusieurs paramètres à ajuster tels que le nombre de neurones
pour chaque couche cachée (hidden_layer_sizes) et la fonction d’activation(activation)

1 Exercice 1
1.1 Utilisation de ScikitLearn avec Python 3
On suppose ici que anaconda(3) est installé.Nous utiliserons la librairie ScikitLearn de
Python 3. Nous importons d’abord les librairies utiles :
import numpy as np
import matplotlib
import matplotlib . pyplot as plt

1.2 Expériences de prédiction de cancer de la poitrine


1.2.1 Chargement de la base de données Breast Cancer Data
Pour nos premières expériences, nous allons utiliser la base de données Breast Cancer
Data qui comporte des descriptions de tumeurs avec une étiquette précisant si la tumeur
est maligne ou bénigne. La base de données contient 569 exemples décrits à l’aide de 30
descripteurs.
from sklearn.datasets import load_breast_cancer
cancer = load_breast_cancer ()
print(cancer.feature_names)
print(cancer.target_names)
cancer [’data’].shape
Nous chargeons d’abord la base, puis nous examinons l’un des exemples qu’elle contient.
Nous chargeons les descriptions des exemples dans la variable X et les étiquettes dans la
variable y.
X = cancer [’data’]
y = cancer [’target’]

1.3 Préparation des ensembles d’apprentissage et de test


On divise les données de la base Breast Cancer Data en un ensemble d’exemples pour
l’apprentissage et un autre ensemble, disjoint du premier, d’exemples de test. La fonction
train_test_split de ScikitLearn fait cela pour nous.
from sklearn.model_selection import train_test_split
X_train , X_test , y_train , y_test =train_test_split (X, y)

1
1.4 réparation des données
Les réseaux de neurones apprennent mieux si les données dont préalablement norma-
lisées, c’est-à-dire si on pris soin que la variance des valeurs soit la même pour tous les
descripteurs. Il faut bien sûr veiller à ce que cette même normalisation soit appliquée aux
données de test.
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler() ♯ Fit only to the training data
scaler.fit(X_train )
StandardScaler(copy=True, with_mean=True , with_std=True )
♯ Now apply the transformations to the data :
X_train = scaler.transform(X_train)
X_test = scaler.transform(X_test )

1.5 Premier apprentissage


Nous allons utiliser ici un apprentissage par réseaux de neurones. Nous illustrons ici
avec un réseau de neurones à trois couches cachées, chacune comportant 10 neurones.
from sklearn . neural_network import MLPClassifier
mlp = MLPClassifier ( hidden_layer_sizes =(10 ,10 ,10))
mlp.fit ( X_train , y_train )
MLPClassifier ( activation=’relu’ , alpha =0.0001 ,
batch_size=’ auto ’ , hidden_layer_sizes =(10 , 10 , 10) ,
learning_rate=’ constant ’ ,learning_rate_init =0.001 , max_iter=200, )

1.6 Évaluation de la performance sur l’ensemble de test


Nous allons calculer l’accuracy de notre modèle :
print(’acc for training data : {: .2f }’.format(mlp.score(X_train, y_train)))
print(’acc for test data : {: .2f }’.format(mlp.score(X_test, y_test)))

2 Exercice 2
On s’intéresse cette fois à un problème d’apprentissage plus difficile : l’identification
du chiffre(manuscrit) contenu dans une image. La collection de données digits fournie par
scikitlearn sera utilisée ici.90%de la collection servira pour l’ensemble d’apprentissage (sur
lequel le classifieur sera entrainé) et 10% pour l’ensemble de test (sur lequel la capacité
de généralisation du classifieur sera évaluée) :
from sklearn . datasets import load_digits
dataset = load_digits ()
x = dataset . data ♯ Entrees
y = dataset . target ♯ Resultats attendus
train_x , test_x , train_y , test_y = train_test_split (x , y , test_size =0.1)
Entrainez un classifieur sur(train_x, train_y). Jouez avec les paramètres de MLPClas-
sifier(nombre de couches cachées, nombre de neurones par couche, fonction d’activation,
solver. . . ). Les performances du classifieur peuvent être évaluées sur l’ensemble de test
en termes d’exactitude de classification pour identifier quelle configuration de MLP fonc-
tionne le mieux
from sklearn . metrics import accuracy_score
test_y_pred = classifier.predict ( test_x )♯ Resultats p r e d i t s
print( " Exactitude ␣ : " , accuracy_score ( test_y , test_y_pred ))

Vous aimerez peut-être aussi