Vous êtes sur la page 1sur 3

Intelligence Artificielle M2 Génie physiologique, biotechnologique & informatique

TP3 : Déploiement et données massives


Objectif(s)
Le logiciel Orange est une ressource très utile à des fins de pré-étude ou de simulation sur des petits
jeux de données. Cependant de nombreux problèmes d’apprentissage automatique nécessitent l’ana-
lyse et le traitement de données massives, tant par leur dimensionnalité que par le nombre d’exemples
fournis. Cette situation impose souvent l’utilisation de clusters de calcul spécialisés pour la phase
d’apprentissage, lesquels ne disposent pas d’interface graphique et sont destinés à être accessibles uni-
quement à distance en ligne de commande. Cette séance a pour objectif de vous faire développer un
workflow d’apprentissage supervisé pour un système de calcul déporté. Vous utiliserez pour ceci le
langage Python et les bibliothèques Orange 1 et Scikit-Learn 2 .

Exercice 1 : Utilisation de Orange en langage script


Un avantage du logiciel Orange tient au fait qu’au delà de son interface graphique, il soit utilisable
comme une bibliothèque logicielle classique. Une introduction à son utilisation à partir de scripts est
proposée par l’éditeur sur la page https://docs.biolab.si//3/data-mining-library/.

1. Lancez l’éditeur Python de votre choix (par exemple Spyder) et créez un nouveau script .py.
Celui-ci devra importer le package Orange, ouvrir le jeu de données wine.tab, et afficher les noms
de l’ensemble de ses attributs, le nom de la classe cible, et le nombre d’échantillons.
2. Créez maintenant une instance de la classe objet Orange.classification.TreeLearner pour
apprendre un classifieur basé sur un arbre de décision. Vous testerez la qualité de celui-ci avec
une validation croisée par la méthode des k-folds 3 (k = 2). Quels sont les scores AUC et CA
obtenus ?
3. Lancez à présent le logiciel Orange avec son interface graphique et créez un workflow permettant
de réaliser le même test à l’aide des modules File, Tree, et Test and Score. Les résultats obte-
nus sont-ils comparables ? Ajoutez une ligne print(learner.params) (avec learner l’instance
de classe TreeLearner) à votre script .py : qu’observez-vous ?
4. Modifiez maintenant votre script pour apprendre un classifieur de type forêt aléatoire (paramétré
par défaut) à partir du jeu de données. Vous sauverez celui-ci sous forme de fichier à l’aide de la
fonction suivante :
import pickle

def orange_savemodel ( model , path ) :


with open ( path , ’ wb ’) as f :
pickle . dump ( model , f )

Modifiez votre workflow dans la version graphique de Orange afin d’ajouter les modules
Model->Load Model et Evaluate->Predictions comme suit :
1. https://orange.biolab.si/
2. https://scikit-learn.org/
3. https://docs.biolab.si//3/data-mining-library/reference/evaluation.testing.html

Page 1/3
Intelligence Artificielle M2 Génie physiologique, biotechnologique & informatique

Chargez le classifieur sauvegardé depuis le script dans le module Load Model puis observez les
scores de prédiction. Que constatez-vous ?
5. Ajoutez maintenant ces lignes au script .py :
import numpy as np

y_actual = data . Y
y_predictions = np . array ( [ classifier ( data ) ] )
res = Orange . evaluation . testing . Results ( data , actual = y_actual , predicted =
y_predictions )
print ( " Accuracy : " , Orange . evaluation . scoring . CA ( res ) )
print ( " AUC : " , Orange . evaluation . scoring . AUC ( res ) )

(la variable classifier correspond au classifieur actuel et la variable data aux données du fi-
chier wine.tab)

Exécutez-le, et observez les résultats. Qu’en pensez-vous ?


6. Utilisez la fonction Orange.evaluation.testing.sample et la méthode Orange.data.Table.save
pour évaluer correctement la qualité de votre prédicteur. Elle s’utilisent comme suit :
data_test , data_train = Orange . evaluation . testing . sample ( data , n = 0 . 3 )
data_train . save ( ’ wine_train . tab ’)
data_test . save ( ’ wine_test . tab ’)

Testez à nouveau votre script. Votre critère de performance sera le score CA. Adaptez le workflow
Orange pour obtenir les mêmes résultats. Conclusion(s) ?

Exercice 2 : Utilisation de la bibliothèque scikit-learn


La bibliothèque Orange repose sur l’utilisation d’une autre bibliothèque réputée en apprentissage
automatique : scikit-learn. Vous allez reproduire, en utilisant non plus la bibliothèque Orange,
mais uniquement scikit-learn, le test de performance que vous aviez réalisé sur le jeu de données
heart-disease. Vous aurez besoin de charger le fichier heart-disease.tab ; nous vous proposons de le
faire à l’aide de la bibliothèque pandas 4 comme suit :

4. https://pandas.pydata.org/

Page 2/3
Intelligence Artificielle M2 Génie physiologique, biotechnologique & informatique

import pandas as pd

def orange_loadtab ( path ) :


""" usage : X , y = orange_loadtab ( path ) """

data = pd . read_table ( path )


dtypes = data . values [0 , : ]
data = data . drop ( index = 0 )
data = data . dropna ()

for attribute , dtype in zip ( data . columns , dtypes ) :


if dtype = = ’ continuous ’:
data = data . astype ( { attribute : np . float } )
else :
encoder = sklearn . preprocessing . LabelEncoder ()
data [ attribute ] = encoder . fit_transform ( data [ attribute ] )

return data . values [ : ,: - 1 ] , data . values [ : ,- 1 ]

1. Réalisez le test de performance demandé. Pour rappel, il consiste à comparer les performances
de classifieurs basés sur les modèles d’apprentissages suivants : machines à vecteurs de supports,
boosting adaptatif, réseaux de neurones artificiels, arbre de décision, et forêts d’arbres décision-
nels. La métrique d’évaluation utilisée sera la précision de classification (accuracy), calculée à
l’aide de la méthode des k-folds (k = 5). Votre test basé sur scikit-learn est-il conforme aux
résultats obtenus avec Orange ? Quel modèle obtient les meilleurs résultats ?
2. Changez les paramètres de votre classifieur SVM de sorte qu’il n’utilise pas d’astuce du noyau,
et relancez l’apprentissage. Quelle est l’incidence de ce changement ?

Page 3/3

Vous aimerez peut-être aussi