Série 4

Les fichiers de base pour cette série d'exercices sont à télécharger ici : regression.zip.

Exercice 1 : Prédiction du poids en fonction de la taille

Dans ce premier exercice, nous allons essayer de construire un modèle pour prédire le poids d'une personne en fonction de sa taille. Nous allons baser notre approche sur des données empiriques et essayer d'apprendre un modèle à partir de ces données. Nous utiliserons un ensemble de données de 200 personnes qui se trouve dans le fichier weights.csv 1.

Partie 1

Ouvrez le fichier weights.csv et examinez son contenu.

Quelles sont les colonnes de ce fichier ? À votre avis, dans quelles unités sont exprimées les valeurs de la taille et du poids ?

Partie 2

Ouvrez le programme weights.py et exécutez-le. Le programme va d'abord charger les données et afficher un graphique des poids en fonction des tailles. En outre, vous trouverez une ligne rouge, à laquelle nous reviendrons dans un instant.

Semble-t-il y avoir une relation entre la taille et le poids des personnes ?

Partie 3

Ensuite, nous allons essayer de construire un modèle pour prédire le poids d'une personne en fonction de sa taille. Le modèle que nous allons utiliser prend en entrée la taille et calcule le poids estimé en utilisant la formule suivante :

\[w = a \cdot h + b\]

Où w et h sont respectivement le poids (prédit) et la taille (donnée) d'une personne, tandis que a et b sont des paramètres du modèle.

Dans le programme Python, le code pour créer le modèle est déjà présent :

# Define the model
model = LinearRegression()

Les paramètres du modèle, c'est-à-dire les valeurs de a et b, peuvent être modifiés dans le code source, et plus précisément dans les lignes suivantes :

# Set the model parameters
model.coef_ = np.array([1.0]) # a is 1.0
model.intercept_ = 0.0 # b is 0

La ligne rouge dans le graphique obtenu précédemment correspond à ce modèle. Dans la sortie standard du programme, vous trouverez également l'erreur quadratique moyenne et l'écart-type de vos prédictions de modèle et de la réalité. Ces mesures indiquent à quel point votre modèle s'adapte bien aux données. Plus les valeurs sont petites, mieux c'est. Ajustez les valeurs de a et b pour mieux adapter les données. Vous pouvez évaluer la performance de votre modèle en regardant l'erreur quadratique moyenne ou l'écart-type, ou visuellement grâce au graphique.

Quelles sont les meilleures valeurs pour a et b que vous pouvez obtenir par essais et erreurs ?

Partie 4

Ensuite, au lieu d'essayer empiriquement diverses valeurs pour a et b, nous allons utiliser un algorithme pour calculer les meilleures valeurs possibles à partir de l'ensemble de données. Pour ce faire en Python, vous devez simplement remplacer les deux lignes où vous définissez les valeurs des paramètres par la ligne suivante :

model.fit(inputs, targets)

Exécutez à nouveau le programme et observez le résultat.

Quelles sont les valeurs optimales pour a et b que vous avez obtenues ?

Étiez-vous proche de ces valeurs lorsque vous avez essayé de les déterminer empiriquement ?

Selon le modèle, si la taille augmente d'une unité, de combien le poids augmente-t-il ?

Exercice 2 : Prédiction du prix d'une voiture

Dans cet exercice, nous allons essayer de déterminer l'impact de diverses caractéristiques sur le prix d'une voiture. Pour ce faire, nous allons utiliser un ensemble de données de 150 ventes de voitures qui se trouve dans le fichier usedcars.csv2.

Partie 1

Ouvrez le fichier usedcars.csv et examinez son contenu.

Quelles sont les colonnes de ce fichier ? De quelles caractéristiques dispose-t-on ?

Partie 2

Ouvrez le programme usedcars.py et examinez-le. Le programme va d'abord charger les données et les préparer dans une variable inputs, une liste de listes de valeurs numériques (d'entrée), et une variable targets, une liste de valeurs numériques (de sortie). Actuellement, uniquement le kilométrage (exprimé en miles) est utilisé comme caractéristique pour prédire le prix d'une voiture.

Ensuite, le programme va créer un modèle de régression linéaire et l'entraîner avec les données.

Les différents paramètres du modèle sont ensuite affichés, ce qui indique l'impact de chaque caractéristique sur le prix de la voiture.

Finalement, le programme affiche la déviation standard de la prédiction du prix par rapport au prix réel afin de donner une idée de la précision du modèle.

Exécutez le programme et observez les résultats. Quelle est l'importance du kilométrage dans la prédiction du prix d'une voiture ? Selon le modèle, combien perd en valeur une voiture par 1'000 miles ?

Selon le modèle, quel est le prix de base d'une voiture, c'est-à-dire le prix d'une voiture avec 0 miles au compteur ?

Partie 3

Le modèle que nous avons obtenu ici est plutôt rudimentaire. Dans le reste de cet exercice, nous allons essayer de l'améliorer. Pour ce faire, nous allons inclure plus de caractéristiques en entrée du modèle.

Tout d'abord, ajoutez l'année de la voiture comme caractéristique et ré-entraînez le modèle. Pour ce faire, modifiez le code qui initialise la liste inputs et incluez l'année de mise en circulation du véhicule comme caractéristique.

Est-ce que le nouveau modèle est plus précis ? Comment pouvez-vous le dire ?

Quel est l'impact de l'année de la voiture sur le prix ?

Selon ce nouveau modèle, combien perd en valeur une voiture par 1'000 miles ?

Quel est le prix, selon ce modèle, d'une voiture de 2010 avec 10'000 miles au compteur ?

Partie 4

La prochaine étape pour améliorer notre modèle est d'inclure encore plus de caractéristiques des voitures d'occasion en tant qu'entrées du modèle, par exemple le type de transmission ou la couleur de la voiture. Le problème est que les caractéristiques restantes sont catégoriques, pas numériques, par nature. Cependant, notre modèle ne prend que des valeurs numériques en entrée. Pour les inclure en tant qu'entrées de notre modèle, nous devrons les convertir en nombres, de manière sensée.

Pour ce faire, nous utiliserons ce que nous appelons des variables indicatrices. Ces variables prendront une valeur numérique, soit 0 soit 1, pour indiquer quelque chose sur la voiture. Par exemple, nous pourrions avoir une variable indicatrice pour indiquer qu'une voiture a une boîte de vitesses manuelle. Cette variable serait de 1 si la voiture a une boîte de vitesses manuelle, ou de 0 sinon. En Python, cela pourrait prendre la forme suivante :

1.0 if transmission == "MANUAL" else 0

Ajoutez cette variable indicatrice pour la transmission à votre modèle et ré-entraînez-le. Quel est l'impact de la transmission sur le prix d'une voiture ?

Partie 5

Essayez de raffiner davantage votre modèle en ajoutant d'autres caractéristiques des voitures d'occasion, comme par exemple la couleur. Pour représenter ces caractéristiques, vous pouvez utiliser des variables indicatrices comme décrit précédemment. Il faudra parfois utiliser plusieurs variables indicatrices pour représenter une seule caractéristique. Dans le cas par exemple de la couleur, vous pourriez avoir une variable indicatrice pour chaque couleur possible. Ainsi, une variable indicatrice correspondra au rouge, une autre au bleu, etc.

Exercice 3 : Prédiction de l'âge de mollusques

Dans ce dernier exercice, vous allez essayez de prédire l'âge d'ormeaux, une sorte de mollusque à coquille, à partir de différentes mesures.

Living Abalone

Sharktopus, CC BY-SA 3.0, via Wikimedia Commons

L'âge des ormeaux peut être calculé précisément en fonction du nombre d'anneaux formant la coquille. Malheureusement, mesurer le nombre d'anneaux nécessite un travail fastidieux et la destruction de la coquille, ce qui ne permet pas de déterminer l'âge des ormeaux sans les tuer.

Votre tâche aujourd'hui est de construire un modèle basé sur des mesures plus faciles à réaliser, telles que la longueur, la hauteur, le diamètre de la coquille par exemple. Pour accomplir cette tâche, vous disposez d'un ensemble de données, abalone.csv3, et d'un programme Python, abalone.py, que vous pouvez modifier à votre guise.


  1. source 

  2. source 

  3. source