# Introduction à l'apprentissage automatique: TP1 - Exercice 2
<br>
L'objectif de cet exercice est de construire un modèle de régression linéaire.
__Remarque__: il ne s'agit que d'une étude préliminaire; il faudrait également tester les modèles non-linéaires que l'on verra dans la suite du cours.
<br>
On cherche à prédire l'influence de dix indicateurs $x_1,x_2,\dots,x_{10}$ (âge, sexe, et diverses mesures physiologiques) sur un indicateur $y$ de la progression du diabète, à l'aide d'un modèle linéaire. Une étude complète nécessiterait de justifier ce modèle par des graphiques, les coefficients de corrélation linéaire, etc., comme vous l'avez fait en cours d'Analyse de données. Nous ne le ferons pas faute de temps.
On se base sur un jeu de données intégré à scikit-learn et [décrit ici](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset).
Notez la remarque:
> Note: Each of these 10 feature variables have been mean centered and scaled by the standard deviation times the square root of n_samples (i.e. the sum of squares of each column totals 1).
Il est donc inutile de normaliser les caractéristiques.
print(diabetes_X[:5,:])# rappel: les observations ont été préalablement normalisées
print(diabetes_y[:5])# les labels y ne sont pas normalisés
# nombre d'observations:
print("\nnombre d'observations dans la base de données: %d"%len(diabetes_X))
```
%% Cell type:markdown id: tags:
Les observations (chacune est composée de 10 indicateurs) forment les colonnes de `diabetes_X` et l'indicateur à prédire est stocké dans `diabetes_y`.
On commence par séparer la base de données entre un ensemble d'apprentissage et un ensemble de test qui nous servira à évaluer les modèles de régression (20% des observations pour ce dernier ensemble). La répartition est faite de manière aléatoire par la cellule suivante.
__Remarque__: dans la cellule suivante, `random_state=42` (nombre arbitraire) permet de fixer la graine du générateur aléatoire de manière à ce que nous ayons tous la même répartition aléatoire, ce qui facilitera la discussion.
__Question 2__. Proposez des modèles de régression multivariée pour prédire $y$ en fonction des 10 indicateurs dans $X$. Vous testerez régression linéaire, ridge, lasso et fixerez l'hyperparamètre de ces deux dernières méthodes par validation croisée sur la _base d'apprentissage_ , conformément à la démarche vue dans l'exercice 1 (utilisez `RidgeCV` et `LassoCV`).
<br>
Quel est finalement le meilleur modèle? Quelles sont les variables sélectionnées et leur influence quantitative?
_Indication_ : calculez la valeur de MSE sur la _base de test_ et comparez à la variance des étiquettes à prédire.
<br>
Quelles variables semblent les plus pertinentes dans l'étude?