Le TP devra être rendu en deux parties: Une première contenant les
sources de vos différents codes, et le fichier reponse.t2t
au
format txt2tags. Ce fichier contiendra une explication (en 2-3 lignes
maximum) des réponses aux deux premières questions, ainsi que les valeurs
des différents tests (voir plus loin).
Le TP est à rendre sur arche
Les fichiers nécessaires pour le TP sont disponibles ici
Le professeur a mené une expérience consistant à envoyer la commande
ping
à plusieurs machines, et à observer leur temps de réponse à
l'aide du champ TTL du paquet.
Le fichier TTL2
contient, pour chaque machine, le TTL du paquet
reçu, ainsi qu'un indicateur de sa zone géographique. L'indicateur est
à comprendre comme ceci:
Europe | 0 |
Afrique | 1 |
Amérique du Nord | 2 |
Amérique du Sud | 3 |
Asie | 4 |
Océanie | 5 |
Les données ont été filtrées pour contenir uniquement des paquets provenant de machines Linux et Windows (pas de Cisco).
Vous trouverez dans les fichiers Randa
,Randb
,Randc
trois
générateurs pseudo aléatoires disposant
tous trois d'une fonction nextDouble
. Faites passer les tests
suivants à ces trois générateurs
(int) (3*r.nextDouble())
pour obtenir un
entier valant 0, 1 ou 2, on tire successivement 10000 paires
d'entiers (a,b) et on recense dans une matrice 3x3 combien de fois chacune
des paires a été obtenue.
Le fichier training
contient 200 images de chiffres manuscrits,
qui sont des 3 ou des 7.
Chaque chiffre est représenté par une image de taille 28x28, donc par
un tableau de 784 cases.
Le fichier KNeighbour.java
vous permet d'accéder à ce fichier
comme deux tableaux. Le tableau images[i][j]
, qui contient la case
numéro j de l'image numéro i, et le tableau labels[i]
qui contient
le label (3 ou 7) de l'image numéro i.
Une méthode statistique classique appelée k-plus-proches-voisins pour pouvoir savoir si un chiffre
manuscrit est un 3 ou un 7 fonctionne de la manière suivante:
partant d'une image de 28x28, on cherche les k images les plus proches
dans le fichier training
, et on cherche parmi ces k images s'il
s'agit de 3 ou de 7, et on renvoie le chiffre qui apparait le plus
souvent.
Pour calculer à quel point deux images x et y (correspondant à des tableaux de 784 cases) sont proches, on calcule la somme de (x[i]-y[i])^2 pour i allant de 0 à 783.
testing
sont des 3 ou des 7.
Si vous n'avez pas le temps, faites juste la méthode dans le cas k = 1.
Note: Le fichier KNeighbour.java
vous est fourni, il faut
uniquement remplir la fonction guess
Note: le fichier image.py
qui vous est fourni vous permet de
visualiser les images. Si vous tapez ./image.py testing toto.pgm 5
,
la 5ème image (on commence à compter à 0) du fichier testing
sera copiée
dans le fichier toto.pgm
et pourra être visualisée (par exemple avec
la commande display toto.pgm
ou dans votre navigateur de fichiers).
Note: les données proviennent de la base de données MNIST