Cours: Isabelle Guyon guyon@clopinet.com
TP: Nicolas M. Thiéry Nicolas.Thiery@u-psud.fr
Hands-On Machine Learning with Scikit-Learn and TensorFlow, O'Reilly (Aurélien Géron); nouvelle édition 11 octobre
Anglais | Français | Presque synonymes |
---|---|---|
feature | variable | caractéristique, colonne, attribut |
sample | exemple | ligne, échantillon, pattern |
table | tableau | matrice |
target | objectif | label, vérité terrain, ground truth, output,… |
Comme en Info 111, nous utiliserons l'environnement interactif Jupyter, mais cette fois avec le langage de programmation Python.
Applications -> Terminal
Info114/HW1
Préparez votre dossier avec les commandes suivantes:
mkdir ~/Info114
cd ~/Info114
Récupérez le sujet de TP:
info-114 fetch HW1
Si jamais il y a une erreur command info-114 not found
, utiliser à la place (ici et plus loin):
/public/info-114/bin/info-114
Ouvrez Jupyter
info-114 jupyter notebook
Note: en salle de TP, vous pouvez comme la semaine dernière récupérer les sujets depuis Jupyter avec:
Assignment -> cours Info114 -> fetch sur HW1
00-tableau.ipynb:
01-images.ipynb:
Pour extraire le canal des rouges, faire
R = M[:,:,0] * 1.
Pour que les valeurs soient stockées en nombre flottants. Sinon elles sont stockées sur es entiers courts (entre 0 et 255), et les calculs arithmétiques vont déborder. Par exemple, on aurait: .
Vous ne pouvez pas modifier l'exemple donné, mais vous pouvez insérer une nouvelle cellule
(Insérer -> Cellule -> après)
avant G+R, le texte devrait être: «Il est maintenant facile de faire de l'arithmétique sur tous les pixels. Par exemple la somme des intensités en vert et rouge s'écrit:»
Ouvrez les notes du cours (voir ci-dessus)
Récupérez le sujet comme pour le TP 1 (remplacer HW1
par HW2
)
Ouvrez la feuille de travail data_analysis
et suivez les instructions qui s'y trouvent.
Les liens vers les feuilles foreground-extractiono et feature-extraction sont cassés (_
au lieu de -
); ouvrir les feuilles depuis le navigateur de fichier.
couleurs de fond, …
Ouvrez les notes du cours (voir ci-dessus)
Récupérez le sujet comme pour le TP 1 (remplacer HW1
par HW3
)
Ouvrez la feuille de travail data_analysis
puis project_selection
et suivez les instructions qui s'y trouvent.
ls
plutôt que glob.glob
. Ou alors importer glob.glob
RL_data.csv
-> RE_data.csv
pd.read_csv
.csv
. Il faut donc importer seulement les fichiers se terminant par _data.csv
Notes pour l'année prochaine:
Téléchargez le dossier commun pour le projet:
cd ~/Info114
curl -s http://Nicolas.Thiery.name/Project.tgz -o - | tar zxvf -
Pour chaque sujet de projet il y a un sous répertoire (par exemple Project/2.segmentation
, avec du code et éventuellement un jeu de donnée spécifique. En sus, il y a du code commun dans Project/utilities
.
Le jeu de données principal du projet est trop gros pour que chacun d'entre vous en fasse une copie. Au lieu de cela, il est installé une fois pour toute sur le système, comme les logiciels du cours (il est en cours d'installation sur JupyterHub).
Pour y accéder depuis Python, vous utiliserez la commande suivante qui vous indiquera dans quel dossier le jeu de donnée est installé:
import os.path
data_dir = os.path.join(os.path.split(os.path.split(sys.executable)[0])[0], 'share', 'info-114-data', 'Project')
En salle de TP, data_dir
vaudra:
/public/info-114/miniconda3/envs/info-114/share/info-114-data/Project/
Ensuite vous pourrez, par exemple, remplacer:
meta_data_dir = '../mini-dataset/meta-data'
par:
meta_data_dir = os.path.join(data_dir,'/meta-data')
Si vous souhaitez vraiment télécharger le jeu de données (par exemple pour travailler sur colab), vous pouvez faire:
git clone https://gitlab.u-psud.fr/Info114/Data.git
Se préparer À L'AVANCE pour des questions de cours qui viennent des QUIZ 1 et 2:
Nous envoyer A L'AVANCE (avant le 30 juin à 23h59) 10 diapos présentant le projet effectué, selon le schema général fourni en classe par email à Nicolas.Thiery@u-psud.fr ET iguyon@lri.fr
LES ÉTUDIANTs N’AYANT PAS FOURNI LEURS DIAPOS A L’AVANCE AURONT ZERO EN DEUXIEME SESSION.
Les binomes doivent chacun et INDIVIDUELLEMENT préparer une présentation.
Cas particulier étudiant arrivé en cours de semestre: Préparer une présentation de 10 diapos expliquant les méthodes suivantes illustrées sur la page: https://scikit-learn.org/stable/auto_examples/classification/plot_classifier_comparison.html#sphx-glr-auto-examples-classification-plot-classifier-comparison-py https://scikit-learn.org/stable/auto_examples/classification/plot_classifier_comparison.html#sphx-glr-auto-examples-classification-plot-classifier-comparison-py
Titre (1 slide, indiquer son nom)
Introduction (1 slide): contexte, qu’est-ce qu’un problème de classification; exemples de la vie réélle
Data (1 slide): Description des données montrée sur la page web citée ci-dessus; ce sont des exemples jouets en 2 dimensions; pourquoi ces exemples sont-ils interessants? Que représentent les figures (hint: voir scatter plots)
Nearest neighbors (2 slides)
Decision tree (2 slides)
Neural net (2 slides)
Pour chacun des 3 algorithmes ci-dessus:
Comme pour Info 111, vous pourrez travailler sur vos fiches de TP et projet à distance en utilisant le serveur JupyterHub de Paris Sud. Voir les instructions pour Info 111, en ajustant 111 par 114.
(pour les expérimentés)
Suivre les instructions similaires pour le cours Info111, en utilisant le dépot git suivant à la place d'Info111-notebooks
:
https://gitlab.u-psud.fr/Info114/sujets
Vous trouverez ci-dessous quelques notes à propos du langage de programmation Python
;
entre les instructionsAffectations:
x = 42
s = "Bonjour!"
f = 3.14159
Un if
en C++:
if ( x < 10 ) {
...;
...;
} else {
...;
}
Le même if
en Python:
if x < 10:
...
...
else:
...
Une boucle for en C++:
for (int i = 0; i < 10 ; i++) {
cout << i << endl;
}
La même boucle for
en Python:
for i in range(0, 10):
print(i)
Les compréhensions en Python: comment construire des listes avec une syntaxe proche des mathématiques. Essayez les commandes suivantes:
range(5, 10)
range(5, 95, 10)
[ 2*i for i in range(0, 10) ]
[ i**2 for i in range(0, 10) ]
Coluhgvmn 1 | Column 2 | Column 3 |
---|---|---|
Text | Text | Text |
def cercle(x,y,r):
return Point([x,y]).buffer(r).boundary
cercle(0,0,1)
cascaded_union([cercle(0,0,1), cercle(0,0,2), cercle(0,0,3)])
cascaded_union( [ cercle(0,0,r) for r in range(10) ])
from math import sin, cos
sin(3.14)
En C++:
int f(int x, int y, int r) {
return x + y - r
}
En Python:
def f(x, y, r):
return x + y - r