Commit 36d0bb4b authored by Sylvain Marchienne's avatar Sylvain Marchienne

Improvements (ortho)

parent 4117ca5c
......@@ -8,7 +8,10 @@
"\n",
"WHAT??? \n",
"\n",
"Prédire les notes des étudiants en fonction de facteurs tels que la consommation d'alcool ? Peu importe ce qu'on en déduira, pas touche à notre cher... \n",
"Prédire les notes des étudiants en fonction de facteurs tels que la consommation d'alcool ? \n",
"PS: peu importe ce qu'on en déduira, pas touche à notre cher... \n",
"\n",
"On s'intéresse à un jeu de données social où ont été recueillies des informations sur des lycéens à propos de leurs conditions. Les notes qu'ils ont obtenus à leurs examens sont églament présentes. On voudrait pouvoir prédire les notes obtenues en fonction des conditions sociales des étudiants.\n",
"\n",
"Plus infos sur le dataset: https://www.kaggle.com/uciml/student-alcohol-consumption/home"
]
......@@ -22,7 +25,7 @@
},
{
"cell_type": "code",
"execution_count": 29,
"execution_count": 1,
"metadata": {},
"outputs": [
{
......@@ -31,7 +34,7 @@
"(395, 33)"
]
},
"execution_count": 29,
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
......@@ -52,7 +55,7 @@
},
{
"cell_type": "code",
"execution_count": 9,
"execution_count": 2,
"metadata": {},
"outputs": [
{
......@@ -66,7 +69,7 @@
" dtype='object')"
]
},
"execution_count": 9,
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
......@@ -86,7 +89,7 @@
},
{
"cell_type": "code",
"execution_count": 54,
"execution_count": 3,
"metadata": {},
"outputs": [
{
......@@ -103,8 +106,8 @@
}
],
"source": [
"# On affiche pour chaque examen (G1-3) les moyennes des notes selon le niveau de consommation\n",
"# d'alcool en semaine. Dalc est la variable correspondance, cf la doc\n",
"# On affiche pour chaque examen (G1-3) les moyennes des notes selon la catégorie de consommation\n",
"# d'alcool en semaine (oui, en semaine). Dalc est la variable correspondante (voir la doc)\n",
"fig, axes = plt.subplots(1,3, figsize=(16, 3))\n",
"for a in [(\"G1\", axes[0]), (\"G2\", axes[1]), (\"G3\", axes[2])]:\n",
" df.groupby(pd.cut(df[\"Dalc\"], 3))[a[0]].mean().plot.bar(ax=a[1], title=a[0])\n",
......@@ -129,12 +132,12 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"On souhaite toujours prédire la note d'un élève en fonction de toutes les variables à disposition. On choisi de ne garder que la variable G3 pour simplifier le problème. On pourrait aussi faire une moyenne de ces 3 notes, au choix. G3 sera donc notre variable à prédire (target feature)."
"On souhaite toujours prédire la note d'un élève en fonction de toutes les variables à disposition. On choisi de ne garder que la variable G3 pour simplifier le problème. On pourrait aussi faire une moyenne de ces 3 notes. Au choix. G3 sera donc notre variable à prédire (target feature)."
]
},
{
"cell_type": "code",
"execution_count": 21,
"execution_count": 4,
"metadata": {
"scrolled": true
},
......@@ -150,7 +153,7 @@
" dtype='object')"
]
},
"execution_count": 21,
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
......@@ -162,7 +165,7 @@
},
{
"cell_type": "code",
"execution_count": 55,
"execution_count": 5,
"metadata": {},
"outputs": [
{
......@@ -211,124 +214,100 @@
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>336</th>\n",
" <th>55</th>\n",
" <td>GP</td>\n",
" <td>F</td>\n",
" <td>19</td>\n",
" <td>R</td>\n",
" <td>16</td>\n",
" <td>U</td>\n",
" <td>GT3</td>\n",
" <td>A</td>\n",
" <td>3</td>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>services</td>\n",
" <td>at_home</td>\n",
" <td>other</td>\n",
" <td>other</td>\n",
" <td>...</td>\n",
" <td>no</td>\n",
" <td>no</td>\n",
" <td>yes</td>\n",
" <td>yes</td>\n",
" <td>5</td>\n",
" <td>4</td>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>5</td>\n",
" <td>12</td>\n",
" <td>13</td>\n",
" </tr>\n",
" <tr>\n",
" <th>68</th>\n",
" <td>GP</td>\n",
" <td>F</td>\n",
" <td>15</td>\n",
" <td>R</td>\n",
" <td>LE3</td>\n",
" <td>T</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>health</td>\n",
" <td>services</td>\n",
" <td>...</td>\n",
" <td>yes</td>\n",
" <td>no</td>\n",
" <td>4</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>4</td>\n",
" <td>2</td>\n",
" <td>8</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>364</th>\n",
" <td>MS</td>\n",
" <td>F</td>\n",
" <td>17</td>\n",
" <th>155</th>\n",
" <td>GP</td>\n",
" <td>M</td>\n",
" <td>15</td>\n",
" <td>R</td>\n",
" <td>GT3</td>\n",
" <td>T</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>other</td>\n",
" <td>3</td>\n",
" <td>at_home</td>\n",
" <td>services</td>\n",
" <td>...</td>\n",
" <td>no</td>\n",
" <td>no</td>\n",
" <td>3</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>12</td>\n",
" <td>8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>300</th>\n",
" <th>151</th>\n",
" <td>GP</td>\n",
" <td>F</td>\n",
" <td>18</td>\n",
" <td>M</td>\n",
" <td>16</td>\n",
" <td>U</td>\n",
" <td>LE3</td>\n",
" <td>A</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>health</td>\n",
" <td>T</td>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>at_home</td>\n",
" <td>other</td>\n",
" <td>...</td>\n",
" <td>yes</td>\n",
" <td>no</td>\n",
" <td>yes</td>\n",
" <td>4</td>\n",
" <td>2</td>\n",
" <td>4</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>4</td>\n",
" <td>3</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>6</td>\n",
" <td>14</td>\n",
" <td>11</td>\n",
" </tr>\n",
" <tr>\n",
" <th>254</th>\n",
" <th>82</th>\n",
" <td>GP</td>\n",
" <td>M</td>\n",
" <td>17</td>\n",
" <td>R</td>\n",
" <td>GT3</td>\n",
" <td>F</td>\n",
" <td>15</td>\n",
" <td>U</td>\n",
" <td>LE3</td>\n",
" <td>T</td>\n",
" <td>3</td>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>other</td>\n",
" <td>services</td>\n",
" <td>other</td>\n",
" <td>...</td>\n",
" <td>yes</td>\n",
" <td>no</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>4</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>5</td>\n",
" <td>0</td>\n",
" <td>12</td>\n",
" <td>10</td>\n",
" <td>6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
......@@ -355,98 +334,122 @@
" <td>8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>323</th>\n",
" <th>18</th>\n",
" <td>GP</td>\n",
" <td>F</td>\n",
" <td>M</td>\n",
" <td>17</td>\n",
" <td>U</td>\n",
" <td>GT3</td>\n",
" <td>T</td>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>services</td>\n",
" <td>services</td>\n",
" <td>...</td>\n",
" <td>yes</td>\n",
" <td>no</td>\n",
" <td>3</td>\n",
" <td>4</td>\n",
" <td>3</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>2</td>\n",
" <td>3</td>\n",
" <td>4</td>\n",
" <td>5</td>\n",
" <td>16</td>\n",
" <td>5</td>\n",
" <td>1</td>\n",
" <td>15</td>\n",
" </tr>\n",
" <tr>\n",
" <th>69</th>\n",
" <th>75</th>\n",
" <td>GP</td>\n",
" <td>F</td>\n",
" <td>M</td>\n",
" <td>15</td>\n",
" <td>R</td>\n",
" <td>LE3</td>\n",
" <td>U</td>\n",
" <td>GT3</td>\n",
" <td>T</td>\n",
" <td>4</td>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>other</td>\n",
" <td>teacher</td>\n",
" <td>other</td>\n",
" <td>...</td>\n",
" <td>yes</td>\n",
" <td>no</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>12</td>\n",
" <td>16</td>\n",
" <td>2</td>\n",
" <td>3</td>\n",
" <td>5</td>\n",
" <td>6</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>394</th>\n",
" <td>MS</td>\n",
" <th>150</th>\n",
" <td>GP</td>\n",
" <td>M</td>\n",
" <td>19</td>\n",
" <td>18</td>\n",
" <td>U</td>\n",
" <td>LE3</td>\n",
" <td>T</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>other</td>\n",
" <td>at_home</td>\n",
" <td>other</td>\n",
" <td>...</td>\n",
" <td>yes</td>\n",
" <td>no</td>\n",
" <td>3</td>\n",
" <td>yes</td>\n",
" <td>2</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>5</td>\n",
" <td>2</td>\n",
" <td>5</td>\n",
" <td>4</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>85</th>\n",
" <td>GP</td>\n",
" <td>F</td>\n",
" <td>15</td>\n",
" <td>U</td>\n",
" <td>GT3</td>\n",
" <td>T</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>services</td>\n",
" <td>services</td>\n",
" <td>...</td>\n",
" <td>yes</td>\n",
" <td>yes</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>2</td>\n",
" <td>3</td>\n",
" <td>5</td>\n",
" <td>9</td>\n",
" <td>6</td>\n",
" <td>8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>330</th>\n",
" <th>261</th>\n",
" <td>GP</td>\n",
" <td>M</td>\n",
" <td>18</td>\n",
" <td>U</td>\n",
" <td>LE3</td>\n",
" <td>GT3</td>\n",
" <td>T</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>other</td>\n",
" <td>4</td>\n",
" <td>3</td>\n",
" <td>teacher</td>\n",
" <td>other</td>\n",
" <td>...</td>\n",
" <td>yes</td>\n",
" <td>no</td>\n",
" <td>4</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>3</td>\n",
" <td>2</td>\n",
" <td>4</td>\n",
" <td>5</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>2</td>\n",
" <td>8</td>\n",
" </tr>\n",
......@@ -457,45 +460,45 @@
],
"text/plain": [
" school sex age address famsize Pstatus Medu Fedu Mjob Fjob \\\n",
"336 GP F 19 R GT3 A 3 1 services at_home \n",
"68 GP F 15 R LE3 T 2 2 health services \n",
"364 MS F 17 R GT3 T 1 2 other services \n",
"300 GP F 18 U LE3 A 4 4 health other \n",
"254 GP M 17 R GT3 T 2 1 other other \n",
"55 GP F 16 U GT3 A 2 1 other other \n",
"155 GP M 15 R GT3 T 2 3 at_home services \n",
"151 GP M 16 U LE3 T 2 1 at_home other \n",
"82 GP F 15 U LE3 T 3 2 services other \n",
"24 GP F 15 R GT3 T 2 4 services health \n",
"323 GP F 17 U GT3 T 3 1 services services \n",
"69 GP F 15 R LE3 T 3 1 other other \n",
"394 MS M 19 U LE3 T 1 1 other at_home \n",
"330 GP M 18 U LE3 T 2 2 other other \n",
"18 GP M 17 U GT3 T 3 2 services services \n",
"75 GP M 15 U GT3 T 4 3 teacher other \n",
"150 GP M 18 U LE3 T 1 1 other other \n",
"85 GP F 15 U GT3 T 4 4 services services \n",
"261 GP M 18 U GT3 T 4 3 teacher other \n",
"\n",
" ... internet romantic famrel freetime goout Dalc Walc health absences \\\n",
"336 ... no no 5 4 3 1 2 5 12 \n",
"68 ... yes no 4 1 3 1 3 4 2 \n",
"364 ... no no 3 2 2 1 2 3 0 \n",
"300 ... yes yes 4 2 4 1 1 4 14 \n",
"254 ... yes no 4 4 2 2 4 5 0 \n",
"55 ... yes yes 5 3 4 1 1 2 8 \n",
"155 ... no no 4 4 4 1 1 1 2 \n",
"151 ... no yes 4 4 4 3 5 5 6 \n",
"82 ... yes no 4 4 4 1 1 5 10 \n",
"24 ... yes no 4 3 2 1 1 5 2 \n",
"323 ... yes no 3 4 3 2 3 5 1 \n",
"69 ... yes no 4 4 2 2 3 3 12 \n",
"394 ... yes no 3 2 3 3 3 5 5 \n",
"330 ... yes no 4 5 5 2 4 5 2 \n",
"18 ... yes no 5 5 5 2 4 5 16 \n",
"75 ... yes no 4 3 3 2 3 5 6 \n",
"150 ... yes yes 2 3 5 2 5 4 0 \n",
"85 ... yes yes 4 4 4 2 3 5 6 \n",
"261 ... yes no 4 3 2 1 1 3 2 \n",
"\n",
" G3 \n",
"336 13 \n",
"68 8 \n",
"364 12 \n",
"300 11 \n",
"254 12 \n",
"55 10 \n",
"155 8 \n",
"151 14 \n",
"82 6 \n",
"24 8 \n",
"323 15 \n",
"69 16 \n",
"394 9 \n",
"330 8 \n",
"18 5 \n",
"75 10 \n",
"150 0 \n",
"85 8 \n",
"261 8 \n",
"\n",
"[10 rows x 31 columns]"
]
},
"execution_count": 55,
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
......@@ -515,18 +518,20 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"Il y a ce qu'on appelle des variables catégorielles, dont les valeurs ne sont pas numériques et continues. Il y a par exemple les variables `school` qui est soit GP soit MS (nom des deux écoles). Mais aussi `Mjob` (mother's job) qui prend des valeurs dans {teacher, health, services, ...}. Ces valeurs ne sont pas calculables telles quelles. Seuls les arbres de décisions peuvent accepter ces valeurs (pourquoi ?).\n",
"Il y a ce qu'on appelle des variables catégorielles, dont les valeurs ne sont pas numériques et continues. Il y a par exemple la variable `school` qui est soit GP soit MS (nom des deux écoles). Mais aussi `Mjob` (mother's job) qui prend des valeurs dans {teacher, health, services, ...}. Ces valeurs ne sont pas calculables telles quelles. Seuls les arbres de décisions peuvent accepter ces valeurs (pourquoi ?).\n",
"\n",
"Il faut donc faire une transformation. Deux stratégies sont possibles:\n",
"* **Integer encoding** : on donne une valeur entière à chaque modalité (teacher devient 0, health devient 1, services 2, etc). Le problème avec ça, c'est qu'on introduit un biais. 0 < 2 et donc teacher devient \"inférieur\" à services. Cette stratégie n'est donc pas toujours pertinente, sauf pour les modalités où il y a une relation d'ordre.\n",
"* **One-hot encoding**: on va binariser les variables, par exemple `school` va prendre les valeurs 0 et 1. Si school=GP alors on met 0 à place, si school=MS on met 1. Mais si notre a variable a plus de deux modalités possibles (`Mjob`) ? Il faut créer des nouvelles variables ! `Mjob_teacher` prend la valeur 0 si ce n'est pas teacher et 1 si oui, `Mjob_health` pareil, etc. (en fait, si on a n modalités, on peut créer n variables, en pratique n-1, car la dernière modalité correspondrait au cas où les n-1 variables crées sont à 0). Un article qui reprend cette méthode: https://machinelearningmastery.com/why-one-hot-encode-data-in-machine-learning/\n",
"\n",
"* **Integer encoding** : on donne une valeur entière à chaque modalité (teacher devient 0, health devient 1, services 2, etc). Le problème avec ça, c'est qu'on introduit un biais. 0 < 2 et donc _teacher_ deviendrait \"inférieur\" à _services_ ? Cette stratégie n'est donc pas toujours pertinente, sauf pour les modalités où il y a une relation d'ordre.\n",
"\n",
"* **One-hot encoding**: on va binariser les variables, par exemple `school` va prendre les valeurs 0 et 1. Si school=GP alors on met 0 à place, si school=MS on met 1. Mais qu'est-ce qu'il se passe lorsque notre a variable a plus de deux modalités possibles (`Mjob`) ? Il faut créer des nouvelles variables ! `Mjob_teacher` prend la valeur 0 si ce n'est pas teacher et 1 si oui, `Mjob_health` pareil, etc. En fait, si on a $n$ modalités, on peut créer $n$ variables. En pratique $n-1$, car la dernière modalité correspondrait au cas où les $n-1$ variables crées sont à 0. Un article qui reprend cette méthode: https://machinelearningmastery.com/why-one-hot-encode-data-in-machine-learning/\n",
"\n",
"Notre dataset contient beaucoup de variables catégorielles, on vous épargne le preprocessing à faire dessus, mais c'est toujours bon d'avoir ça en tête. En pratique, la majorité des datasets ont besoin de passer par là !"
]
},
{
"cell_type": "code",
"execution_count": 88,
"execution_count": 7,
"metadata": {},
"outputs": [
{
......@@ -575,20 +580,20 @@
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>161</th>\n",
" <th>108</th>\n",
" <td>15</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>4</td>\n",
" <td>3</td>\n",
" <td>...</td>\n",
" <td>5</td>\n",
" <td>3</td>\n",
" <td>5</td>\n",
" <td>1</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
......@@ -599,44 +604,42 @@
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>306</th>\n",
" <td>20</td>\n",
" <th>349</th>\n",
" <td>18</td>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>5</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>99</th>\n",
" <td>16</td>\n",
" <th>182</th>\n",
" <td>17</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>4</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>3</td>\n",
" <td>5</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>...</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
......@@ -645,19 +648,21 @@
" <td>1</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>286</th>\n",
" <th>384</th>\n",
" <td>18</td>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>5</td>\n",
" <td>4</td>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>4</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>...</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
......@@ -665,29 +670,29 @@
" <td>1</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>217</th>\n",
" <td>18</td>\n",
" <th>226</th>\n",
" <td>17</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>3</td>\n",
" <td>2</td>\n",
" <td>4</td>\n",
" <td>2</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>...</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
......@@ -695,23 +700,23 @@
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>87</th>\n",
" <th>102</th>\n",
" <td>15</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>5</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
......@@ -719,20 +724,20 @@
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>143</th>\n",
" <th>93</th>\n",
" <td>16</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>5</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>...</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
......@@ -743,22 +748,22 @@
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>364</th>\n",
" <td>17</td>\n",
" <td>2</td>\n",
" <th>48</th>\n",
" <td>15</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>4</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>3</td>\n",
" <td>5</td>\n",
" <td>...</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
......@@ -767,20 +772,18 @@
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>85</th>\n",
" <td>15</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <th>193</th>\n",
" <td>16</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",