"# Introduction à l'apprentissage automatique: TP1 - Exercice 2\n",
"\n",
"<br>\n",
"\n",
"L'objectif de cet exercice est de construire un modèle de régression linéaire.\n",
"\n",
"__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.\n",
"\n",
"<br>\n",
"\n",
"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 graphes, 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.\n",
"\n",
"On se base sur un jeu de données intégré à scikit-learn et [décrit ici](https://scikit-learn.org/stable/datasets/index.html#diabetes-dataset)."
"print(diabetes_X[:5,:]) # rappel: les observations ont été préalablement normalisées\n",
"print(diabetes_y[:5]) # les labels y ne sont pas normalisés\n",
"\n",
"# nombre d'observations:\n",
"print(\"\\nnombre d'observations dans la base de données: %d\" %len(diabetes_X))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Les observations (les 10 indicateurs) forment les colonnes de `diabetes_X` et l'indicateur à prédire est stocké dans `diabetes_y`.\n",
"\n",
"On commence par séparer la base de données entre ensemble d'apprentissage et ensemble de test (20% des observations pour ce dernier ensemble). La répartition est faite de manière aléatoire par la cellule suivante. \n",
"\n",
"__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 1__. Que font les trois cellules suivantes? Commentez en particulier le comportement des graphes. Pourquoi la MSE est-elle calculée sur la base test?"
"plt.title('MSE régression linéaire et lasso vs. alpha ')\n",
"plt.legend(['MSE lr','MSE lasso'])\n",
"plt.grid()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"__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.\n",
"\n",
"<br>\n",
"\n",
"Quel est finalement le meilleur modèle ? \n",
"\n",
"_Indication_ : calculez la valeur de MSE sur la _base de test_ .\n",
"\n",
"<br>\n",
"\n",
"Quelles variables semblent les plus pertinentes dans l'étude?\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# votre code ici (il faut pour l'essentiel faire des copier/coller depuis l'énoncé de l'exercice 1)\n",
"\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.3"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
%% Cell type:markdown id: tags:
# 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 graphes, 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/index.html#diabetes-dataset).
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 (les 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 ensemble d'apprentissage et ensemble de test (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 1__. Que font les trois cellules suivantes? Commentez en particulier le comportement des graphes. Pourquoi la MSE est-elle calculée sur la base test?
plt.title('MSE régression linéaire et lasso vs. alpha ')
plt.legend(['MSE lr','MSE lasso'])
plt.grid()
plt.show()
```
%% Cell type:markdown id: tags:
__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.
<br>
Quel est finalement le meilleur modèle ?
_Indication_ : calculez la valeur de MSE sur la _base de test_ .
<br>
Quelles variables semblent les plus pertinentes dans l'étude?
%% Cell type:code id: tags:
``` python
# votre code ici (il faut pour l'essentiel faire des copier/coller depuis l'énoncé de l'exercice 1)