"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "YNidzJlk0Ysk",
"colab_type": "text"
},
"source": [
"### Données manquantes"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "6na2mKJInz9N",
"colab_type": "text"
},
"source": [
"sur les 19 variables incomplètes, 3 sont des variables numériques (les variables de type \"float64\"), et les autres sont des variables catégorielles (les variables de type \"object\").\n",
"\n",
"Après vérification de la description des variables, on remarque que les variables catégorielles contiennent des \"NA\" comme catégories, et qui sont automatiquement interprétées comme des NaN par pandas. \n",
"\n",
"Pour les variables catégorielles, nous allons simplement remplacer les NaN par une catégorie \"Nothing\". Nous allons ensuite analyser et corriger chaque variable numérique.\n",
"\n"
]
},
{
"cell_type": "code",
"metadata": {
"id": "mMH9OkrIpRWX",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 253
},
"outputId": "7f736009-4a0b-438a-d003-7b42701b6c02"
},
"source": [
"#Pour vérifier le type d'une colonne: .dtypes()\n",
"display_series(ames.dtypes)\n",
"#Les variables catégorielles sont du type \"object\"\n",
"\n",
"#Vérifions les données incomplètes uniquement:\n",
"incomplete_types = ames[incomplete.index].dtypes\n",
"display_series(incomplete_types)\n",
"\n",
"#Trois variables de type \"float64\" contiennent des NaN\n",
"display_series(incomplete_types[incomplete_types == \"float64\"])"
],
"execution_count": 375,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
"
"
],
"text/plain": [
" median mean\n",
"MasVnrArea \n",
"False 162700 180615.063361\n",
"True 203287 236484.250000"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "fXcg6gWatKZD",
"colab_type": "text"
},
"source": [
"L'absence de LotFrontage ne semble pas avoir beaucoup d'influence sur le prix. Les deux autres variables ont une influence. GarageYrBlt = NaN signifie probablement qu'il n'y a pas de garage (ce qui diminue la valeur), et MasVnrArea = NaN semble augmenter la valeur en moyenne.\n",
"\n",
"Pour une comparaison plus complète, nous pouvons visualiser les distributions des valeurs NaNs et non-NaN pour chacune de ces variables:"
]
},
{
"cell_type": "code",
"metadata": {
"id": "4TY52lH6cylg",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 297
},
"outputId": "a08f38d9-914e-4785-dc08-45e674eea65d"
},
"source": [
"from matplotlib import pyplot as plt\n",
"fig, axes = plt.subplots(1,3)\n",
"\n",
"for ax, feat in zip(axes, ['LotFrontage', 'GarageYrBlt','MasVnrArea']):\n",
" ax.violinplot(dataset = [ames[ames[feat].isna()]['SalePrice'].values, ames[ames.notna()]['SalePrice'].values] )\n",
" ax.set_xlabel(feat)\n",
" ax.set_xticks([1,2])\n",
" ax.set_xticklabels(['NaNs','valid'])\n",
"\n",
"#Permet d'éviter l'overlap entre les subplots\n",
"plt.tight_layout()"
],
"execution_count": 379,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"
"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "8988suQTvwIX",
"colab_type": "text"
},
"source": [
"##### MasVnrArea"
]
},
{
"cell_type": "code",
"metadata": {
"id": "9kPorBFzt2EC",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 647
},
"outputId": "a3b60ca9-f99d-4a1b-9692-331f4fad8d42"
},
"source": [
"#Analysons la relation entre \"MasVnrArea\" et le prix\n",
"print(col_corr(ames,\"MasVnrArea\",\"SalePrice\"))\n",
"display_series(mediangroups_mean_comparison(ames,\"MasVnrArea\",\"SalePrice\"))\n",
"mediangroups_boxplot_comparison(ames,\"MasVnrArea\",\"SalePrice\")\n",
"ames.plot.scatter(\"MasVnrArea\",\"SalePrice\")\n",
"#Il semblerait que l'influence soit positive\n",
"\n",
"#Une possibilité pour prendre en compte cette information est de remplacer les NaN la moyenne de la colonne (ce qui minimisera l'influence de la variable pour ces observations particulières), et d'ajouter une colonne \"isnan_MasVnrArea\" pour garder l'information\n",
"#La relation entre \"MasVnrArea\" et \"SalePrice\" ne devrait pas être trop faussée de cette manière, étant donné que le nombre de NaN est assez faible (81).\n",
"ames[\"isnan_MasVnrArea\"] = ames.MasVnrArea.isna().astype(int) #.astype(int) permet de rendre la variable numérique. #.astype(str) permettrait d'en faire une variable catégorielle\n",
"ames[\"MasVnrArea\"] = ames[\"MasVnrArea\"].fillna(ames[\"MasVnrArea\"].median())"
],
"execution_count": 380,
"outputs": [
{
"output_type": "stream",
"text": [
"0.4774930470957107\n"
],
"name": "stdout"
},
{
"output_type": "display_data",
"data": {
"text/html": [
"
"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "4a9-9-fqv2h6",
"colab_type": "text"
},
"source": [
"##### LotFrontage"
]
},
{
"cell_type": "code",
"metadata": {
"id": "Ri_eA_YQxnvA",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 647
},
"outputId": "349244b8-2bed-4969-a7cb-b157e68b1d6e"
},
"source": [
"#Analysons la relation entre \"LotFrontage\" et le prix\n",
"print(col_corr(ames,\"LotFrontage\",\"SalePrice\"))\n",
"display_series(mediangroups_mean_comparison(ames,\"LotFrontage\",\"SalePrice\"))\n",
"mediangroups_boxplot_comparison(ames,\"LotFrontage\",\"SalePrice\")\n",
"ames.plot.scatter(\"LotFrontage\",\"SalePrice\", s = 1)\n",
"\n",
"#Ajoutons une variable isnan_LotFrontage pour pouvoir utiliser cette information dans notre modèle plus tard:\n",
"ames[\"isnan_LotFrontage\"] = ames.LotFrontage.isna().astype(int)\n",
"#Ensuite, étant donné le grand nombre de NaNs (~18%), il est préférable (dans une premier temps) de ne pas utiliser cette variable en remplaçant les NaN par la moyenne\n",
"#Une autre possibilité serait d'entraîner un modèle de régression pour prédire ces données manquantes à partir des autres variables.\n",
"out = ames.pop(\"LotFrontage\")"
],
"execution_count": 381,
"outputs": [
{
"output_type": "stream",
"text": [
"0.35179909657067854\n"
],
"name": "stdout"
},
{
"output_type": "display_data",
"data": {
"text/html": [
"
"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "1Xi5TJ6r2V5p",
"colab_type": "text"
},
"source": [
"On ne peut pas considérer Lotfrontage = NaN comme 0, auquel cas le prix moyen serait plus faible que pour les autres maisons. Il est préférable d'omettre la variable vu la quantité de NaN (plus de 10%). Remplacer NaN par une valeur apporterait des informations erronnées, et omettre les observations réduirait significativement la taille du dataset."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "ooOgJTxIv5k8",
"colab_type": "text"
},
"source": [
"##### GarageYrBlt"
]
},
{
"cell_type": "code",
"metadata": {
"id": "eeIP_RARu4qW",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 413
},
"outputId": "c00aba2a-6846-46e4-9c2e-0b0e59256c09"
},
"source": [
"#Concernant l'année de construction du garage, une valeur nulle n'aurait aucun sens.\n",
"#On peut vérifier que la NaN correspond simplement à une absence de garage. En effet, leur surface est toujours nulle:\n",
"display_series(ames[ames.GarageYrBlt.isna()].GarageArea.describe())\n",
"#L'information sur l'absence de garage est donc déjà présente dans une autre variable. \n",
"\n",
"ames.corrwith(ames[\"GarageYrBlt\"]).sort_values(ascending = False).plot.bar(figsize = (10,4))\n",
"#On remarque aussi que l'année de construction du garage est logiquement corrélée avec l'année de construction du bien.\n",
"#Pour remplir les quelques NaN, on peut éventuellement \"simuler\" une date de construction du garage avec l'année de construction.\n",
"ames[\"GarageYrBlt\"] = ames[\"GarageYrBlt\"].fillna(ames[\"YearBuilt\"])"
],
"execution_count": 382,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
"
"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Vi5_I8Z9yMfD",
"colab_type": "text"
},
"source": [
"Les résultats sont assez similaires. En réalité, les différences principales se trouvent pour les variables dont la distribution est fortement asymmétrique (e.g.: PoolArea est la plupart du temps 0, tout comme isnan_MasVnrArea)"
]
},
{
"cell_type": "code",
"metadata": {
"id": "1Fl5jS12zcMu",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 233
},
"outputId": "0ea331b1-1991-41cd-a8c1-d22f1699759d"
},
"source": [
"fig, axes = plt.subplots(1,4,figsize = (15,3))\n",
"ames.boxplot(\"OverallQual\", ax = axes[0])\n",
"ames.boxplot(\"GrLivArea\", ax = axes[1])\n",
"ames.boxplot(\"PoolArea\", ax = axes[2])\n",
"ames.boxplot(\"isnan_MasVnrArea\", ax = axes[3])"
],
"execution_count": 387,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
""
]
},
"metadata": {
"tags": []
},
"execution_count": 387
},
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"
"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "GieK4cCJQecG",
"colab_type": "text"
},
"source": [
"## Préparation des sets d'entraînement et de validation"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "FZcr_oCYSmm9",
"colab_type": "text"
},
"source": [
"### Sélection des variables prédictives (features)"
]
},
{
"cell_type": "code",
"metadata": {
"id": "LjOypw1hSXD3",
"colab_type": "code",
"colab": {}
},
"source": [
"#Prenons les cinq meilleures variables prédictives (en sa basant sur leur corrélation avec le prix, ou le delta de la moyenne)\n",
"featurelist = best_features[:5]\n",
"#featurelist = best_features_effects[:5]\n",
"\n",
"X = ames[featurelist]\n",
"y = ames[\"SalePrice\"]"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "JCqFx1_6Sq92",
"colab_type": "text"
},
"source": [
"### Séparation des données d'entraînement et de validation"
]
},
{
"cell_type": "code",
"metadata": {
"id": "vDKVXwL9m5l4",
"colab_type": "code",
"colab": {}
},
"source": [
"from sklearn.model_selection import train_test_split\n",
"import numpy as np\n",
"\n",
"ids = ames.index\n",
"\n",
"trainids, valids = train_test_split(ids, test_size = 0.4, random_state = 1)\n",
"\n",
"#Pour avoir à chaque fois des ids différents, il suffit de ne pas fixer l'état pseudo alétoire \"random_state\":\n",
"#trainids, valids = train_test_split(ids, test_size = 0.4)\n",
"\n",
"Xtrain, Xval, ytrain, yval = X.loc[trainids], X.loc[valids], y.loc[trainids], y.loc[valids]\n",
"\n",
"#Remarque: ce code est équivalent, mais le but ici est de garder les mêmes ids pour comparer plusieurs modèles (ou pour calculer la moyenne des prédictions, voir fin du notebook)\n",
"#Xtrain, Xval, ytrain, yval = train_test_split(X, y, test_size = 0.4)"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "laD_Mgz0S4d1",
"colab_type": "text"
},
"source": [
"## Régression linéaire"
]
},
{
"cell_type": "code",
"metadata": {
"id": "9pij4mZ5l32w",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 35
},
"outputId": "3436b928-7298-42c4-d2ac-f8ed2074026a"
},
"source": [
"from sklearn.linear_model import LinearRegression\n",
"\n",
"price_predictor = LinearRegression()\n",
"price_predictor.fit(Xtrain, ytrain)\n"
],
"execution_count": 390,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None, normalize=False)"
]
},
"metadata": {
"tags": []
},
"execution_count": 390
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "Q4wMp6XSmJFY",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 87
},
"outputId": "cb537509-2b48-4a57-e985-cf2e0e0503ca"
},
"source": [
"import numpy as np\n",
"from sklearn.metrics import mean_absolute_error as MAE, mean_squared_error as MSE\n",
"\n",
"\n",
"print(\"R2 Scores (train, val):\", price_predictor.score(Xtrain, ytrain), price_predictor.score(Xval, yval))\n",
"\n",
"y_pred = price_predictor.predict(Xval)\n",
"\n",
"print(\"biais:\", np.mean(y_pred - yval.values) ) #si il est négatif: sous-évaluation (en moyenne), si il est positif: sur-évaluation\n",
"print(\"MAE:\", MAE(yval.values, y_pred) )\n",
"print(\"RMSE:\", np.sqrt(MSE(yval.values, y_pred)) )\n",
"\n",
"#Tester en gardant ou en retirant les outliers; tester avec différentes ensembles de variables"
],
"execution_count": 391,
"outputs": [
{
"output_type": "stream",
"text": [
"R2 Scores (train, val): 0.7662346914049792 0.7477113803564559\n",
"biais: 143.5871107765132\n",
"MAE: 25257.404730679427\n",
"RMSE: 40835.29225417492\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "tJP043J4-Y0-",
"colab_type": "text"
},
"source": [
"Remarque: les résultats seront un peu différents chaque fois qu'on relancera le code, étant donné la sélection aléatoire des sets d'entraînement et de validation."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "6oTHcBp-Svi3",
"colab_type": "text"
},
"source": [
"## Comparaison pour différents nombres de variables prédictives"
]
},
{
"cell_type": "code",
"metadata": {
"id": "n0Rd7RnFo57A",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 313
},
"outputId": "3b938365-1ef8-4836-9cdc-e1d3da99f651"
},
"source": [
"from sklearn.preprocessing import StandardScaler\n",
"\n",
"maes = pd.DataFrame(columns = ['train','val'])\n",
"\n",
"for n in range(1,len(best_features)):\n",
"\n",
" #Choix des variables\n",
" featurelist = best_features[:n]\n",
" #featurelist = best_features_effects[:n]\n",
" \n",
" #Commencer par les plus mauvaises\n",
" #featurelist = best_features[::-1][:n]\n",
" #featurelist = best_features_effects[::-1][:n]\n",
"\n",
" X = ames[featurelist]\n",
" y = ames[\"SalePrice\"] \n",
" \n",
" Xtrain, Xval, ytrain, yval = X.loc[trainids], X.loc[valids], y.loc[trainids], y.loc[valids]\n",
" #scaler = StandardScaler()\n",
" #Xtrain = scaler.fit_transform(Xtrain)\n",
" #Xval = scaler.transform(Xval)\n",
" price_predictor.fit(Xtrain, ytrain)\n",
" trainpred = price_predictor.predict(Xtrain)\n",
" valpred = price_predictor.predict(Xval)\n",
" \n",
" maes.loc[n] = MAE(ytrain, trainpred), MAE(yval, valpred)\n",
"\n",
"maes.plot()\n",
"plt.title(\"Performances (MAE) pour différents nombres de variables prédictives\")\n",
"plt.xlabel(\"Nombre de variables prédictives\")\n",
"plt.ylabel(\"Maen Absolute Error\")"
],
"execution_count": 392,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"Text(0, 0.5, 'Maen Absolute Error')"
]
},
"metadata": {
"tags": []
},
"execution_count": 392
},
{
"output_type": "display_data",
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAbwAAAEXCAYAAADWa/HyAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzs3XecVNXZwPHfM9sLZZdd6i7VghQF\nRcCuGCNggTS7YiWJGmPi+74xpqiJGk2MRmOJJdaoBEsEDQYbaCyIgChKb0pnYSlL2WXL8/5xzrCX\nZcsAOzu7M8/387mfmXtuO/femXnmnnvOPaKqGGOMMfEuFOsMGGOMMU3BAp4xxpiEYAHPGGNMQrCA\nZ4wxJiFYwDPGGJMQLOAZY4xJCM024InIbSKyQUTWxjovzYGI/EFErm/ibR4uIh815TYPhIh0FxEV\nkWQ//oaIjAlM3+MzJSLfEZEVIrJNRAYG5ssQkQ9F5Iym34vmRUSWi8i3mkE+LhWRD5pBPrr6z0tS\nBPOeLCIr65n+lIjc1rg53H8ikicis0VkUD3z7HEe/LHouR/bulBE3tzfvO6vRgt4/oux0x+Adf5k\nZu/nuroCNwB9VLVjY+WxpRKRfOAS4BE/frL/Yf9XjfmO8OlTa6SLiCwVkbm1rHuqiJT68xYeXgNQ\n1S+AzSJyVrT2LZpUdYSqPg11fqbuBq5V1WxV/Syw6CPAPar672jlTURuEZF/RGv9JjpU9Rv/eamM\ndV4ak4ikAE8DV6vqjEiX88diaQPr3uOPqF/uOVX99v7neP809hXeWaqaDRwJDAJ+va8r8AelK7BR\nVdfv5/Lx5lJgkqruDKQVAceISLtA2hhgYS3Lnwi0B3qKyNG1TA//6IeHYIB7DvjhgWX/wDXCea3t\nM9UN+KrmjKp6iaq+HOX8xJ14Pybxtn81AlC5qp6hqi2mRGd/RKVIU1VXAW8A/QBEpI2I/F1E1ojI\nKl+0lOSnXeqLj+4VkY3AVOAtoLO/2njKz3e2iHwlIpv9Vclh4e35q8tfiMgXwHYRSfZp/ysiX4jI\ndr/9Dr6Yq0RE3haRnMA6XhSRtSKyRUTeF5G+gWlPiciDIvJvv+wnItIrML2viLwlIsX+6vYmnx4S\nkRtFZImIbBSR8SKS66eli8g/fPpmEflURDrUcUhHAO/VSNsFvAqc59eXBJyLC1A1jQEmAJP8+30x\nFThVRNJqm+jPxR9EZLqIbBWRCeF99NPrO28qIgcFxncX8fir2JX+vK4Fnqxl20kicre4YsqlwBk1\npk8VkSvFFckFP1MviMg2IAn4XESW+Pk7i8jLIlIkIstE5LrAum4RkZf8OdsKXNrA+Q3/qx0jIt/4\nPP7KTxsO3ASc6/PzuU+/VNyVeInf/oV1HPNb/Lae8fN+JYFiKBE5zO/7Zj/t7BrH+CH/Pdjmv3sd\nReQvIrJJROZLoHjXO1pE5vrpT4pIen3nSETOFFc0tllEPhKRwwPb/4W434ASEVkgIqfWsY/tRGSi\n/0xNB3rVmN478J1bICLn1LGec0VkRo20n4nIRP/+DBH5zG9nhYjcEpgvfA6vEJFvgHdl72Lzy0Rk\nnt+fpSKy159DEbnJn//ldZ3TRjxuT4nI3/yxKRGR90SkW2C6isg1IrIIWNTQsYzgPOz+Dou7FfBn\nEfla3O/oByKSAbzvZ9/sP3PHSKBoVEQeFpG7a6x3goj83L+v73s5WERm+PytE5F76jq+AKhqowzA\ncuBb/n0h7p/z7/34v3DFRFm4K43pwA/9tEuBCuAnQDKQAZwMrAys+xBgO3AakAL8H7AYSA1se7bf\nbkYgbRrQAegCrAdmAQOBdOBd4ObANi4HWgFpwF+A2YFpTwEbgcE+j88B4/y0VsAaXHFZuh8f4qf9\n1OehwK/3EeAFP+2HwGtAJu6H9yigdR3Htgg4OjB+MrASOBb4xKeNBCYDVwJTA/NmAlv99O8BG8LH\nzU+fClzZwLndChxex7SpwCrcn5ss4GXgHxGeNwUOqnGcbwvsYwVwlz92GbVs+0fAfH/ec4Epfp3J\nNfeNGp+pmtvH/fmbCfwWSAV6AkuB0/30W4ByYLSfN6OB89vdr/8xP+8RQBlwWGB9/wjkJcsf50P9\neCegbx3H/Bag1J/TJOAPwDQ/LcUf45v8fgwDSgLrfcp/Bo6i+nuwDFdkngTcBkyp8b3+MnCMP6zv\nHOG+X+uBIX59Y/w60oBDgRVA58Ax6lXHPo4Dxvvj0g/3GfsgcKxWAJfhvo8D/T71qWU9mX7/Dw6k\nfQqcF9iH/v6cHg6sA0bXOIfP+G1mBNLCn7EzcEFAgJOAHcCRNY7PPX7/T8J9H4LnInwsG+u4PeX3\n90S/7H3h4xb4zL/lz2VGQ8eyvvNQy3foQdx3rovfh2N9HvY4ZoHf/fD5PNHnQfx4DrAT6EzD38uP\ngYv9+2xgaL2/ZfsT3Oo40MuBbcBm4GvgIX9AO+C+6BmBec/Hf6n8jn9TY10ns2fA+w0wPjAe8gf+\n5MC2L68lPxcGxl8GHg6M/wR4tY59aetPUJvAh+jxwPSRwPzAvnxWx3rmAacGxjvhfjSTcQH2I+oI\nJDXWUw70ru344P6lHeo/mBeyd8C7CBcwk3E/cFuA7wSmT8V9STcHht/X2P4q4MQ68jYVuDMw3gd3\n9ZkUwXlrKODtAtLrOS7vAj8KjH+b/Q94Q2r5HP4SeNK/vwV4fx/Ob3e//oLA9OlU/9Dewt4BbzPu\nT8lewb3Gdm8B3q5xzHf69ycAa4FQYPoLwC2BY/xYje/BvMB4f2Bzje9R8BiPBJbUdY6Ah2v5/CzA\n/dgfhPtR/xaQUs/+JbH3Z/4Oqn8gzwX+W2OZRwj8ga0x7R/Ab/37g3EBIbOOef8C3Ovfh89hz8D0\ncFpyHcu/Cvw0cHwqgKzA9PHAb2r5vB/wcQusc1xgPBuoBAoDn/lhgel1HsuGzkPwO4T7bu8Ejqgl\nT3sdM/YMeAJ8g/+NAa4C3o3we/k+cCuQV99xCQ+NXaQ5WlXbqmo3Vb1a3T2nbrh/nWv8pfpmf0Db\nB5Zb0cB6O+OCKACqWuWX6dLAOtYF3u+sZTwbdheN3SmuaGor7ksOkBeYP1hbdEd4Wdw/3yV15Lsb\n8K/Afs/Dffg6AM/irsjGichqEfmjuBvHtdmEu3KszbPAtcApuCvpmsbggk6FqpbiAv+YGvNc589b\nePhNjemtcD/GdQke+69x5zuPyM5bfYp8nuvSuZZt769uuCLPzYHzdRPuXIXV/IzVd37D6vrc7EFV\nt+N+fH6E+678W0R615PfmutN98VsnYEV/liHfc2exzyi70VAzWPcOTBe8xx1A26ocRwLcVcni4Hr\ncQF7vYiME5HgusLycX8a6jq33YAhNbZxIVBXBbfncX9MAS7A/dHdASAiQ0Rkii8u24I7/nk1lq/z\n90lERojINF8cuBn3hyC4/CZ/boP7Uds+N8Zx2yu/qroNKK6xzeD+1HcsGzoPQXm4P9R1/RbWSV3k\nGsee5yh8a6ah7+UVuJKk+eJuC51Z37aaolnCCtwVXl7gB7W1qvYNzKMNrGM1bscBV+sQ92FYtQ/r\nqM8FwCjcP6g2uH8k4P55NGQF7jK7rmkjagSTdFVdpe4m8a2q2gd36X8mrlipNl/gTmptngWuxlVq\n2RGcICIFuCKti8Tdn1wLfB8YKSI1v9S1EpEuuKKEBfXMVhh43xX3r3ADDZ+3Hbgip7CaP1gNndM1\ntWx7f60AltU4V61UdWQ9+anz/Eawvb32TVUnq+ppuCvF+bji0H21GigUkeB3uyt7flf2Vc1jvDow\nXtsxub3GMclU1RcAVPV5VT0e97lQXHFoTUW4K6O6zu0K4L0a28hW1R/Xkf+3gHwRGYD7UX0+MO15\nYCLuCqgN8Df2/t7X+jkUd1/7ZVxt3w6q2hZ3nzy4fI6IZNXYj+DxC+7TgR63sN3HTVxN+VzqPmf1\nHcuGzkPQBlwxe69apkXy2/wC8H1/v3EI7riG81fn91JVF6nq+bgLqLuAl2oc7z1EPeCp6hrgTeDP\nItJa3I3+XiJy0j6sZjxwhoic6q+CbsAF0caqUdTKr28j7gf4jn1Y9nWgk4hcLyJpItJKRIb4aX8D\nbg/fNBaRfBEZ5d+fIiL9xVU22YoLElW1bQD3Jar1eKnqMj/tV7VMvhhXa/NQYIAfDsHd/zu/lvlr\ncxKueKGsnnkuEpE+IpIJ/A54SV217YbO22zgAn+FPbyufazHeOA6ESkQVwHpxn1cPmg6UCKuckCG\nz1M/qb1Wa1id5zcC64Du4cAkrkLVKP9lLcPdHqjr81CfT3B/JP5PRFJE5GTgLNw/6P11jT/GubjP\n2T/rmfcx4Ef+yklEJEtcxZBWInKoiAzzgaIUdzW51z76z84rwC0ikikifdizVOJ14BARudjvY4qI\nHC2BClE11lcOvAj8Cffj/1ZgciugWFVLRWQw7s9vpFJx96iKgAoRGYErVq/pVhFJFZETcH9sX6xl\nngM+bgEjReR4EUkFfo+7v1vXVWqdxzKC87CbL1F4ArhHXCWTJHGVU8LHp4q6LwxQ1yxoA/A4MFlV\nwyVK9X4vReQiEcn32w8vU+exaaqG55fgPhxzccVzL+H+xUZEVRfg7kX9FXdQzsI1gdjVSPl7Bnep\nvsrncdo+5K0EVynjLFwx0yJc8SK4G8YTgTdFpMSvNxwMO+KOw1ZcUdh7uKu1uvI3UlyNp9ry8IGq\n1vavcQzwkKquDQ64H+rgB/cB2bMd3szAtAv9/PV5FnfvYC2uWOM6n6+GzttPfVq4GOXVBrZT02O4\nYuHPcRWSXtnH5XfzX+4zcX8KllH95WtTz2L1nd+GhH/0NorILNx38ee4f+LFuOBf1xVLnfyxPQtX\ns3cD7l76Jao6f1/XFfA87k/rUlyRVZ2NpdW14boKeAD3XV+Mu18DLjjc6fO1Fvev/Jd1rOpaXNHq\nWtxn68nANkpwgeU83PFaS3XFmfr24VvAi6paEUi/GvidP3+/xf2JiojPx3V+mU24YDmxxmxr/bTV\nuGK6H9V2LhrxuIHb15txn6OjcN/B+vahvmNZ53moxf8Ac3CVgor9ekK+5Ol24ENfLDm0nnx/i8AV\neATfy+HAV+JqXd+Hu0cebL61h3CtGNPMicgdwHpV/UsTbvNw4BFVPaaeeabiKl883lT5MsbUTlwz\nrpWqus9toBNBXDWkjGeqelMMtvkFUGewM8aYlqTZPkvTGGOMaUxWpGmMMSYh2BWeMcaYhGABzxhj\nTEJIuEoreXl52r1791hnwxhjWpSZM2duUNX8WOfjQCRcwOvevTszZkTc3ZMxxhhARA7k0X3NghVp\nGmOMSQgW8IwxxiQEC3jGGGMSQsLdwzPGmH1VXl7OypUrKS2tr7eq+JCenk5BQQEpKXX1VtZyRS3g\niUg6rnO+NL+dl1T15sD0+3Gdtob7pEvDPST5KFyvBeeq6nI/7Ze4fo8qcX23Tfbpw3EPDE3CddB6\nZ7T2xxiTuFauXEmrVq3o3r07rper+KSqbNy4kZUrV9KjR49YZ6fRRbNIswzXs+4RuCddDw8/JVtE\nBuG6cQ+6AtdZ4kHAvfj+nnyXFOcBfXFPxn7IdxGRhOtSfgSux+fz/bzGGNOoSktLadeuXVwHOwAR\noV27dnF7JRu1gKfONj+a4gf1gepPwP/VWGQU8LR//xJwqrhP1yhcl/Vlvu+3xcBgPyxW1aW+S5Rx\nft6GMnZgO2aMSUjxHuzC4nk/o1ppxV+JzQbWA2+p6ie4/pUm+o5hg7rgu5L3/VVtAdoF072VPq2u\n9NryMVZEZojIjG3rW3xTEmNMgtm8eTMPPfTQPi83cuRINm/e3PCMCSKqAU9VK1V1AFAADBaRE4Ef\n4DoEbTKq+qiqDlLVQdkZ8Xcj1hgT3+oKeBUVFbXMXW3SpEm0bds2WtlqcZqklqaqbhaRKbiewA8C\nFvvL5kwRWezv260CCoGVIpKM69F2YyA9rMCnUU963SrKDmxnjDGmid14440sWbKEAQMGkJKSQnp6\nOjk5OcyfP5+FCxcyevRoVqxYQWlpKT/96U8ZO3YsUP1kqW3btjFixAiOP/54PvroI7p06cKECRPI\nyMiI8Z41rWjW0swHyn2wywBOA+5S1Y6Bebb5YAcwERgDfAx8H3hXVVVEJgLPi8g9QGfgYGA6IMDB\nItIDF+jOAy5oMGMW8IwxB+DW175i7uqtjbrOPp1bc/NZfeucfuedd/Lll18ye/Zspk6dyhlnnMGX\nX365uyblE088QW5uLjt37uToo4/me9/7Hu3atdtjHYsWLeKFF17gscce45xzzuHll1/moosuatT9\naO6ieYXXCXjaV1IJAeNV9fV65v878KyILAaKcQEMVf1KRMYDc4EK4BpVrQQQkWuBybhmCU+o6lcN\n5qpyF1RVQcja3BtjWqbBgwfv0Wzg/vvv51//+hcAK1asYNGiRXsFvB49ejBgwAAAjjrqKJYvX95k\n+W0uohbwVPULYGAD82QH3pfi7u/VNt/twO21pE8CJu1bxqqgZA20qbV+izHG1Ku+K7GmkpWVtfv9\n1KlTefvtt/n444/JzMzk5JNPrrVZQVpa2u73SUlJ7Ny5s0ny2pwk5mVO8dJY58AYYyLWqlUrSkpK\nap22ZcsWcnJyyMzMZP78+UybNq2Jc9dyJOajxTYtgx4nxDoXxhgTkXbt2nHcccfRr18/MjIy6NCh\nw+5pw4cP529/+xuHHXYYhx56KEOHDo1hTps30QRriD2oc7LOeOY38K2bG57ZGGOAefPmcdhhh8U6\nG02mtv0VkZmqOihGWWoUCVekWS4p7grPGGNMQkm4gLeLZLuHZ4wxCSjhAl6ZpqDFy+yZmsYYk2AS\nMOAlI2VbYeemWGfFGGNME0q4gLcL/yzNYruPZ4wxiSThAl5ZuCWG3cczxpiEknABb/cVntXUNMbE\nqezs7IZnSkAJF/CSQiE2J+dbkaYxxiSYhHvSSmpyiNWh9rS1KzxjTAtx4403UlhYyDXXXAPALbfc\nQnJyMlOmTGHTpk2Ul5dz2223MWrUqBjntHlLvICXFGJJZXv6FH8Z66wYY1qiN26EtXMad50d+8OI\nO+ucfO6553L99dfvDnjjx49n8uTJXHfddbRu3ZoNGzYwdOhQzj77bHxfo6YWiRfwkkMsKGvHWZXr\nYNd2SM1qeCFjjImhgQMHsn79elavXk1RURE5OTl07NiRn/3sZ7z//vuEQiFWrVrFunXr6NixY8Mr\nTFCJF/CSQiyv8g9e3bQcOsS+qw9jTAtSz5VYNP3gBz/gpZdeYu3atZx77rk899xzFBUVMXPmTFJS\nUujevXut3QKZaglXaSUlOcTX6gOeVVwxxrQQ5557LuPGjeOll17iBz/4AVu2bKF9+/akpKQwZcoU\nvv7661hnsdlLyCu8r7W9G7G2eMaYFqJv376UlJTQpUsXOnXqxIUXXshZZ51F//79GTRoEL179451\nFpu9hAt4KckhNodasTO5NRlWU9MY04LMmVNdWSYvL4+PP/641vm2bdvWVFlqURKuSFOATm3SWZ/c\n2Yo0jTEmgSRcwAMozMnkG+1gRZrGGJNAohbwRCRdRKaLyOci8pWI3OrTnxORBSLypYg8ISIpPl1E\n5H4RWSwiX4jIkYF1jRGRRX4YE0g/SkTm+GXulwgboBTmZrCwPB+2rITK8sbedWOMMc1QNK/wyoBh\nqnoEMAAYLiJDgeeA3kB/IAO40s8/AjjYD2OBhwFEJBe4GRgCDAZuFpEcv8zDwFWB5YZHkrHCnEzm\nlbUDrYTN3xzofhpjEoAmSB+a8byfUQt46oTvnKb4QVV1kp+mwHSgwM8zCnjGT5oGtBWRTsDpwFuq\nWqyqm4C3cMGzE9BaVaf5dT0DjI4kbwW5GXy9uy2e3cczxtQvPT2djRs3xnUwABfsNm7cSHp6eqyz\nEhVRraUpIknATOAg4EFV/SQwLQW4GPipT+oCrAgsvtKn1Ze+spb02vIxFnfVSNeuXSnMybS2eMaY\niBUUFLBy5UqKiopinZWoS09Pp6CgoOEZW6CoBjxVrQQGiEhb4F8i0k9Vww+xfAh4X1X/G808+Hw8\nCjwKMGjQIC3MzWQ9bakIpZNsAc8Y04CUlBR69OgR62yYA9QktTRVdTMwBX+PTURuBvKBnwdmWwUU\nBsYLfFp96QW1pDcoPzuN1OQkitO6WJGmMcYkiGjW0sz3V3aISAZwGjBfRK7E3Zc7X1WrAotMBC7x\ntTWHAltUdQ0wGfi2iOT4yirfBib7aVtFZKivnXkJMCGSvIVCQkFOBqtDHa1I0xhjEkQ0izQ7AU/7\n+3ghYLyqvi4iFcDXwMe+FcErqvo7YBIwElgM7AAuA1DVYhH5PfCpX+/vVLXYv78aeApX2/MNP0Sk\nMCeTpevbM2DTTKiqglBCNkk0xpiEEbWAp6pfAANrSa91m76m5TV1THsCeKKW9BlAv/3JX2FuBnO/\nacd3KYVta6F15/1ZjTHGmBYiYS9rCnMyWbArz41YsaYxxsS9xA14uYGmCVZxxRhj4l7CBryCnAxW\naR5VkmzP1DTGmASQsAGvMCeTSpIoSe9kRZrGGJMAEjbgtc1MITstmaLkTlakaYwxCSBhA56Ia4u3\ngg52hWeMMQkgYQMeuIorC8vzoXQz7ChueAFjjDEtVmIHvJxMvtie60asWNMYY+JaYge83AwWVeS7\nESvWNMaYuJbYAS8nk2+0vRuxKzxjjIlrCR3wCnIzKCWNnent7QrPGGPiXEIHvMKcTAA2pXWxgGeM\nMXEuoQNeVloyuVmprA5ZWzxjjIl3CR3wAApzMlhemQ8la2DXjlhnxxhjTJQkfMAryM1kbpnvNWHT\n8pjmxRhjTPTUG/BEJElEnmuqzMRCYU4ms7fnuBEr1jTGmLhVb8BT1Uqgm4ikNlF+mlxhbgZLKnzT\nBKu4YowxcSuSHs+XAh+KyERgezhRVe+JWq6aUGFOJlvIpiK1Ncl2hWeMMXErkoC3xA8hoFV0s9P0\nCnNd04StGYXkWr94xhgTtxoMeKp6K4CIZPvxbZGsWETSgfeBNL+dl1T1ZhHpAYwD2gEzgYtVdZeI\npAHPAEcBG4FzVXW5X9cvgSuASuA6VZ3s04cD9wFJwOOqemeE+71b57bpiEBRSmdyixfv6+LGGGNa\niAZraYpIPxH5DPgK+EpEZopI3wjWXQYMU9UjgAHAcBEZCtwF3KuqBwGbcIEM/7rJp9/r50NE+gDn\nAX2B4cBDvjJNEvAgMALoA5zv590naclJdGiVzgo6wpYVUFm+r6swxhjTAkTSLOFR4Oeq2k1VuwE3\nAI81tJA64avBFD8oMAx4yac/DYz270f5cfz0U0VEfPo4VS1T1WXAYmCwHxar6lJV3YW7ahwVwf7s\npTA3w3UTVFXhgp4xxpi4E0nAy1LVKeERVZ0KZEWycn8lNhtYD7yFuxe4WVUr/CwrgS7+fRdghd9G\nBbAFV+y5O73GMnWl77PCnEy+3OGbJlhNTWOMiUuRBLylIvIbEenuh1/jam42SFUrVXUAUIC7Iut9\nAHndbyIyVkRmiMiMoqKivaYX5GYya5u1xTPGmHgWScC7HMgHXgFeBvJ8WsRUdTMwBTgGaCsi4coy\nBcAq/34VUAjgp7fBVV7ZnV5jmbrSa9v+o6o6SFUH5efn7zW9MCeDddqWqqR0u8Izxpg41eCTVoBf\nqep1qnqkqh6lqter6qaGViwi+SLS1r/PAE4D5uEC3/f9bGOACf79RD+On/6uqqpPP09E0nwNz4OB\n6cCnwMEi0sM3jD/Pz7vPCnMzUULszC60gGeMMXGq3mYJqlopIsfv57o7AU/7oBkCxqvq6yIyFxgn\nIrcBnwF/9/P/HXhWRBYDxbgAhqp+JSLjgblABXCNfwIMInItMBnXLOEJVf1qfzIabou3Ka0LWVak\naYwxcSmShuef+aesvMieT1p5pb6FVPULYGAt6Utx9/NqppcCP6hjXbcDt9eSPgmY1ED+G9SxdTrJ\nIWFNqBMFG6eDKogc6GqNMcY0I5EEvHTcvbRhgTTF3dOLC0khoXPbDJZVtefo8h2wbR206hjrbBlj\njGlE9QY8Xxz5hare20T5iZnC3AzmlvhugoqXWsAzxpg4E0lvCec3UV5iqjAnk9nb2roRq7hijDFx\nJ5IizQ9F5AHgn+x5D29W1HIVA4W5mby0vQ2akYRYxRVjjIk7kQS8Af71d4G08CPC4kZBTgYVJFOe\n3YVUu8Izxpi4E0lvCac0RUZiLdw0oSSzkHbWTZAxxsSdOu/hichfAu9/WmPaU1HMU0wU5riAtyGl\ns3u8mGqMc2SMMaYx1Vdp5cTA+zE1ph0ehbzEVF52KukpIRYkHwo7N8HnL8Q6S8YYYxpRfQFP6ngf\nl0SEgpxMJoVOgm7HwRs3wpZaH81pjDGmBaov4IVEJEdE2gXe54pILu5RXnGnMCeDbzaVwagHXd94\nE6+1ok1jjIkT9QW8NsBMYAbQGpjlx2cCraKftaZXmJvJik07ILcHnHYrLHkXZj4V62wZY4xpBHXW\n0lTV7k2Yj2ahMCeTktIKtuwop82gK2Dea/Dmr6HXMMjpFuvsGWOMOQCR9IeXMApzMwDcVV4o5Io2\nEZhwDVRVxTZzxhhjDogFvIAC3zRhRfEOl9C2EIbfAcv/C58+FsOcGWOMOVAW8ALCjc9XbtpZnTjw\nYjj42/DWzbBxSYxyZowx5kBFFPBE5HgRucy/z/c9j8edNhkptE5PdkWaYSJw1v2QnAqv/hiqKmOX\nQWOMMfutwYAnIjcDvwB+6ZNSgH9EM1OxVJCTWV2kGda6E4z4E6z4BD5+MDYZM8YYc0AiucL7DnA2\nvqcEVV1NnDZLAFdxZUWwSDPs8HOg95nw7m2wfn7TZ8wYY8wBiSTg7VJVxfWQgIhkRTdLsVWYk8nK\nTTuoqKxRK1MEzrwXUrNc0WZlRWwyaIwxZr9EEvDGi8gjQFsRuQp4G3g8utmKnSE921FaXsUbX67d\ne2J2ezjzHlg9Cz6M+07gjTEmrjQY8FT1buAl4GXgUOC3qnp/Q8uJSKGITBGRuSLyVbjHBREZICLT\nRGS2iMwQkcE+XUTkfhFZLCJfiMiRgXWNEZFFfhgTSD9KROb4Ze4XkQN+5uepvdvTIy+LR99fitb2\nWLG+34G+34Wpd8GaLw50c8a+lQncAAAgAElEQVQYY5pIJJVW7lLVt1T1f1X1f1T1LRG5K4J1VwA3\nqGofYChwjYj0Af4I3KqqA4Df+nGAEcDBfhgLPOy3nwvcDAwBBgM3i0iOX+Zh4KrAcsMj2en6hELC\nlSf0YM6qLUxbWlz7TCPvhsx28PSZsPDNA92kMcaYJhBJkeZptaSNaGghVV2jqrP8+xJgHtAFdy+w\ntZ+tDbDavx8FPKPONFwRaifgdOAtVS1W1U3AW8BwP621qk7z9xifAUZHsD8N+t6RBbTLSuXR9+to\nd5fVDq6YDG27wvPnuKs9exKLMcY0a/V1APtjEZkDHOqLGMPDMmCfyvJEpDswEPgEuB74k4isAO6m\nurlDF2BFYLGVPq2+9JW1pB+w9JQkLjmmO1MWFLFwXUntM+V0h8vfhMPPhal3wLjzYefmxti8McaY\nKKjvCu954Cxgon8ND0ep6kWRbkBEsnH3/65X1a3Aj4GfqWoh8DPg7/uZ94iJyFh/v3BGUVFRRMtc\nfEw30lNCPPb+0rpnSs2E7/zNtdFb/DY8dgqsm9tIuTbGGNOY6gx4qrpFVZfjGp1rYMgWka6RrFxE\nUnDB7jlVfcUnjwHC71/E3ZcDWAUUBhYv8Gn1pRfUkl7bvjyqqoNUdVB+fn4kWSc3K5VzBhXy6uxV\nrNtaWveMIjBkLIx5HXZth8dPhS9fjmgbxhhjmk4k9/D+DbzuX98BlgJvNLSQrzH5d2Ceqt4TmLQa\nOMm/HwYs8u8nApf42ppDgS2qugaYDHzbd0CbA3wbmOynbRWRoX5blwATItifiF1xfA8qq5SnPlre\n8MzdjoGx70HH/vDS5TD5V9ZWzxhjmpE6+8MLU9X+wXHfXODqCNZ9HHAxMEdEZvu0m3C1Ku8TkWSg\nFFcjE2ASMBJYDOwALvPbLxaR3wOf+vl+p6rh6pNXA08BGbgg3GAg3hfd2mUxvF9H/jHta6455SCy\n0xo4XK07uSu9yTfBxw/Ams/h+09CdmRXlcYYY6JHam1r1tBCInNqBsKWYtCgQTpjxoyI5//sm018\n56GP+M2Zfbji+H14Zvbs5+H1n0FmHlz9EaS32Y/cGmNM8yAiM1V1UKzzcSAavMITkZ8HRkPAkVQ3\nJYh7A7vmMLh7Lk98sIxLjulGSlKEPSoNuACy2sNz34PF70C/70Y3o8YYY+oVya93q8CQhruXNyqa\nmWpuxp7Yk1WbdzJpzpp9W7Dnye7Kbsm70ciWMcaYfRDJPbxbmyIjzdmw3u3ple8eN3b2EZ2J+Alm\nScnQ4yRYMgVUXY1OY4wxMVFnwBOR1/A9JNRGVc+OSo6aoVBIuOqEntz4yhw+XrKRYw/Ki3zhXsNg\n3kTYsAjyD4leJo0xxtSrviu8u5ssFy3A6IFduPvNhTzy/tJ9DHinuNcl71jAM8aYGKqv4fl74QH4\nGNjoh498WkJJT0ni0mO78d7CIuav3Rr5gjndIbeX3cczxpgYi6S3hJNxjcMfBB4CForIiVHOV7N0\n0dBuZKQk8dj7y/ZtwV7DYPkHUFEWnYwZY4xpUCS1NP8MfFtVT1LVE3G9FyRk76dtM1M59+hCJn6+\nirVb6nncWE29hkH5DljxSfQyZ4wxpl6RBLwUVV0QHlHVhUBK9LLUvIUfN/bkR/twldf9eAglW7Gm\nMcbEUCQBb4aIPC4iJ/vhcSDyR5XEmcLcTEb078Tz076hpLQ8soXSW0PBYAt4xhgTQ5EEvB8Dc4Hr\n/PCVT0tYPzyxJyVlFfz5zYVUVUX4aLZew9yzNbdviG7mjDHG1KrBgKeqZap6j6p+F7gSeEdVE7r2\nxeEFbTl/cCFPfbScMU9OZ+O2CA5Hr2HudenUqObNGGNM7SKppTlVRFqLSC4wE3hMRBKy0krQHd/p\nzx3f6c8ny4oZef9/mb6suP4FOg+AjBwr1jTGmBiJpEizje+p/LvAM6o6BDg1utlq/kSEC4Z05V9X\nH0tmajLnPzaNB6csrruIM5Tknq255F33mDFjjDFNKpKAlywinYBzcB3BmoC+ndsw8drjGNGvI3+a\nvIDLnvqU4u27ap+51zAoWQPr5zVtJo0xxkQU8H6H63V8iap+KiI9qe6l3ACt0lP46/kD+f3ofny8\nZCMj7/svM5bXUsTZM/yYMSvWNMaYphZJpZUXVfVwVf2xH1+qqt+LftZaFhHh4qHdeOXqY0lLCXHu\no9P423tL9izibFsIeYdYwDPGmBiIpNJKTxF5TUSKRGS9iEzwV3mmFv26tOG1nxzP8L4dufON+Yx9\ndgbllVXVM/QaBl9/COX78KQWY4wxByySIs3ngfFAJ6Az8CLwQjQz1dK1Tk/hgQsGcuOI3rw9bz3v\nzl9fPbHXMKgohW8+jl0GjTEmAUUS8DJV9VlVrfDDP4D0aGespRMRrjy+B+2yUpk4e3X1hG7HQSjF\nijWNMaaJ1RnwRCTXt717Q0RuFJHuItJNRP4PmNTQikWkUESmiMhcEflKRH4amPYTEZnv0/8YSP+l\niCwWkQUicnogfbhPWywiNwbSe4jIJz79nyKSuj8HIVqSk0KceXgn3p63rvoxZGnZ0HWo6wXdGGNM\nk6nvCm8m7pmZ5wA/BKYAU3GPFTs3gnVXADeoah9gKHCNiPQRkVOAUcARqtoX39GsiPQBzgP6AsOB\nh0QkSUSScF0TjQD6AOf7eQHuAu5V1YOATcAVke54Uzl7QBfKKqqY/NW66sRep8C6OVCyru4FjTHG\nNKr6OoDtoao9/eseA3BoQytW1TWqOsu/LwHmAV1wAfPO8OPJVDV8g2sUMM4/ymwZsBgY7IfFvnbo\nLmAcMEpEBBgGvOSXfxoYvc9HIMqO7NqWgpwMJsxeVZ3Yy7fbt8eMGWNMk4nkHh4A4pwqIn8HVu7L\nRkSkOzAQ+AQ4BDjBF0W+JyJH+9m6ACsCi630aXWltwM2q2pFjfRmRUQYNaAzHy7eQFGJf+Zmx8Mh\ns53dxzPGmCYUSbOEoSJyP/A1MAF4H+gd6QZEJBt4GbjeP6IsGcjFFXP+LzDeX61FjYiMFZEZIjKj\nqKgompuq1agBXahS+PcXvvJKKOQaodtjxowxpsnUV2nlDhFZBNwOfIG7QitS1adVdVMkKxeRFFyw\ne05VX/HJK4FX1JkOVAF5wCqgMLB4gU+rK30j0FZEkmuk70VVH1XVQao6KD8/P5KsN6pDOrSid8dW\nTPg8UFuz1zDYvh7Wfdnk+THGmERU3xXelcA64GHgWVXdCER8OeKv2v4OzFPVewKTXgVO8fMcAqQC\nG4CJwHkikiYiPYCDgenAp8DBvkZmKq5iy0RVVVxFmu/79Y7BXYE2S6MGdOGzbzbzzcYdLqGXPWbM\nGGOaUn0BrxNwG3AWsEREngUyAldUDTkOuBgYJiKz/TASeALoKSJf4iqgjPFXe1/hGrjPBf4DXKOq\nlf4e3bW453nOA8b7eQF+AfxcRBbj7un9PfJdb1pnD+gMwMTP/UVo686Qf5gFPGOMaSKiEdxDEpE0\n4EzgfOAEXCewF0Q5b1ExaNAgnTFjRky2fc7fPqZ4xy7e+tmJiAj85yb49HH4xXJIzYxJnowxJhIi\nMlNVB8U6HwciolqavqnAy6r6fVxR43+im634dPaAzixev415a0pcQq9hUFkG33wU24wZY0wCiLhZ\nQpiqblXVZ6KRmXg3sn8nkkPChHCxZrdjISnVnrpijDFNYJ8Dntl/uVmpnHhIPq/NXu26DUrNhK7H\n2H08Y4xpAhbwmtioAZ1ZvaWUGV/7lh29hsH6ubB1TWwzZowxcS6igCcix4rIBSJySXiIdsbi1bcO\n60BGShKvhh81dlD4MWNWrGmMMdHUYBMD3xyhFzAbqPTJCth9vP2QlZbMaX06MGnOGm45qy+p7ftC\nVnuYfBPMfBpadYDsjoFXP2R3hMxcqCiDshIo2+qHEijdumdaxS4IJbsnuoSSQZL8eCAtJQsOOxNS\nMmJ9SIwxpklE0qZuENBHI2m/YCIyakBnJn6+mv8uKuLUwzrAyD/BvNdg2zpYNxcWvwu7SmpZUtiH\ntv8NO/w8+O4jjbc+Y4xpxiIJeF8CHQG7ydRITjg4n7aZKUyYvdoFvL6j3RC0azuUrHVBMPy6Y6O7\nIktr7YdWkO5fg2nJqVBVBVoJVRV+qHRDOG36o/DBvdD/B3Dwt2JzIIwxpglFEvDygLkiMh0oCyeq\n6tlRy1WcS00OMbJ/J/41axXbyyrISqvlNKRmQbtebtgfoRAQgqSU2qef/EuYPwlevx6u/tgFSmOM\niWORVFq5BdfP3B3AnwODOQCjjujMzvJK3p4Xo05gk9Ng1AOwZSW88/vY5MEYY5pQgwFPVd8DlgMp\n/v2nwKwo5yvuHd09l05t0pkwe3XDM0dL4WAY8kNXvPnNtNjlwxhjmkAk/eFdhetVPFy7oQuuxwNz\nAEIh4ewjOvP+wiKKt++KXUaG/QbaFMLEn0B5aezyYYwxURZJkeY1uJ4PtgKo6iKgfTQzlSjOHtCZ\niipl0pwY1gdKy4az/gIbFsJ/745dPowxJsoiCXhlqrr7EsR3D2RNFBpBn06tObh9NhNjWawJrvH7\nERe4WptrrUNaY0x8iiTgvSciN+H6wjsNeBF4LbrZSgwiwqgBnZm+vJhVm3fGNjOn3w4ZOTDxWqis\niG1ejDEmCiJplnAjcAUwB/ghMAl4PJqZSiRnH9GFu99cyJ/+M59B3XMRgZAIAoi4oCj4NAFVqFJF\nAVX146C497ufD1BjuZCAIODXn5oc4tTe7aubRGTmugbwL14K0x6C466LyfEwxphoaTDgqWoV8Jgf\nTCPr2i6TY3q249XZq3m1iYs2BxS25ZkrBtM63bfV6zMaep8JU26H3mfsfxtAY4xphhrs8VxEDgb+\nAPQB0sPpqtozulmLjlj2eF6X8soqNu3YBepujlb5KzcF140Q1Vd24Su28NVf+Mptdxri5vcrC179\n7V6vwuyVm7lh/Gz6dGrNM1cMoU2GD3pb18CDQ6DT4TDmNbdSY0zCi4cezyMp0nwSuBm4FzgFuAzr\nVqhRpSSFaN8qveEZG1HXdplkpiRx9XOzuOjxT/jHFUNok5kCrTvBt38Pr10Hs56Goy5t0nwZY0y0\nRBK4MlT1HdzV4NeqegtwRnSzZZrCt/p04JGLj2LB2hIu/Ps0Nu/wlXGPvAS6nwBv/ga2xrgGqTHG\nNJJIrvDKRCQELBKRa4FVQHZDC4lIIa4LoQ640rlHVfW+wPQbgLuBfFXdICIC3AeMBHYAl6rqLD/v\nGODXftHbVPVpn34U8BSQgatM81Pr1WHfnNK7PY9echRjn53JBY99wnNXDiEnKxXOvh8eOhbGXQjd\njoWkVPc4suQ0SErb831KOhQMdl0aGWNMMxXJPbyjgXlAW+D3QBvgj6pa77OoRKQT0ElVZ4lIK2Am\nMFpV5/pg+DjQGzjKB7yRwE9wAW8IcJ+qDhGRXGAGrpsi9es5SlU3+QdaXwd8ggt496vqG/Xlqzne\nw2sO3ltYxNhnZtAjL4vnrhxCu+w0mPUsvHMrlO+EilLXy0JdklKh/zlwzNXQoW/TZdwY0yTi4R5e\ngwGv0TYkMgF4QFXfEpGXcMFzAjDIB7xHgKmq+oKffwFwcnhQ1R/69EeAqX6Yoqq9ffr5wfnqYgGv\nbh8s2sAVT39K93ZZPHfVEPKy0/acoarSdUBbWeZeK8qgcheUboHPX4DPnoOKndBrGBxzDfQ61Sq9\nGBMn4iHg1VmkKSIT61twX7oHEpHuwEDgExEZBaxS1c9lzx/DLsCKwPhKn1Zf+spa0s1+Ov7gPJ68\n9Gguf/pTzn90Gs9fNZT8VoGgF0qC1Ewgc++FCwbBKb+CGU+4h1H/43uQf5gLfIef44o/jTEmhuqr\ntHIMUAD8F3ev7c/sR/dAIpINvAxcD1QANwG/3c/87hcRGSsiM0RkRlFRUVNuusU59qA8nrx0MCs3\n7eT8x6axvmQfHiidmQsn/g9cPwdGP+wC5MRr4d5+8N4fYfvG6GXcGGMaUGeRpogkAacB5wOHA/8G\nXlDVryJeuUgK8DowWVXvEZH+wDu4SingAupqYDBwK1ak2Wx8snQjlz31KQAZKUlUqVJZ5drxVapS\npUqVVrcTPPfoQm49uy/JSYH/UKqwdCp8/CAsfsvd5+s1DPqMgkNHuEeZGWNahHgo0ozoHp6IpOEC\n35+AW1X1gQiWEeBpoFhVr69jnuVU38M7A7iW6kor96vqYF9pZSZwpF9sFq7SSnEtlVb+qqqT6suX\nBbzIzV6xmRdnuNLkpJDsbvSeJELIj4cE1m4t5ZVZqzitTwf+ev5A0lOS9l7Z+nkw6xmYOxG2roRQ\nMvQ40QW/3mdCVl4T750xZl/EfcDzge4MXLDrDkwEnlDVVQ2uWOR4XHHoHKDKJ98UDEg1Ap4ADwDD\ncVeAl6nqDD/f5biiUIDbVfVJnz6I6mYJbwA/aahZggW86Hjqw2Xc+vpcBnXL4fFLjnaN2GujCqtn\nwdwJLvhtWgYSgm7HVQe/1p2aNvPGmAbFdcATkWeAfrgrp3GqGhf9xljAi57Xv1jNz/45m5552Tx9\n+WA6tmng6TGqsHYOzJvoAuCGhYBA3sGQ2xNyerjX3J6Q2wPadoWkOgKpMSaq4j3gVQHb/WhwJgFU\nVVtHOW9RYQEvuj5cvIGxz8ygbWYqT18+mIPaN/iMgmrr57vgt/YLKF7mhvLt1dMlCdoWukDYsR+c\n9AtIa9X4O2GM2UtcB7x4ZQEv+r5ctYVLn5xOZZXy5GWDGVDYdv9WpArb1kPxUlf0WbzUD8tg9Wdw\n7LXw7dsaN/PGmFpZwGuBLOA1jeUbtnPJE9MpKinj4YuO5ORD2zfuBl69Br74J1zziXVjZEwTiIeA\nZ70emKjonpfFSz8+hu55WVz59Axe/azBek775tTfuMbsb/6mcddrjIlbFvBM1LRvlc4/fziUQd1z\nuP6fs3ng3UUsKdrGroqqhhduSKuOcMLPYcG/XVs/Y4xpgBVpmqgrLa/k5+NnM2nOWsC16SvMyaBH\nXhY98rLpkZ9Fj3ZZ9MjPolPrdEKhCJ+/WV4KDw6G1Cz44X8hKZLOP4wx+yMeijTtF8JEXXpKEg+c\nfyRzTtzCkqJtLNuwnaUbtrOsaDvTlhazs7xy97xpySF65GVxUPtsDmqfzcHtW3FQ+2y652WSllyj\nQXtKuuusdvwlMOspOPrKpt0xY0yLYld4JqZUlXVby1i6wQfCou0sLdrGovXbWLV5J+GPZ1JI6Jqb\nSa98Fwj7d2nD8H4dSRLgqTPck1yu+wwy9rNGqDGmXnaFZ8wBEhE6tkmnY5t0ju215+PFdu6qZEnR\nNpYUbWPx+m0sWreNxUXbmLpgPRVVyg2nHcJPTj0Yhv8BHjnJPaB6+B0x2hNjTHNnAc80WxmpSfTr\n0oZ+XdrskV5eWcXPx3/OX95ZxAmH5DOg8Ag48mKY/ggMusw9qcUYY2qwWpqmxUlJCnHb6H50bJ3O\n9eM+Y3tZBQz7DSRnwJu/jnX2jDHNlAU80yK1yUjhnnOO4OviHfzutbmQ3d71xbfwP7D4nVhnzxjT\nDFnAMy3WkJ7t+PFJvfjnjBX858s1MPTH7jmbk2+CyopYZ88Y08xYwDMt2vXfOoTDC9pw4ytzWLtd\n3bM1i+bDjCdinTVjTDNjAc+0aKnJIf5y7gDKyqu44cXZVB0y0nUsO/UO2FEc6+wZY5oRC3imxeuZ\nn81vz+rDh4s38sRHy+H0P0DpFnjvrlhnzRjTjFjAM3HhvKMLOa1PB/74nwXMreoKR46B6Y9B0YJY\nZ80Y00zYk1ZM3CjevovT//I+bTNSeO3y3qQ/fLTrrjizHSSnQ1Kq62Eh/BpMCyW73tRDKf61xnhS\niuuAVqv2HlDXd98e6br3tN3vFdKy4ZDTofORIBE+O9SYGIqHJ61YwDNx5f2FRVzyxHTGHNONW/tv\ngC9ehMoyqCiFil3+/S43XrkLKspcWmW5G6rKXQ3PKj/O/nw/BCTkA1kd78t3uCDYphAOOxv6nA0F\ngyFkhS6meYqHgGdPWjFx5cRD8rn8uB488eEyTj70aE4Z/eCBrbCqsjoQVlW4qzwJBQbZezwSOzfB\ngjdg7kT49DGY9iBkd4TDzoI+o6DbsRBKang99VGFXdtc5Z2dxdC6i2uvaEyCitoVnogUAs8AHXB/\nkx9V1ftE5E/AWcAuYAlwmapu9sv8ErgCqASuU9XJPn04cB+QBDyuqnf69B7AOKAdMBO4WFV31Zcv\nu8KLf6XllYx+8EM2bCvjP9efSF52WqyzVL/SrbBwMsybAIvehoqdkJkHh50JeYfUXowaLiatqnTB\neOcmH9g2wY6N1UGuMvB1SEqDo6+A439mgc/ss3i4wotmwOsEdFLVWSLSCheQRgMFwLuqWiEidwGo\n6i9EpA/wAjAY6Ay8DRziV7cQOA1YCXwKnK+qc0VkPPCKqo4Tkb8Bn6vqw/XlywJeYliwtoSzHviA\nXvnZXHpsN0b070Tr9JRYZ6thu7bDordg7gQXBMu3N7xMKBkyciAjFzJz3T3LjJzA+1zXi8TC/8Ds\nF9w9yyE/hGOvc/MYEwELePuyIZEJwAOq+lYg7TvA91X1Qn91h6r+wU+bDNziZ71FVU/36b/0aXcC\nRUBHHzyPCc5XFwt4iWPSnDXcPXkBSzdsJy05xLf7duS7R3bhhIPySE5qAffKKna5q709ikxrDvtY\n4WXDYpj6B/jyZUhrBcdc655Qk946Ovtg4kY8BLwmuYcnIt2BgcAnNSZdDvzTv+8CTAtMW+nTAFbU\nSB+CK8bcrKoVtcxvDCP7d2JEv47MXrGZf322iomfr+a1z1eTl53G6AGd+e6RBfTp3Ix/6JNT3dCY\n8g6C7/8dTvg5TLnDNdD/5GE47noYPBZSMxt3e8Y0I1EPeCKSDbwMXK+qWwPpvwIqgOeaIA9jgbEA\nXbt2jfbmTDMiIgzsmsPArjn8+ow+TFmwnldmreTpj5fz+AfL6N2xFaMHdqFbbiYZqUlkpCSRmZrs\n3qcmkZniXtOSQ0g8NR/o0BfOew5WzYIpt8PbN8PHD8IJN7iKM23sv6OJP1ENeCKSggt2z6nqK4H0\nS4EzgVO1ukx1FVAYWLzAp1FH+kagrYgk+6u84Px7UNVHgUfBFWke4G6ZFio1OcTpfTtyet+ObNq+\ni9e/WM3Ls1Zx5xvzG1w2JJCdlkz71ul0aJ1G+1bptPevHWq8piQJVQpVqq5uCVo9XuVeM1KTSE85\nwFqYjaHLkXDRy/D1x/DubfCfX7ihVSfochQUDIKCo6HTANd20JgWLJqVVgR4GihW1esD6cOBe4CT\nVLUokN4XeJ7qSivvAAfjmg4vBE7FBbRPgQtU9SsReRF4OVBp5QtVfai+fNk9PFPT2i2lbNqxix27\nKtm5q5Kd5ZXs2FVBaXklO3a5obS8ki07y1m/tYz1JaWs21pGUUkZuyqr9mubmalJ3PW9wznriM6N\nvDcHQBXWfA4rPoGVn8LKGbBpmZsmIWjfpzoItu0GZVvdI9xqDjs3u9eyra5xf0aOqzST3rb6fUZO\n9XhyqqtVun0D7NgQeN1YPb6z2AXeU25yeTBNLh7u4UUz4B0P/BeYA4R/FW4C7gfScFdoANNU9Ud+\nmV/h7utV4IpA3/DpI4G/4JolPKGqt/v0nrhmCbnAZ8BFqlpWX74s4JnGoqps2VnOukAQXF9SSmWl\nEgq54s+QCCFxrxJ4ff2LNcz8ehPXnNKLG047dPf8zc72jbBqpguAq2a496Vbap83rQ2kt4GMNi6Y\npbWC8p1QutkFwZ2b/LIN/OaEUiArzzXNyGrnXtOyXZvFncVw6Bku8HXs1+i7a+pmAa8FsoBnmoOy\nikpunvAV4z5dwam92/OX8wbQqiU0m6iqguIlULLWBbfwkNYqsobyVVVQtiUQADe7p91k5Logl5UH\naa1rr31aVgLT/gYf/dWto+934eRfQv4he89rGp0FvBbIAp5pLlSVf0z7mltfm0v3vCweu2QQPfKy\nYp2t5m/nJvjoAZj2sGu2cfh5cNL/QW6PWOcsrlnAa4Es4Jnm5uMlG7n6uZlUVil/veBITjokP9ZZ\nahm2b4AP7oVPH3ePfRt4MZz4v1bDNEos4LVAFvBMc7SieAdXPTODhetKuHFEb646oWd8NYOIpq1r\n4L9/hplPuaLQvt+FIWOtcktNleWwvcgN24qq31eURrS4nPwLC3gtjQU801zt2FXB/7z4OZPmrOU7\nA7vwh+/2bx5NF1qKzd+4+3uzn3cPze4yCIb8yD2Mu7Eb8B+oqir3zNOtq2Dr6urXHRsbXjbczRTq\n6v8Eu55Cq5+1WrnLrW97EWxb7+6XHgC5dasFvJbGAp5pzlSVB6cs5u43F3J4QRuuPvmg3enhtny7\nh6rqtn6Ia78jvlaoCAiuRqiIIEBacojs9GRapaWQnZ5MdloyrdKT469RfelWF/SmP+oq2GR3gEGX\nw1GXQasO+7/esm2wfb0rSt223r3fVgS7Sqrnqev3tKrSBZ5wcCtZs+eDvcHVTs3MxZ3JBuzubsr3\n1hH+AAS7oArXds3Kg6z2kJUP2fnuNau9T8+H1MjuG0tSsgW8lsYCnmkJ3pq7juvHfcb2XZVR31ZK\nkpCdlkx2ejJtM1IZNaAzFw7pRkZqC7+6rKqCJe/C9Edg0ZsuAPQd7a76Oh/panruKPa9SwSH4urX\n7et9cCtyfRjWJjmjRq3SwPvd6eKaWLQugNad/dBlz/dZ+c26P0S7h9cCWcAzLcXGbWWs2VK6u/1e\nUih89SYkiexu0xf+TQ13pq6En/ASeNqLKmUVVWwrq2BbaQXbyiooKaugpLR89/i20gqWb9zOrG82\nk5edytgTe3LR0G5kpsZBt5kbl8D0x2D2c65BvIR8UWAtklKre5kIXhFlh1/DV0vtXRvB5lZcGiUW\n8FogC3jG1G/6smLuf2cRHyzeQG5WKled0JOLj+lGdlocBL6yEpjzImxZ5YLa7iHQtVJq9r73QpEA\nLOC1QBbwjInMzK+LuTBTDIQAAA6rSURBVO+dxby/sIi2mSlcdUJPLjmmW8toIG8anQW8FsgCnjH7\n5rNvNnH/O4uYsqCINhkpXHH8/7d37nFWVdcd//7unRkegwQRVAwgktISQhF1qiT68WOsouShKTWk\nPgLYNMZWCWniJ68aNWpaP7YmRlOxmBIkiQKpGqMxAkGp9YGIyEuwYohFgSIWlJcZmHtX/9j7OofL\nvTMDM8O9d+76fj7nc/bZZ+991tnnzqyz9tl7rRP4bMNAauL3Jsu5CrNmp2G5odV9TcbeTIbGpix7\nc1tm/3RTxqhJhyHbmpRIp1LUpHNpUZtOkU6JYUf3cmVbQlzhVSCu8Bzn0Fj55jvcsXAdv137Vkmu\n36M2zQUnHsfFpw3mxIEf6FozSysAV3gViCs8x2kfqze+y0sbtoeDqHTUnERxlqIEtekUdTUp6tIp\nutXEdDzOpWtSIpM1MlljXybsm7JZmrJGUzx+b1+G367Zwq9WbOK9fRk+PKA3l5w6iAtP+iC93eo7\nLLjCq0Bc4TlO5bLzD/t4ePkm7nt+A2s276B7bYpPjwpW30mD+rjV14m4wqtAXOE5TuVjZqza+C73\nL9nAw8s3sWdvhuHHHsElpw1mQsMg91DTCbjCq0Bc4TlO12JXYxOPrNjE/Us2sPLNdzm2d3e+cs4w\nLjplIDXp8l3IXWm4wqtAXOE5Ttdl8fr/49bHX2HZhncY2q+er439E8aNPLZ8A+xWEF1B4fnrj+M4\nXYYxQ4/igb/9GPdMbKAmLa66bxkX/OvT/OerW6m2l3vnQLqA6wTHcZxmJHHuiGM4e/jRPLx8I99f\n8CqTZixhzNC+fP384Zw8+MhSi3hYMTOassa+TDaui8yGdNyyVfQe4ArPcZwuSTolxp88kE+OGsDs\nJW9w5xPrGH/Xs5w74hjO+8ixvLcvw57GJnbvzbC7sYk9e5vY3Zhp3u/LkMlmyWSD0shkc5Eqgo/S\nTLbZT6miX9NUcg/vR6tIKSzGz1pYpp+rl40L9LPxGm3h/frE+tFfaq7tbLZ5vy8qOjduA/4Nz3Gc\nqmB3YxMznv49059az87Gpv3O1del6dmtJuzrQuik7nVpalMKzrpTQYmlUsFpd1rNx7C/0+5sngKy\nGMopldo/ZFMqRvQJSjLmt/FempVrTsGGtnPOxXPna9Mp6tJhXxvXP4Z9yKtJp0i3cSnHp048ruK/\n4XWahSdpEDALOIbwUjLdzH4oqS8wBxgCvA5MMLPtCgtofgh8AtgDTDazZbGtScC1sembzezemH8K\nMBPoATwGTLVq0+CO47SJ+m41TPnzYVx+xgm8vbOR+m411HdL070m7ZNaqoTOnLTSBHzNzEYAY4Cr\nJI0AvgksNLNhwMJ4DDAOGBa3K4BpAFFBXg+cBpwKXC8pNwg/Dfhiot75nXg/juN0AXp1q2FIv3r6\nH9GNnnU1ruyqiE5TeGa2OWehmdlOYC3wQeBC4N5Y7F7gMzF9ITDLAouBPpIGAOcBC8xsm5ltBxYA\n58dzvc1scbTqZiXachzHcZz9OCzLEiQNAU4CngeOMbPN8dT/EoY8ISjDNxLV3ox5LeW/WSDfcRzH\ncQ6g0xWepF7AA8BXzGxH8ly0zDr9m5ukKyQtlbR069atnX05x3EcpwzpVIUnqZag7H5uZg/G7C1x\nOJK4z8Ua2QgMSlQfGPNayh9YIP8AzGy6mTWYWUP//v3bd1OO4zhORdJpCi/Ouvx3YK2ZfT9x6lfA\npJieBDycyJ+owBjg3Tj0OQ8YK+nIOFllLDAvntshaUy81sREW47jOI6zH5258Px04PPAKknLY963\ngVuAuZK+APwPMCGee4ywJOE1wrKEywHMbJukm4AXYrkbzWxbTP8dzcsSfhM3x3EcxzkAX3juOI7j\ntEpXcB5ddQpP0laCZVlu9APeLrUQ7cDlLx2VLDu4/KWmrfIfb2YVPQmi6hReuSJpaSW/Pbn8paOS\nZQeXv9RUuvwHg4cHchzHcaoCV3iO4zhOVeAKr3yYXmoB2onLXzoqWXZw+UtNpcvfZvwbnuM4jlMV\nuIXnOI7jVAWu8BzHcZyqwBVeGSDpdUmrJC2XVPar4iXNkPSWpNWJvL6SFkhaF/dHttRGqSgi+w2S\nNsb+Xy7pE6WUsSUkDZL0pKQ1kl6WNDXmV0r/F5O/Ip6BpO6SlkhaEeX/bsw/QdLzkl6TNEdSXall\nzacF2WdK+n2i70eXWtbOwr/hlQGSXgcazKwiFq9KOhPYRYhfODLm3QpsM7NbJH0TONLMvlFKOQtR\nRPYbgF1m9i+llK0tRIfrA8xsmaQjgBcJcSAnUxn9X0z+CVTAM4h+e+vNbFd0jv80MBX4KvCgmc2W\ndDewwsymlVLWfFqQ/UrgUTP7j5IKeBhwC885aMzsKWBbXnaxwL5lRRHZK4ZDCKxcVrQgf0UQA1Tv\nioe1cTPgbCCnMMqy/1uQvWpwhVceGDBf0ouSrii1MIdIscC+lcLVklbGIc+yHA7Mp42BlcuWPPmh\nQp6BpHR0iP8WsAD4HfCOmTXFImUbjDpfdjPL9f33Yt//QFK3EorYqbjCKw/OMLOTgXHAVXHYrWI5\nXIF9O5BpwIeA0cBm4LbSitM65RBYuT0UkL9inoGZZcxsNCEG56nA8BKL1GbyZZc0EvgW4R7+DOgL\nlN1QeEfhCq8MMLONcf8W8BDhj6jSKBbYt+wxsy3xH0EWuIcy738dXGDlsqOQ/JX2DADM7B3gSeCj\nQB9JuXBrRYNRlwsJ2c+Pw8xmZo3AT6iAvj9UXOGVGEn18eM9kuoJAW5Xt1yrLCkW2LfsySmKyF9Q\nxv0fJx4cTGDlsqKY/JXyDCT1l9QnpnsA5xK+Qz4JXBSLlWX/F5H9lcSLkgjfHsuy7zsCn6VZYiQN\nJVh1EALy3mdm3yuhSK0i6X7gLEJYkS3A9cAvgbnAYGJg30Sg3rKhiOxnEYbSDHgd+FLie1hZIekM\n4L+AVUA2Zn+b8B2sEvq/mPwXUwHPQNIowqSUNMFgmGtmN8a/49mEIcGXgMuixVQ2tCD7E0B/QMBy\n4MrE5JYuhSs8x3EcpyrwIU3HcRynKnCF5ziO41QFrvAcx3GcqsAVnuM4jlMVuMJzHKdVJNVIuror\ne+Fwuj6u8JwOQ5JJui1xfE10zNwRbXfaNGlJiyQ1dFb7Ba53paSJrZSZKemiAvlnSXq086QrKIuA\n24GVxabaK0T86BfTz7bS3mRJxyWOfyxpREfK7DiFqGm9iOO0mUZgvKR/KkXkB0k1CX+GZUmU8e5S\ny9EWcv0ZXZVd3dZ6ZvaxVopMJixu3hTL/80hC+k4B4FbeE5H0gRMB/4+/4SkIZKeiA5qF0oaHPNn\nSpomabGk9dGCmSFpraSZeW38IMbxWiipf8xbJOl2hTiCU6M3iQckvRC30wvI0kPS7HiNh4AeiXNj\nJT0naZmkX0Sfj8m6wyUtybuvVTF9XbzmaknTo2VUSMYbJF0Tz30x1lkR5e6ZuNw5kpZKelXSpwrc\nR33sqyWSXpJ0Ycz/SMxbHvt7WIG6u9rTn5KOkjQ/1v8xYdHy+20n0t9QiPW4QtIt0WptAH4e5euR\ns7Cj5fvPibqTJf0opi9L3NO/KThBTsffz+p4jQN+d46zH2bmm28dshHizPUmeMr4AHANcEM89wgw\nKab/GvhlTM8keKgQIcTNDuBPCS9jLwKjYzkDLo3p64AfxfQi4K6EDPcRnHFD8DqytoCcXwVmxPQo\ngqJuIHhfeYoQMwyCE93rCtRfDpyQKHNtTPdNlPkp8OkiMt4AXBPTRyXybwamJPrl8dgPwwge+LsT\nvMI8Gsv8I8GjB0Af4FWgHrgz0Vd1QI8C99Cu/gTuyPUN8MnYXr/c7yDuxwHPAj2T/ROv0ZC4xqLY\n//2B1xL5vwHOAD5M+P3Uxvy7gInAKQSP/7nyfUr9N+BbeW8+pOl0KGa2Q9Is4MvAe4lTHwXGx/RP\ngVsT5x4xM4uW0hYzy1lMLwNDCAomC8yJ5X8GPJioPyeRPgcYEY0rgN6Setn+rpLOJPzDxsxWSloZ\n88cAI4BnYv064LkCtzkX+BxwS9x/LuZ/XNLXgZ4EF1MvE/5R58uYZKSkmwkKqxcwL3kdC86U10la\nz4Fe+ccCF+SsRYJCHBxl/gdJAwlBSdcVuG67+pPQh+MBzOzXkrYXuMY5wE/MbE8s16KrMzPbGq38\nMcC6eL/PAFcRlNsLUY4eBOfYjwBDJd0J/BqY31L7juMKz+kMbgeWETyvt4XcRIhsIp07LvYbTfrE\n251Ip4AxZvaHNl47iQgWw8WtlJsD/ELSg4RoPOskdSdYHg1m9obCZJ3uRWRMMhP4jJmtkDSZYMHl\nyPf7l38s4C/N7L/z8tdKep5geT0m6Utm9kQr93RQ/ZlQgB3NbEL081eAh+KLkIB7zexb+YUlnQic\nR4jaPYEweuA4BfFveE6HE9/k5wJfSGQ/C/xVTF9KcCB8MKRo9kZ/CfB0kXLzgSm5A0mjC5R5KraB\nQjywUTF/MXC6pD+K5+ol/XF+ZTP7HZABvkOzNZRTbm9HC+iAGZZFOALYrBAy59K8c5+VlJL0IWAo\nkK/Y5gFTEt8KT4r7ocB6M7uD4LV/FAfS3v5M9uE4oFDA1gXA5bnvkpL6xvyd8b4L8RBhaPtigvID\nWAhcJOnoXDuSjleYFZoysweAa4GTi7TpOIArPKfzuI3wTSzHFMI/v5XA54GpB9nebkLAytXA2cCN\nRcp9GWiIkzXWEN7885kG9JK0NrbzIoQhNcIMwvujnM9RPLjnHOAygmLHQnyxewizD+cBL7Txvr5D\niHTwDMGqSbIBWEL4lnVlAav1JqAWWBmHf2+K+ROA1QqRrUcCswpct739+V3gzHjd8VHW/TCzxwlh\ni5ZGWXJDrzOBu3OTVvLqbCeE2znezJbEvDUEhTY/PpcFwABCVPFFse2fEQKZOk5RPFqC41QhknaZ\nWa/WSzpO18EtPMdxHKcqcAvPcRzHqQrcwnMcx3GqAld4juM4TlXgCs9xHMepClzhOY7jOFWBKzzH\ncRynKnCF5ziO41QF/w+UhPNdgLL9qAAAAABJRU5ErkJggg==\n",
"text/plain": [
"
"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "W0xYzhPQ1lRN",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 35
},
"outputId": "01462152-80e5-4bba-f64f-89b5f4a3a26f"
},
"source": [
"maes['val'].min(), maes['val'].idxmin()"
],
"execution_count": 393,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"(21187.228717528884, 28)"
]
},
"metadata": {
"tags": []
},
"execution_count": 393
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "7b-C0Mb14Hzo",
"colab_type": "text"
},
"source": [
"* On peut constater que les 10-12 variables prédictives les moins corrélées à SalePrice sont (logiquement) assez inefficaces pour prédire le prix.\n",
"* Les meilleurs résultats en validation sont obtenus avec les 25-30 variables les plus corrélées au prix. (cela peut varier selon la sélection du set d'entraînement)\n",
"\n"
]
},
{
"cell_type": "code",
"metadata": {
"id": "dswF-30GVnAN",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 439
},
"outputId": "4fe9ae6d-1c0b-416a-e2c5-74b71cbf402b"
},
"source": [
"#Meilleur résultat en validation\n",
"featurelist = best_features[:28]\n",
"\n",
"X = ames[featurelist]\n",
"y = ames[\"SalePrice\"]\n",
"\n",
"Xtrain, Xval, ytrain, yval = X.loc[trainids], X.loc[valids], y.loc[trainids], y.loc[valids]\n",
"\n",
"price_predictor.fit(Xtrain, ytrain)\n",
"trainpred = price_predictor.predict(Xtrain)\n",
"valpred = price_predictor.predict(Xval)\n",
"\n",
"def display_results(labels, predictions, title = \"Model results\", figsize = (10,6), **kwargs):\n",
" \n",
" print(\"Mean average error: \", MAE(labels, predictions)) \n",
" plt.scatter(labels, predictions, s=2, label = title, **kwargs)\n",
" plt.gcf().set_size_inches(figsize)\n",
" plt.title(title)\n",
" plt.xlabel(\"Labels\")\n",
" plt.ylabel(\"Prédictions\")\n",
" prev_legend = plt.legend()\n",
" plt.legend()\n",
" xmin, xmax = plt.gca().get_xlim()\n",
" plt.plot([xmin,xmax],[xmin,xmax], 'k')\n",
"\n",
"print(MAE(ytrain, trainpred), MAE(yval, valpred))\n",
"\n",
"display_results(yval, valpred, \"Régression linéaire - validation set\")"
],
"execution_count": 394,
"outputs": [
{
"output_type": "stream",
"text": [
"20316.58741840932 21187.228717528884\n",
"Mean average error: 21187.228717528884\n"
],
"name": "stdout"
},
{
"output_type": "display_data",
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAn0AAAGDCAYAAABeA6Y5AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzs3Xd4VVXWx/Hvogk40rHSLAkKSA2C\nDVGpguJYUCygovgqShUGUAYH6dVYkEFBQEVEGKQMgoAgggokyFBNQCSEJi0UCT37/eOe4CWmAjc3\n5fd5nvvknH3POXvdm8y4WPvsfcw5h4iIiIjkbHmCHYCIiIiIBJ6SPhEREZFcQEmfiIiISC6gpE9E\nREQkF1DSJyIiIpILKOkTERERyQWU9InkImb2vpn1D3Yc/sysl5l9FIDrPmNmS/32/zCz6zJ4jVJm\nttrMwtJ5fDmvn7wZjTezmdl4M+vnbd9pZlHpOfY8+8rwdy8iF5+SPpFszsy2mtkx7z+su73/QP8t\nmePaASedc68HIcwUOecGOOeez4R+/uac25Le480sPzABeNk5F5HOPrZ5/Zw53ziDwTn3vXOu4sW4\nlpktNrNzfp8Z/e4DycwqmJkzs3zBjkUksynpE8kZ7nfO/Q2oDtQAeiY9wDk3xjnX+UI6yQ4VrIvF\nOXfKOdfMOffDxbie+ej/c0UkaPR/QCI5iHNuNzAPX/IHgJldYmbDzGybmf1uZqPNrJDf+93NbJeZ\n7TSz570qyA3ee+PN7AMzm2NmR4G7U7ueNxw628wOmtkBM/s+MdExs3+Y2Q4zO2JmUWZ2r9f+ppl9\n6hfPA2a23rvGYjO7ye+9rWb2mpmtMbNDZvaFmRVMz3eTzOd638z+68Wz3Myu9zv2RjOb732GKDNr\n6fdeMzP72cwOm1msmb3p9945VSQv/v5mtgyIB64zs6JmNtb7zneYWb/zTabNbKOZNffbz2dme82s\nprf/pVf9PWRmS8yscgrXqW9m2/32a5jZKu+7+QIo6Pdece93vNfM4rztMt57/YE7gfe8yvN7yXz3\nRc1sond+jJm94fc38oyZLfX+vuLM7Dcza5rK50/pbyqPmfUws1/NbL+ZTTGzEt5pS7yfB70Yb83g\n1y6SbSnpE8lBvP/4NgU2+zUPAkLxJYI3ANcA//SObwJ0ARp479VP5rJPAP2By4ClqV0P6ApsB0oD\n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\n",
"text/plain": [
"
"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "uugb_WZ_hh8D",
"colab_type": "text"
},
"source": [
"On constate que le nuage de doit semble former une légère courbe. Cela semble indiquer qu'il existe des relations non-linéaires, telles que des relations polynomiales entre les variables et le prix. La régression linéaire se base en effet sur l'hypothèse très simpliste que les relations seraient linéaires. Si on revisualise les nuages de points plus haut montrant l'interactions entre différentes variables (comme 'OverallQual') et le prix, on constate que la relation et plutôt quadratique que linéaire.\n",
"\n",
"Une variation de la régression linéaire, appelée régression polynomiale, permet de facilement prendre en compte de potentielles interactions non-linéaires entre les variables, en créant de nouvelles variables à partir de polynômes des variables d'origine. Bien sûr, les possibilités ne se liminent pas aux polynômes."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "TAI-or-klHpt",
"colab_type": "text"
},
"source": [
"##Régression polynomiale"
]
},
{
"cell_type": "code",
"metadata": {
"id": "EgiED5-Ug39a",
"colab_type": "code",
"colab": {}
},
"source": [
"def add_polynomials(X):\n",
" #(remove some unwanted warnings)\n",
" prev = pd.options.mode.chained_assignment\n",
" pd.options.mode.chained_assignment = None\n",
" for col in X.columns:\n",
" #prise en compte des carrés des variables\n",
" X[col+\"_square\"] = X[col]**2\n",
" #prise en compte des racines carrées\n",
" X[col+\"_sqrt\"] = X[col]**(1/2)\n",
" \n",
" pd.options.mode.chained_assignment = prev\n",
" \n",
" return X"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "0Cp45O_3hEqJ",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 439
},
"outputId": "f329c598-9b0e-48de-dbaf-b16fbf0fd1f4"
},
"source": [
"featurelist = best_features[:28]\n",
"\n",
"X = ames[featurelist]\n",
"X = add_polynomials(X)\n",
"\n",
"Xtrain, Xval, ytrain, yval = X.loc[trainids], X.loc[valids], y.loc[trainids], y.loc[valids]\n",
"price_predictor.fit(Xtrain, ytrain)\n",
"trainpred, valpred = price_predictor.predict(Xtrain), price_predictor.predict(Xval)\n",
"\n",
"print(\"MAE (train,val):\", MAE(trainpred, ytrain), MAE(valpred, yval))\n",
"display_results(yval, valpred, \"Régression polynomiale (sqrt et square) - validation set\")"
],
"execution_count": 396,
"outputs": [
{
"output_type": "stream",
"text": [
"MAE (train,val): 18935.991226609982 20230.204028521497\n",
"Mean average error: 20230.204028521497\n"
],
"name": "stdout"
},
{
"output_type": "display_data",
"data": {
"image/png": "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\neT2zmHV71HbxExERkVZO3cciIiIioqBQRERERBQUioiIiAgKCkVEREQEBYUiIiIigoJCEREREUFB\noYiIiIigoFBEREREUFAoIiIiIigoFBEREREUFIqIiIgICgpFREREBAWFIiIiIoKCQhERERFBQaGI\niIiIoKBQRERERFBQKCIiIiIoKBQRERERFBSKiIiICAoKRURERAQFhSIiIiKCgkIRERERQUGhiIiI\niKCgUERERERQUCgiIiIiKCgUERERERQUioiIiAgKCkVEREQEBYUiIiIigoJCEREREUFBoYiIiIig\noFBEREREUFAoIiIiIigoFBEREREUFIqIiIgICgpFREREBAWFIiIiIoKCQhEREREhSkGhmT1uZmvN\n7Asz+7OZZYadm2xmG81snZmNDksf46dtNLMHwtJ7m9lCP322mSX66Un+643++V5N5SEiIiISq6LV\nUvg+MNA5NwhYD0wGMLP+wM3AAGAM8AczC5hZAHgKGAv0B27xrwX4T+C/nXPfBAqA2/3024ECP/2/\n/esazCPCzysiIiLSqkUlKHTOveecq/JfLgBy/ePxwEvOuXLn3FfARuAC/2ujc26zc64CeAkYb2YG\nXA780X//TODasHvN9I//CFzhX99QHiIiIiIxqzWMKfw+8I5/3A3YHnZuh5/WUHpH4FBYgBlMr3Uv\n/3yhf31D9zqGmd1lZovNbPG+fftO6OFERERETgfxkbqxmc0DutZz6mfOudf9a34GVAEvRKocJ8M5\nNw2YBjB06FAX5eKIiIiIREzEgkLn3MjGzpvZRGAccIVzLhhw7QS6h12W66fRQPoBINPM4v3WwPDr\ng/faYWbxQHv/+sbyEBEREYlJ0Zp9PAa4H7jGOVcaduoN4GZ/5nBvIA/4HFgE5PkzjRPxJoq84QeT\nHwI3+O+fALwedq8J/vENwF/86xvKQ0RERCRmRaylsAlPAknA+97cDxY45yY551ab2cvAGrxu5R86\n56oBzOxHwFwgADzjnFvt3+snwEtm9itgGTDDT58BPG9mG4GDeIEkjeUhIiIiEqvsaM+tNGbo0KFu\n8eLF0S6GiIiISJPMbIlzbujxvKc1zD4WERERkShTUCgiIiIiCgpFREREREGhiIiIiKCgUERERERQ\nUCgiIiIiKCgUERERERQUioiIiAgKCkVEREQEBYUiIiIigoJCEREREUFBoYiIiIigoFBEREREUFAo\nIiIiIigoFBEREREUFIqIiIgICgpFREREBAWFIiIiIoKCQhERERFBQaGIiIiIoKBQRERERFBQKCIi\nIiIoKBQRERERFBSKiIiICAoKRURERAQFhSIiIiKCgkIRERERQUGhiIiIiKCgUERERERQUCgiIiIi\nKCgUERERERQUjKh7rgAACkVJREFUioiIiAgKCkWabcnWAm6dsZAlWwuiXRQREZEWp6BQpJmmzFvP\n/A37mTJvfbSLIiIi0uLio10AkdPFPSP71vouIiLSligoFGmm83pmMev2YdEuhoiISESo+1hERERE\nFBSKiIiIiIJCEREREUFBoYiIiIigoFBEREREUFAoIiIiIigoFBERERGiHBSa2b+amTOzbP+1mdkT\nZrbRzL4ws3PDrp1gZhv8rwlh6eeZ2Ur/PU+YmfnpHczsff/6980sq6k8RERERGJV1IJCM+sOjAK2\nhSWPBfL8r7uA//Gv7QD8HBgGXAD8PBjk+dfcGfa+MX76A8AHzrk84AP/dYN5iIiIiMSyaLYU/jdw\nP+DC0sYDs5xnAZBpZjnAaOB959xB51wB8D4wxj/Xzjm3wDnngFnAtWH3mukfz6yTXl8eIiIiIjEr\nKkGhmY0HdjrnVtQ51Q3YHvZ6h5/WWPqOetIBujjndvnHu4EuTeQhIiIiErMitvexmc0DutZz6mfA\nT/G6jk8J55wzM9f0lbWZ2V14Xcz06NGjxcslIiIi0lpELCh0zo2sL93MzgZ6Ayv8OSG5wFIzuwDY\nCXQPuzzXT9sJjKiT/pGfnlvP9QB7zCzHObfL7x7e66c3lEd9zzANmOaXe5+ZbW34iVtMNrD/FOTT\nmqkOVAegOgDVAagOQHUAqoMTef6ex5tJxILChjjnVgKdg6/NbAsw1Dm338zeAH5kZi/hTSop9IO6\nucCjYZNLRgGTnXMHzazIzC4EFgK3Ar/3r3kDmAA85n9/PSz9mDyaUe5OJ/XgzWRmi51zQ09FXq2V\n6kB1AKoDUB2A6gBUB6A6OFXPf8qDwibMAa4CNgKlwG0AfvD3CLDIv+5h59xB//gHwHNACvCO/wVe\nMPiymd0ObAVubCwPERERkVgW9aDQOdcr7NgBP2zgumeAZ+pJXwwMrCf9AHBFPekN5iEiIiISq7Sj\nSeszLdoFaAVUB6oDUB2A6gBUB6A6ANXBKXl+8xrORERERCSWqaVQRERERBQUthZmNsbM1vl7Mj/Q\n9DtaHzN7xsz2mtmqsLTj3oO6pfa5jgYz625mH5rZGjNbbWb3NFbGtlgPZpZsZp+b2Qq/Dn7pp/c2\ns4V+uWebWaKfnuS/3uif7xV2r8l++jozGx2WXu/npaE8osHMAma2zMzeaqxsbfX5/fJs8X9Wl5vZ\nYj8tZj4LflkyzeyPZrbWzL40s4tiqQ7M7Ez/3z/4VWRm98ZYHfyLeb8LV5nZ/5r3O7Lez6pF+/eB\nc05fUf4CAsAm4AwgEVgB9I92uU7gOYYD5wKrwtJ+AzzgHz8A/Kd/fBXeTHEDLgQW+ukdgM3+9yz/\nOMs/97l/rfnvHdtYHlGqgxzgXP84A1gP9I+levDLle4fJ+AtF3Uh8DJws58+Ffg//vEPgKn+8c3A\nbP+4v/9ZSMJb23ST/1lp8PPSUB5RqocfAy8CbzVWtrb6/H4ZtgDZddJi5rPg5z8TuMM/TgQyY60O\nwuoigLfDWM9YqQO8HdO+AlL81y8DExv6rBLl3wdR/QHRV+iH5iJgbtjryXjrMEa9bCfwLL2oHRSu\nA3L84xxgnX+cD9xS9zrgFiA/LD3fT8sB1oalh65rKI/W8IW3PuaVsVoPQCqwFG9N0P1AvJ8e+pkH\n5gIX+cfx/nVW93MQvK6hz4v/nnrziMJz5wIfAJcDbzVWtrb4/GFl28KxQWHMfBaA9ngBgcVqHdR5\n7lHAp7FUBxzdWreD//l+Cxjd0GeVKP8+UPdx69CW92M+3j2oW3Kf66jym/2H4LWUxVQ9mNd1uhxv\nJ6H38f6SPeScq/IvCS936Fn984VAR46/bjo2ksep9n+B+4Ea/3VjZWuLzx/kgPfMbIl524ZCbH0W\negP7gGfNG0ow3czSGilfW6yDcDcD/+sfx0QdOOd2Ar8FtgG78D7fS2ilvw8UFMop47w/V9zpnkdz\nmFk68Cpwr3OuKPxcLNSDc67aOTcYr8XsAuCsaJXlVDOzccBe59ySaJelFbjEOXcuMBb4oZkNDz8Z\nA5+FeLwhNf/jnBsClOB1Y4bEQB0A4I9nuwZ4pe65tlwH/jjG8Xh/IHwDSAPGnOpyNJeCwtah2fsx\nn4b2mLf3NNa8PagbS290n+t68ogKM0vACwhfcM79yU+OuXoAcM4dAj7E67rINLPggvnh5Q49q3++\nPXCA46+bA43kcSpdDFxj3haeL+F1IU9ppGxt7flD/FYSnHN7gT/j/YEQS5+FHcAO59xC//Uf8YLE\nWKqDoLHAUufcHv91rNTBSOAr59w+51wl8Ce83xGt8veBgsLWYRGQ588USsRrYn8jymVqKcE9qOHY\nPahv9WeaXcjRPajnAqPMLMv/C2sU3jiIXUCRmV3ozyy7tc696svjlPPLNgP40jn3X2GnYqYezKyT\nmWX6xyl4Yyq/xAsOb6infOHlvgH4i/9X/RvAzf5svN5AHt6A8no/L/57GsrjlHHOTXbO5Tpvt6ab\n8Z7nHxspW5t6/iAzSzOzjOAx3s/wKmLos+Cc2w1sN7Mz/aQrgDXEUB2EuYWjXccQO3WwDbjQzFL9\n8gV/Blrn74NTPehSXw0ORr0Kb6bqJuBn0S7PCT7D/+KNmajE+wv5drxxDR8AG4B5QAf/WgOe8p93\nJTA07D7fx9ubeiNwW1j6ULz/VDYBT3J08fV684hSHVyC10XxBbDc/7oqluoBGAQs8+tgFfCQn36G\n/0tsI14XUpKfnuy/3uifPyPsXj/zn3Md/ozCxj4vDeURxZ+HERydfRxTz++XZYX/tTpYzlj6LPhl\nGQws9j8Pr+HNnI21OkjDa7lqH5YWM3UA/BJY65fxebwZxK3y94F2NBERERERdR+LiIiIiIJCERER\nEUFBoYiIiIigoFBEREREUFAoIiIiIigoFBE5aWZWfBzX/sLM/i1S9xcROVEKCkVEREREQaGISCSY\n2dVmttDMlpnZPDPrEnb6HDP7zMw2mNmdYe+5z8wWmdkXZvbLeu6ZY2bzzWy5ma0ys0tPycOISExQ\nUCgiEhmfABc654bg7YF8f9i5QXh7Il8EPGRm3zCzUXhbV12AtwvGeWY2vM49v4O3tddg4By8HXNE\nRFpEfNOXiIjICcgFZptZDpAIfBV27nXnXBlQZmYf4gWCl+Dt57rMvyYdL0icH/a+RcAzZpYAvOac\nU1AoIi1GLYUiIpHxe+BJ59zZwN14e5oG1d1f1OHt+fofzrnB/tc3nXMzal3k3HxgOLATeM7Mbo1c\n8UUk1igoFBGJjPZ4wRvAhDrnxptZspl1BEbgtQDOBb5vZukAZtbNzDqHv8nMegJ7nHNPA9OBcyNY\nfhGJMeo+FhE5ealmtiPs9X8BvwBeMbMC4C9A77DzXwAfAtnAI865r4Gvzawf8JmZARQD3wX2hr1v\nBHCfmVX659VSKCItxpyr24shIiIiIrFG3cciIiIioqBQRERERBQUioiIiAgKCkVEREQEBYUiIiIi\ngoJCEREREUFBoYiIiIigoFBEREREgP8PO2c+0vv3avcAAAAASUVORK5CYII=\n",
"text/plain": [
"
"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "OO_nP6e-ru99",
"colab_type": "text"
},
"source": [
"Les prédiction semblent suivre une ligne droite. On remarque par contre que certaines prédictions parfois sont très mauvaises, et parfois même négatives (et peuvent aller jusqu'à -5.000.000 selon l'état pseudo-aléatoire utilisé).\n",
"\n",
"Un simple bornage des prédictions entre les prix minimum et maximum du set d'entraînement permet de limiter ces erreurs exceptionnelles.\n",
"\n",
"Néanmoins, selon les objectifs, il convient de définir une métrique d'évaluation appropriée: si quelques rares erreurs très grandes sont tolérables, ou si il est préférable d'avoir des prédictions globalement un peu moins précises mais sans gros écarts.\n",
"Dans tous les cas, on peut facilement améliorer les résultats en contraignant les prédictions entre des valeurs limites."
]
},
{
"cell_type": "code",
"metadata": {
"id": "nKU4XFodjXLX",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 129
},
"outputId": "0b44210b-343b-47a6-ad38-7784cdf558f6"
},
"source": [
"lowest_pred_index = yval.index[valpred.argmin()]\n",
"display_series(ames.loc[lowest_pred_index])"
],
"execution_count": 397,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
"
"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "atnp5Lo6aaLe",
"colab_type": "text"
},
"source": [
"On constate que les performances diminuent (l'erreur augmente) avec le nombre d'échantillons d'entraînement, et que les performances en validation sont au départ beaucoup plus faibles, ce qui est signe d'**overfitting**. En effet, en utilisant seulement 50 exemples (gauche du graphe), on remarque que le modèle compte presque autant de paramètres (un par variable prédictive). Dans ce cas, les paramètres peuvent être adaptés aux exemples spécifiques d'entraînement pour apprendre leur prédiction presque \"par coeur\". Le modèle n'est alors pas générique et fonctionne mal sur de nouvelles données (comme le montrent les faibles performances en validation). On constate ensuite que pour 400 échantillons d'entraînement, les performances en entraînement se stabilisent, et les performances en validation sont équivalentes, ce qui signifie que le nombre d'échantillons est suffisant (plus d'overfitting)."
]
},
{
"cell_type": "code",
"metadata": {
"id": "K6tK_SqBZZY0",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 35
},
"outputId": "3f98d994-7f46-4d18-e47f-dcc4b422fb5e"
},
"source": [
"len(price_predictor.coef_)"
],
"execution_count": 400,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"28"
]
},
"metadata": {
"tags": []
},
"execution_count": 400
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "JL63VJR3c7fu",
"colab_type": "text"
},
"source": [
"## Performances réelles\n",
"\n",
"Pour évaluer les performances réelles du modèles, nous devons utiliser un set de données qui n'a pas encore été utilisé, ni pour l'entraînement ni pour la validation. Cela permet de simuler une utilisation réelle du modèle, sur de nouvelles maisons (dont on voudrait estimer le prix). L'évaluation des performances à partir du set de validation seraient biaisée, car il a en effet permis de choisir les paramètres du modèles, en l'occurence le choix des variables prédictives (le modèle a donc été indirectement optimisé pour ces données spécifiques).\n",
"\n",
"Sur la plateforme [Kaggle](https://www.kaggle.com/), pour garantir l'absence de biais lors du design du modèle, un set de test est généralement fourni séparément, et les labels ne sont volontairement pas fournis. L'utilisateur de la plateforme doit alors soumettre à la plateforme les prédictions données par le modèle développé, et reçoit le résultat de l'évaluation effectuée par la plateforme. Cela permet notamment de classer différents compétiteurs lors d'un concours: https://www.kaggle.com/competitions\n",
"\n",
"Concernant le dataset utilisé, on peut soumettre des prédictions ici: https://www.kaggle.com/c/home-data-for-ml-course/overview/evaluation\n",
"\n",
"Remarque: lorsque le concours ne sera fini, il sera toujours possible de récupérer les données complète ici: https://www.kaggle.com/prevek18/ames-housing-dataset\n",
"\n"
]
},
{
"cell_type": "code",
"metadata": {
"id": "i5eYYBMhTQJl",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 35
},
"outputId": "9313dd30-4059-49c0-ed2c-fd11bdf04f62"
},
"source": [
"# Vérifions déjà les performances sur le set de validation\n",
"#Régression linéaire\n",
"\n",
"X = ames[featurelist]\n",
"y = ames[\"SalePrice\"]\n",
"\n",
"Xtrain, Xval, ytrain, yval = X.loc[trainids], X.loc[valids], y.loc[trainids], y.loc[valids]\n",
"\n",
"price_predictor.fit(Xtrain, ytrain)\n",
"\n",
"trainpreds = price_predictor.predict(Xtrain).clip(ytrain.min(), ytrain.max())\n",
"valpreds_lin = price_predictor.predict(Xval).clip(ytrain.min(), ytrain.max())\n",
"\n",
"MAE(trainpreds,ytrain.values), MAE(valpreds_lin,yval.values)"
],
"execution_count": 401,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"(20164.0980898648, 21040.7804916666)"
]
},
"metadata": {
"tags": []
},
"execution_count": 401
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "P_tHgbL2p_mz",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 35
},
"outputId": "632f07da-8ed1-4760-9826-1466a3f921a8"
},
"source": [
"#Régression polynomiale\n",
"X = ames[featurelist]\n",
"X = add_polynomials(X)\n",
"\n",
"Xtrain, Xval, ytrain, yval = X.loc[trainids], X.loc[valids], y.loc[trainids], y.loc[valids]\n",
"\n",
"poly_predictor = LinearRegression()\n",
"poly_predictor.fit(Xtrain, ytrain)\n",
"\n",
"trainpreds = poly_predictor.predict(Xtrain).clip(ytrain.min(), ytrain.max())\n",
"valpreds_poly = poly_predictor.predict(Xval).clip(ytrain.min(), ytrain.max())\n",
"\n",
"MAE(trainpreds,ytrain.values), MAE(valpreds_poly,yval.values)"
],
"execution_count": 402,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"(18891.879496570047, 19434.25335313196)"
]
},
"metadata": {
"tags": []
},
"execution_count": 402
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "0xDnxJVEhBI0",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 439
},
"outputId": "b8986a91-c4e0-4608-87f2-846e139a38d9"
},
"source": [
"display_results(yval.values, valpreds_lin, \"Régression linéaire\")\n",
"display_results(yval.values, valpreds_poly, \"Régression polynomiale\")"
],
"execution_count": 403,
"outputs": [
{
"output_type": "stream",
"text": [
"Mean average error: 21040.7804916666\n",
"Mean average error: 19434.25335313196\n"
],
"name": "stdout"
},
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"
"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "2chtMCm7-T7k",
"colab_type": "text"
},
"source": [
"Remarquez que vous obtiendrez des résultats différents à chaque fois que vous relancez les cellules ci-dessus avec un random_state différent: cela est dû à la séparation aléatoire des sets d'entraînement et de validation. \n",
"\n",
"Afin d'avoir un indicateur plus robuste du modèle, une possibilité serait de calculer une moyenne de ces résultats, ou d'utiliser un processus de **k-fold cross-validation**: on découpe l'ensemble des données en k échantillons, et pour chaque échantillon on entraînement un modèle sur les autres données, et on calcule les prédictions pour l'échantillon gardé de côté. On calcule de cette manière des prédictions pour chaque échantillon et on extrait une mesure (e.g., MAE) sur l'ensemble des prédictions."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "NW14_M7l0N5X",
"colab_type": "text"
},
"source": [
"### Vérification du set de test"
]
},
{
"cell_type": "code",
"metadata": {
"id": "QM8eeCvzzsLa",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 114
},
"outputId": "e9f357aa-5656-4c2a-92d6-4cd68f1d7da6"
},
"source": [
"testset = pd.read_csv(\"https://raw.githubusercontent.com/titsitits/Python_Data_Science/master/Donn%C3%A9es/test.csv\")\n",
"\n",
"ids = testset['Id']\n",
"\n",
"print(len(testset))\n",
"\n",
"#nettoyage du testset\n",
"testset = clean_df(testset)\n",
"\n",
"#Colonnes incomplètes\n",
"counts = testset.count()\n",
"incomplete = counts[counts < len(testset)]\n",
"display_series(incomplete.sort_values())\n",
"len(incomplete.index)"
],
"execution_count": 404,
"outputs": [
{
"output_type": "stream",
"text": [
"1459\n"
],
"name": "stdout"
},
{
"output_type": "display_data",
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
BsmtFullBath
\n",
"
BsmtHalfBath
\n",
"
BsmtFinSF1
\n",
"
BsmtFinSF2
\n",
"
BsmtUnfSF
\n",
"
TotalBsmtSF
\n",
"
GarageCars
\n",
"
GarageArea
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
1457
\n",
"
1457
\n",
"
1458
\n",
"
1458
\n",
"
1458
\n",
"
1458
\n",
"
1458
\n",
"
1458
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" BsmtFullBath BsmtHalfBath BsmtFinSF1 ... TotalBsmtSF GarageCars GarageArea\n",
"0 1457 1457 1458 ... 1458 1458 1458\n",
"\n",
"[1 rows x 8 columns]"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
"8"
]
},
"metadata": {
"tags": []
},
"execution_count": 404
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "J1KVfZDT4hkF",
"colab_type": "text"
},
"source": [
"Il reste deux observations contenant des variables invalides. On va simplement remplacer les valeurs manquantes par les moyennes. Si le nombre d'observations à nettoyer était plus conséquent, il serait pertinent d'analyser les variables à corriger."
]
},
{
"cell_type": "code",
"metadata": {
"id": "1BVOHMFc_H0D",
"colab_type": "code",
"colab": {}
},
"source": [
"for col in incomplete.index:\n",
" testset[col] = testset[col].fillna(ames[col].mean())"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "1ai3HrFnNLmt",
"colab_type": "text"
},
"source": [
"### Soumission des résultats"
]
},
{
"cell_type": "code",
"metadata": {
"id": "tSvjBcA7bEi9",
"colab_type": "code",
"colab": {}
},
"source": [
"X = ames[featurelist]\n",
"y = ames[\"SalePrice\"]\n",
"#On peut ré-entraîner le modèle sur tout le dataset (entraînement+validation), pour le rendre potentiellement plus robuste\n",
"price_predictor.fit(X, y)\n",
"\n",
"#select features\n",
"Xtest = testset[featurelist]\n",
"\n",
"testpreds_lin = price_predictor.predict(Xtest).clip(ytrain.min(), ytrain.max())\n",
"\n",
"submission = ids.to_frame()\n",
"submission[\"SalePrice\"] = testpreds_lin\n",
"submission.to_csv(\"mysubmission_linear_regression.csv\", index = False)"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "DkM2iUzEpspz",
"colab_type": "code",
"colab": {}
},
"source": [
"Xtest2 = add_polynomials(Xtest)\n",
"\n",
"X = ames[featurelist]\n",
"X = add_polynomials(X)\n",
"poly_predictor.fit(X, y)\n",
"\n",
"testpreds_poly = poly_predictor.predict(Xtest2).clip(ytrain.min(), ytrain.max())\n",
"\n",
"submission = ids.to_frame()\n",
"submission[\"SalePrice\"] = testpreds_poly\n",
"submission.to_csv(\"mysubmission_polynomial_regression.csv\", index = False)"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "23u9i5kTpKME",
"colab_type": "text"
},
"source": [
"## Exploration de base des variables catégorielles"
]
},
{
"cell_type": "code",
"metadata": {
"id": "KMD_aKxojyyV",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 331
},
"outputId": "3f90f7c3-0f87-498d-b368-20b4fe64999b"
},
"source": [
"#Analysons l'effet de chaque variable catégorielle\n",
"\n",
"all_columns = ames.columns\n",
"cat_columns = ames.columns[ames.dtypes == 'object']\n",
"\n",
"diffs_per_group = []\n",
"\n",
"#Bonus: vous pouvez afficher des graphes pour chaque groupe\n",
"#ncols = 8\n",
"#ncats = len(cat_columns)\n",
"#fig, axes = plt.subplots(int(np.ceil(ncats/ncols)),ncols, figsize = (20,30))\n",
"\n",
"i=0\n",
"for cat in cat_columns: \n",
" \n",
" group_means = ames.groupby(cat)[\"SalePrice\"].mean()\n",
" diffs_per_group.append(group_means.max() - group_means.min())\n",
" \n",
" #Bonus: vous pouvez afficher des graphes pour chaque groupe\n",
" #plt.figure(figsize=(10,3))\n",
" #group_means.plot.bar()\n",
" #ax = axes[int(i/ncols), int(i%ncols)]\n",
" #ames.boxplot(\"SalePrice\", by=cat, ax = ax)\n",
" i=i+1\n",
"\n",
"best_cats = pd.Series(diffs_per_group, list(cat_columns)).abs().sort_values(ascending = False)\n",
"best_cats.plot.bar(figsize=(10,4))\n",
"\n",
"best_cats = best_cats.index.to_list()"
],
"execution_count": 408,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\nRERERPQ5/h+0uHqSVF0B3QAAAABJRU5ErkJggg==\n",
"text/plain": [
"