09-ApprentissageNonSupervisé-Exercices.ipynb 6.27 KB
Newer Older
François Bouchet's avatar
François Bouchet committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Data Mining & Visualisation (DaMiVis)\n",
    "# Séance 9 - Apprentissage non supervisé\n",
    "# Exercices\n",
    "\n",
    "*(NOM Prénom -- A EDITER)*"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "import matplotlib as mpl\n",
    "import matplotlib.pyplot as plt\n",
    "import pylab as pl\n",
    "import seaborn as sns; sns.set()\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "import sklearn.cluster\n",
    "from sklearn.decomposition import PCA\n",
    "\n",
    "import itertools\n",
    "from scipy import linalg"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Exercices clustering"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Retour sur iris\n",
    "* Charger le jeu de données sur les iris\n",
    "* Selectionner 2 attributs\n",
    "* Essayer d'appliquer un modèle de clustering avec 2, 3 et 4 clusters sur ces données\n",
    "* Vérifier que le modèle avec 3 clusters est le meilleur"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Retour sur drinks by country\n",
    "\n",
    "On a précédemment travaillé sur de la prédiction en fonction du continent, mais ce n'est peut-être pas le meilleur moyen de regrouper les différents pays... En utilisant la consommation de vin/bière/spiritueux comme attributs, essayer différents modèles de clustering pour repérer les points proches."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Exercices ACP"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Retour sur iris\n",
    "\n",
    "Reprendre le jeu de données iris et déterminer 2 composantes permettant de représenter ce jeu de données normalement en 4 dimensions. \n",
    "* Quel est la dimension principale associée à la première composante ? Qu'en penser ?\n",
    "* Quel est le pourcentage total de variance expliqué ? Est-ce satisfaisant ?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Retour sur les données météo\n",
    "\n",
    "Rappel : données à télécharger depuis https://www.kaggle.com/budincsevity/szeged-weather ou dans `data/weatherHistory.csv`\n",
    "\n",
    "* Sélectionner les 7 features numériques dans le jeu de données météorologique (pas l'humidité)\n",
    "* Appliquer une analyse en composantes principales pour réduire le nombre de composantes : quel semble être un bon nombre ?\n",
    "* Appliquer à nouveau une régression linéaire pour voir si on améliore la performance du modèle : qu'en conclure ?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "# pour la question sur la régression, import des fonctions utiles\n",
    "from sklearn.pipeline import make_pipeline\n",
    "from sklearn.preprocessing import PolynomialFeatures\n",
    "from sklearn.linear_model import LinearRegression\n",
    "from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Exercice de réduction de dimensions et clustering sur Mushrooms\n",
    "\n",
    "Nous allons travailler ici sur un nouveau jeu de données représentant les caractéristiques physiques de champignons avec une information relative à son caractère comestible (`class=e`) ou non (`class=p`). On souhaiterait idéalement entraîner un modèle permettant de déterminer si un champignon est comestible. Pour cela, la couleur est un bon indicateur : on souhaite donc constituer des clusters de points en fonction de la couleur des différentes parties du champignon, ce qui donnera une nouvelle feature pour un modèle de prédiction.\n",
    "\n",
    "**Description du jeu de données :**\n",
    "*This dataset includes descriptions of hypothetical samples corresponding to 23 species of gilled mushrooms in the Agaricus and Lepiota Family Mushroom drawn from The Audubon Society Field Guide to North American Mushrooms (1981). Each species is identified as definitely edible, definitely poisonous, or of unknown edibility and not recommended. This latter class was combined with the poisonous one. The Guide clearly states that there is no simple rule for determining the edibility of a mushroom; no rule like \"leaflets three, let it be'' for Poisonous Oak and Ivy.*"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* Charger le jeu de données `data/mushrooms.csv`\n",
    "* Extraire les features correspondant aux couleurs\n",
    "* Repérer d'éventuelles corrélations entre chaque paire de features\n",
    "* En déduire un bon nombre de composantes pour une ACP\n",
    "* Effectuer l'ACP pour réduire les dimensions\n",
    "* Effectuer un clustering sur les données dans l'espace réduit\n",
    "* Entraîner un modèle de classification supervisée pour prédire si un champignon est comestible ou non"
   ]
  },
  {
   "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.7.1"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": true,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": true
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}