Contexte :
Une agence chargée de faire des statistiques sur la population d’un pays a besoin d’un nouveau programme permettant, sur base d’une base de données, de connaître la distance euclidienne entre les profils de différents individus. Cela permettra de déterminer les individus dont le profil est similaire.
Pour ce faire, à partir de la base de données, ils ont extrait une matrice (tableau à deux dimensions) structurée de la manière suivante :
- Chaque ligne i représente un individu en particulier.
- Chaque colonne j représente une variable contenant la valeur d’une caractéristique de chaque individu. Les différentes colonnes sont la taille, le poids, l’âge, …. et représentent son profil.
Cette matrice s’apparente donc à une tableau de données individus-caractéristiques du genre de ce que l’on traite dans le logiciel « Excel ».
L’agence vous a contacté et vous a donné comme mission de trouver une solution à ce problème en traitant ce tableau de données.
Énoncé :
Vous devez coder une fonction dist_euclidienne_indiv(M)
qui prend en entrée une matrice M de taille n x m. Cette matrice contient n lignes représentant chacune un individu et chaque individu est représenté par m variables (caractéristiques). Ces variables sont par exemple l'âge, le poids, la taille, … et sont représentées par des floats. Votre fonction doit retourner une nouvelle matrice de taille n x n qui contient, pour chaque élément [i][j], la distance euclidienne entre les individus i et j. On suppose que la matrice donnée en input contient au moins un individu. La fonction renvoie donc une nouvelle matrice contenant les distances entre paires d’individus.
Exemple :
M = [[1.1, 2.5, 6.8, 7.8], [1.4, 2.9, 6.4, 7.9], [0.8, 2.1, 7.0, 7.1]] dist_euclidienne_indiv(M) # retourne [[0, 0.65, 0.88], # [0.65, 0, 1.41], # [0.88, 1.41, 0]]
Rappel de la distance euclidienne :
Soit une matrice M de taille n x m (n individus et m variables).
Soient deux vecteurs i et j de taille m représentant respectivement les caractéristiques des deux individus M [i] et M [j] (leurs profils), contenant les éléments i_k et j_k.
La distance euclidienne entre les deux vecteurs i et j est donnée par :