{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Lab 3: Cross validation and feature encoding." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The data you will be using in this lab comes from a kaggle in class competition. The goal is to predict the number of shares an article will get on social media, from the article's topic, length, day of publication, and many other features.\n", "\n", "You are given labels, that is, number of shares, for 5000 of these articles. We will explore how to set up cross validation and do some feature encoding." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ] } ], "source": [ "import numpy as np\n", "import pandas as pd\n", "%pylab inline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 1. Model Selection: setting up a cross validation\n", "\n", "Cross-validation is a good way to perform model selection empirically while avoiding overfitting. \n", "\n", "This procedure can be split into the following two steps: \n", "* the dataset is randomly split into K folds \n", "* the model is run K times, each run using K-1 folds as the training set and evaluating the performance on the remaining fold which is the test set. \n", "\n", "Prediction performance are averaged over all folds. \n", "\n", "When the model contains parameters that need to be tuned, the CV scheme is repeated for all considered values of the hyperparameters, and those leading to the best prediction performance averaged on all folds are retained.\n", "\n", "Depending on the size of the dataset, 5 or 10 folds are usualy considered." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__Question:__ In a K-fold cross-validation, how many times does each sample appear in a test set? In a training set? " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__Answer:__" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Question:** Implement a function which splits the _indices_ of the training data in K folds." ] }, { "cell_type": "code", "execution_count": 127, "metadata": {}, "outputs": [], "source": [ "def make_Kfolds(n_instance, n_folds):\n", " \"\"\"\n", " set up a K-fold croos-validation.\n", " \n", " Parameters:\n", " -----------\n", " n_instances: int\n", " the number of instances in the dataset.\n", " n_folds: int\n", " the number of folds of the cross-validation scheme\n", " \n", " Outputs:\n", " --------\n", " fold_list: list\n", " list of folds, a fold is a tuple of 2 lists, \n", " the first one containing the indices of instances of the training set,\n", " the second one containing the indices of instances of the test set\n", " \"\"\"\n", " # Create a list of the n_instance indices [0, 1, ..., n_instance-1]\n", " list_indices = list(range(n_instance))\n", " # Shuffle the list with np.random.shuffle\n", " np.random.shuffle(list_indices)\n", " \n", " # Compute the number of instances per fold (i.e. in each test set)\n", " n_instance_per_fold = n_instance // n_folds\n", " print(n_instance_per_fold)\n", " \n", " # For each of the first K-1 folds, create the list of train set and test set indices\n", " fold_list = []\n", " for ind_fold in range(n_folds-1):\n", " test_list = list_indices[ind_fold*n_instance_per_fold : (ind_fold+1)*n_instance_per_fold] # TODO\n", " train_list = list_indices[:ind_fold*n_instance_per_fold] + list_indices[(ind_fold+1)*n_instance_per_fold:] # TODO\n", " # TODO add the (train_list, test_list) tuple to fold_list\n", " fold_list.append((train_list, test_list)) \n", "\n", " # Process the last fold separately\n", " test_list = list_indices[(ind_fold+1)*n_instance_per_fold:] # TODO \n", " train_list = list_indices[:(ind_fold+1)*n_instance_per_fold] # TODO \n", " # TODO add the (train_list, test_list) tuple to fold_list \n", " fold_list.append((train_list, test_list)) \n", " \n", " return fold_list" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "200\n", "Fold 0\n", "\t 801 training points\n", "\t 200 test points\n", "Fold 1\n", "\t 801 training points\n", "\t 200 test points\n", "Fold 2\n", "\t 801 training points\n", "\t 200 test points\n", "Fold 3\n", "\t 801 training points\n", "\t 200 test points\n", "Fold 4\n", "\t 800 training points\n", "\t 201 test points\n" ] } ], "source": [ "# Check whether your function does what is expected\n", "perso_folds = make_Kfolds(1001, 5)\n", "\n", "for ix, (tr, te) in enumerate(perso_folds):\n", " print(\"Fold %d\" % ix)\n", " print(\"\\t %d training points\" % len(tr))\n", " print(\"\\t %d test points\" % len(te))\n", " if len(np.intersect1d(tr, te))>0:\n", " print('some instances are both in your training and test sets')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In practice, when using scikit-learn, you will not implement your cross-validation yourself, but rather rely on the library's functionalities for setting up cross-validation schemes. \n", "\n", "[Here](http://scikit-learn.org/stable/modules/classes.html#module-sklearn.model_selection) is the list of available tools in the scikit-learn library.\n", "\n", "We list here one of the most important ones:\n", "* [K-fold](http://scikit-learn.org/stable/modules/generated/sklearn.model_selection.KFold.html#sklearn.model_selection.KFold): Provides train/test indices to split data in train/test sets by dataset into k consecutive folds (without shuffling by default). \n", "* [stratified K-fold](http://scikit-learn.org/stable/modules/generated/sklearn.model_selection.StratifiedKFold.html#sklearn.model_selection.StratifiedKFold) (to be used in case of classification): this cross-validation object is a variation of KFold that returns stratified folds. The folds are made by preserving the percentage of samples for each class.\n", "\n", "We will now explore the stratified K-fold on randomly generated data." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[0 0 0 0 1 0 1 1 1 1 1 1 0 1 1 1 1 0 1 0 0 0 1 0 0 0 1 1 0 1 0 0 1 0 1 0 1\n", " 1 0 1 1 1 0 0 0 1 0 0 0 0 1 0 0 1 1 1 0 1 0 1 1 0 0 0 1 1 1 1 0 1 0 0 0 0\n", " 1 0 1 0 1 0 1 1 0 1 0 1 1 1 0 1 0 0 0 1 0 1 1 1 0 0 1 1 0 0 1 0 1 1 1 1 0\n", " 0 0 1 1 1 0 0 0 0 0 1 0 1 1 0 1 0 0 1 1 0 1 1 0 1 1 1 1 1 1 1 0 0 1 1 0 0\n", " 0 0 1 1 1 0 1 1 1 1 0 1 1 1 0 1 1 1 1 0 1 1 0 1 0 0 0 0 1 1 1 1 0 0 0 1 0\n", " 1 1 1 0 0 1 0 1 0 1 0 0 0 0 1 0 1 0 1 1 1 1 0 0 1 0 1 0 1 1 1 1 1 1 0 1 1\n", " 1 1 0 1 0 0 1 0 1 1 1 1 1 1 1 0 1 1 0 1 0 1 1 0 1 0 0 0 1 0 1 0 0 1 0 0 1\n", " 1 1 0 0 1 0 0 0 1 1 1 0 0 0 1 0 0 0 1 1 1 0 1 0 0 0 1 1 0 0 1 0 0 1 1 0 0\n", " 0 1 0 0 0 1 0 0 1 1 0 1 0 1 1 1 0 1 0 1 0 0 0 1 1 0 1 1 1 1 0 0 1 1 0 1 1\n", " 0 0 1 1 1 1 1 1 0 0 0 0 0 1 0 0 1 1 0 0 0 0 1 1 0 0 1 0 1 1 1 1 1 1 0 0 0\n", " 0 1 1 1 1 0 1 0 0 1 1 1 1 1 1 0 1 1 0 1 1 1 0 1 1 0 0 0 0 1 0 1 1 0 0 0 0\n", " 0 1 1 1 1 0 0 1 0 1 0 1 0 0 0 1 1 0 1 0 0 0 0 1 0 0 0 1 1 1 0 0 1 0 1 0 0\n", " 0 0 1 0 1 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1 0 0 0 0 0 1 0 0 1 1 1\n", " 0 0 0 1 0 1 0 1 0 0 1 1 0 1 1 1 1 1 0 1 0 0 0 0 1 1 1 0 1 1 0 1 1 1 0 0 1\n", " 1 1 1 1 0 0 0 1 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 1 1 0 0 1 1 0 1 1 1 0 0 1 0\n", " 1 0 0 1 1 1 0 1 0 0 1 0 1 1 0 1 1 1 0 0 1 1 0 1 1 0 0 1 0 0 0 0 0 1 0 0 1\n", " 0 0 0 1 1 0 0 1 0 0 1 1 1 0 1 0 1 0 1 0 0 1 0 1 1 0 1 0 1 1 1 1 0 1 0 1 0\n", " 0 1 1 0 0 1 1 0 0 1 0 1 1 0 0 0 1 1 1 1 0 0 1 1 0 1 0 1 1 1 0 1 1 0 1 0 0\n", " 0 0 1 0 0 1 1 0 1 0 1 1 0 1 1 1 0 0 1 0 1 1 0 1 0 0 0 0 1 1 1 0 1 0 0 1 1\n", " 0 0 0 0 0 0 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 0 1 0 1 0 0 1 1 1 1 1 1 1 1 1 1\n", " 1 0 0 1 1 1 0 1 0 0 0 0 0 0 1 0 1 0 0 1 0 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1\n", " 0 1 1 1 1 0 0 0 0 1 1 0 0 1 1 0 1 1 0 0 0 0 1 0 1 1 1 1 1 0 1 0 0 1 1 0 1\n", " 1 0 1 0 0 1 0 0 0 1 1 0 0 0 1 0 0 1 1 1 1 0 1 0 0 0 1 0 0 1 0 1 0 1 1 1 1\n", " 1 1 0 1 1 1 1 1 0 1 0 1 1 0 1 0 1 1 0 0 1 1 0 0 1 1 0 0 0 1 1 1 0 1 1 0 0\n", " 0 1 1 1 0 0 1 1 0 1 0 0 0 0 1 0 1 1 1 0 0 1 0 1 1 1 1 0 1 0 1 0 0 1 0 0 0\n", " 1 0 0 1 0 1 0 0 0 0 0 0 0 1 1 0 1 1 0 1 0 1 1 1 0 1 0 0 0 1 0 1 0 0 1 1 0\n", " 0 1 0 1 0 0 1 1 1 0 1 1 0 0 1 0 0 1 0 1 0 1 0 1 1 1 1 0 1 0 0 1 0 1 0 0 0\n", " 0]\n" ] } ], "source": [ "# Generate random data\n", "n_instances, n_features = 1000, 7\n", "# Design matrix\n", "X = np.random.random((n_instances, n_features))\n", "# Classification labels\n", "y = np.where(np.random.random(n_instances) >=0.5, 1, 0)\n", "print(y)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Question:** Using scikit-learn, set up a stratified 10-fold cross-validation for the above data." ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "scrolled": true }, "outputs": [], "source": [ "from sklearn import model_selection\n", "# Initialize a StratifiedKFold object \n", "skf = model_selection.StratifiedKFold()\n", "# Split the data using skf\n", "sk_folds = skf.split(X,y)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Fold 0\n", "\t 800 training points\n", "\t 200 test points\n", "Fold 1\n", "\t 800 training points\n", "\t 200 test points\n", "Fold 2\n", "\t 800 training points\n", "\t 200 test points\n", "Fold 3\n", "\t 800 training points\n", "\t 200 test points\n", "Fold 4\n", "\t 800 training points\n", "\t 200 test points\n" ] } ], "source": [ "# This is one way to access the training and test points\n", "for ix, (tr, te) in enumerate(sk_folds):\n", " print(\"Fold %d\" % ix)\n", " print(\"\\t %d training points\" % len(tr))\n", " print(\"\\t %d test points\" % len(te))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__Important note:__ `sk_folds` is a [_generator_](https://wiki.python.org/moin/Generators), meaning that once you are done looping through it, it will be empty. In practice it avoids storing all the indices (if you were doing 10-fold cross-validation on a million sample, you would have $10^7$ values to store)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Question:** Create a cross-validation function that takes a design matrix, label array, scikit-learn classifier, and scikit-learn cross_validation object and returns the corresponding list of cross-validated predictions. \n", "\n", "The function contains a loop that goes through all folds and for each fold:\n", "* trains a model on the training data\n", "* uses this model to make predictions on the test data. \n", "In this fashion you should be able to form *a single vector of predictions* `y_prob_cv` (as each point from the data appears once as a test point in the cross-validation).\n", "\n", "Make sure that you are returning the predictions in the correct order!\n", "\n", "Check the documentation of fit(X, y) and predict_proba(X) in [sklearn.naive_bayes.GaussianNB](http://scikit-learn.org/stable/modules/generated/sklearn.naive_bayes.GaussianNB.html). Every classifier implemented in scikit-learn has a fit(X,y) and a predict_proba(X) methods. \n", "Note that the predict_proba methods returns a 2 dimentional array, you must find a way to only keep the probability to belong to the positive class." ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "scrolled": true }, "outputs": [], "source": [ "def cross_validate(design_matrix, labels, classifier, cv_folds):\n", " \"\"\" Perform a cross-validation and returns the predictions.\n", " \n", " Parameters:\n", " -----------\n", " design_matrix: (n_samples, n_features) np.array\n", " Design matrix for the experiment.\n", " labels: (n_samples, ) np.array\n", " Vector of labels.\n", " classifier: sklearn classifier object\n", " Classifier instance; must have the following methods:\n", " - fit(X, y) to train the classifier on the data X, y\n", " - predict_proba(X) to apply the trained classifier to the data X and return probability estimates \n", " cv_folds: sklearn cross-validation object\n", " Cross-validation iterator.\n", " \n", " Return:\n", " -------\n", " pred: (n_samples, ) np.array\n", " Vectors of predictions (same order as labels).\n", " \"\"\"\n", " pred = np.zeros(labels.shape)\n", " for tr, te in cv_folds:\n", " # TODO\n", " classifier.fit(design_matrix[tr,:], labels[tr])\n", " pred[te] = classifier.predict_proba(design_matrix[te,:])[:,1]\n", " return pred" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1000\n", "1000\n", "0.478\n" ] } ], "source": [ "# To check whether your function runs properly, you can use the following\n", "\n", "# import Gaussian Naive Bayes\n", "from sklearn.naive_bayes import GaussianNB\n", "from sklearn import metrics\n", "\n", "# create a GNB classifier\n", "gnb = GaussianNB()\n", "\n", "# run your cross_validate function\n", "y_prob_cv = cross_validate(X, y, gnb, sk_folds)\n", "\n", "# check y and y_prob_cv have the same length (the number of instance)\n", "print(len(y_prob_cv))\n", "print(len(y))\n", "\n", "# check the accuracy of your prediction (it should be close to 0.5 as we're considering random matrices). \n", "print(metrics.accuracy_score(y, np.where(y_prob_cv>=0.5, 1, 0)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "** Extensions **\n", "* **Leave-one-out cross-validation: ** in this case, the number of folds is the number of available points in the dataset. To say it differently, the model is trained K times on K-1 points, and tested on the left out point. The LOO CV scheme is particularly convenient when the number of samples is very small. When the number of samples is large, it becomes computationally burdensome; moreover the cross-validated error tends to have a very large variance which makes it hard to interpret.\n", "\n", "* **Nested-cross-validation: ** The goal of the cross validation scheme is to assess the performance of the model on _new_ data which were not used to train or optimize the model. From that perspective, the CV scheme is not rigorous when optimizing hyperparameters. Indeed, the test data are both used to assess the performance and choosing the set of parameters which led to that best performance. To avoid selecting a possibly over-fitted set of parameters, we also used the so-called nested cross validation (_Nested CV_) scheme which consists in a cross validation (_inner-CV_) nested in a other cross validation (_outer-CV_). At each step of the _outer-CV_, the optimal parameters are found via the _inner-CV_ on the train set of the _outer-CV_, and the performance is assessed on the remaining test fold of the _outer-CV_ Therefore, in _Nested CV_, parameter optimization and performance assessment are performed on different _unseen_ data.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 2. Data loading and visualization\n", "\n", "Download the data from the competition link and unzip it." ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "'nb_words_title' Number of words in the article's titles\n", "'nb_words_content' Number of words in the article\n", "'pp_uniq_words' Proportion of unique words in the article\n", "'pp_stop_words' Proportion of stop words (i.e. words predefined to be too common to be of use for interpretation or queries, such as 'the', 'a', 'and', etc.)\n", "'pp_uniq_non-stop_words' Proportion of non-stop words among unique words\n", "'nb_links' Number of hyperlinks in the article\n", "'nb_outside_links' Number of hyperlinks pointing to another website\n", "'nb_images' Number of images in the article\n", "'nb_videos' Number of videos in the article\n", "'ave_word_length' Average word length\n", "'nb_keywords' Number of keywords in the metadata\n", "'category' Category of the article: 0-Lifestyle, 1-Entertainment, 2-Business, 3-Web, 4-Tech, 5-World\n", "'nb_mina_mink' Minimum number of share counts among all articles with at least one keyword in common with the article\n", "'nb_mina_maxk' Minimum number of maximum share counts per keyword\n", "'nb_mina_avek' Minimum number of average share counts per keyword\n", "'nb_maxa_mink' Maximum number of minimum share counts per keyword\n", "'nb_maxa_maxk' Maximum number of share counts among all articles with at least one keyword in common with the article\n", "'nb_maxa_avek' Maximum number of average share counts per keyword\n", "'nb_avea_mink' Average number of minimum share counts per keyword\n", "'nb_avea_maxk' Average number of maximum share counts per keyword\n", "'nb_avea_avek' Average number of average share counts per keyword\n", "'nb_min_linked' Minimum number of shares of articles from the same website linked within the article\n", "'nb_max_linked' Maximum number of shares of articles from the same website linked within the article\n", "'nb_ave_linked' Average number of shares of articles from the same website linked within the article\n", "'weekday' Day of the week: 0-Monday, 1-Tuesday, 2-Wednesday, until 6-Sunday\n", "'dist_topic_0' Distance to topic 0\n", "'dist_topic_1' Distance to topic 1\n", "'dist_topic_2' Distance to topic 2\n", "'dist_topic_3' Distance to topic 3\n", "'dist_topic_4' Distance to topic 4\n", "'subj' Subjectivity\n", "'polar' Sentiment polarity \n", "'pp_pos_words' Proportion of positive words in the article\n", "'pp_neg_words' Proportion of negative words in the article\n", "'pp_pos_words_in_nonneutral' Proportion of positive words among the non-neutral words of the article\n", "'ave_polar_pos' Average sentiment polarity of the positive words\n", "'min_polar_pos' Minimum sentiment polarity of the positive words\n", "'max_polar_pos' Maximum sentiment polarity of the positive words\n", "'ave_polar_neg' Average sentiment polarity of the negative words\n", "'min_polar_neg' Mimimum sentiment polarity of the negative words\n", "'max_polar_neg' Maximum sentiment polarity of the negative words\n", "'subj_title' Subjectivity of the title\n", "'polar_title' Polarity of the title\n" ] } ], "source": [ "# we display the description of the features\n", "!cat data/kaggle_data/features.txt" ] }, { "cell_type": "code", "execution_count": 75, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/ipykernel_launcher.py:2: ParserWarning: Falling back to the 'python' engine because the 'c' engine does not support regex separators (separators > 1 char and different from '\\s+' are interpreted as regex); you can avoid this warning by specifying engine='python'.\n", " \n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
feature_namesfeature_description
0'nb_words_title'Number of words in the article's titles
1'nb_words_content'Number of words in the article
2'pp_uniq_words'Proportion of unique words in the article
3'pp_stop_words'Proportion of stop words (i.e. words predefine...
4'pp_uniq_non-stop_words'Proportion of non-stop words among unique words
5'nb_links'Number of hyperlinks in the article
6'nb_outside_links'Number of hyperlinks pointing to another website
7'nb_images'Number of images in the article
8'nb_videos'Number of videos in the article
9'ave_word_length'Average word length
10'nb_keywords'Number of keywords in the metadata
11'category'Category of the article: 0-Lifestyle, 1-Entert...
12'nb_mina_mink'Minimum number of share counts among all artic...
13'nb_mina_maxk'Minimum number of maximum share counts per key...
14'nb_mina_avek'Minimum number of average share counts per key...
15'nb_maxa_mink'Maximum number of minimum share counts per key...
16'nb_maxa_maxk'Maximum number of share counts among all artic...
17'nb_maxa_avek'Maximum number of average share counts per key...
18'nb_avea_mink'Average number of minimum share counts per key...
19'nb_avea_maxk'Average number of maximum share counts per key...
20'nb_avea_avek'Average number of average share counts per key...
21'nb_min_linked'Minimum number of shares of articles from the ...
22'nb_max_linked'Maximum number of shares of articles from the ...
23'nb_ave_linked'Average number of shares of articles from the ...
24'weekday'Day of the week: 0-Monday, 1-Tuesday, 2-Wednes...
25'dist_topic_0'Distance to topic 0
26'dist_topic_1'Distance to topic 1
27'dist_topic_2'Distance to topic 2
28'dist_topic_3'Distance to topic 3
29'dist_topic_4'Distance to topic 4
30'subj'Subjectivity
31'polar'Sentiment polarity
32'pp_pos_words'Proportion of positive words in the article
33'pp_neg_words'Proportion of negative words in the article
34'pp_pos_words_in_nonneutral'Proportion of positive words among the non-neu...
35'ave_polar_pos'Average sentiment polarity of the positive words
36'min_polar_pos'Minimum sentiment polarity of the positive words
37'max_polar_pos'Maximum sentiment polarity of the positive words
38'ave_polar_neg'Average sentiment polarity of the negative words
39'min_polar_neg'Mimimum sentiment polarity of the negative words
40'max_polar_neg'Maximum sentiment polarity of the negative words
41'subj_title'Subjectivity of the title
42'polar_title'Polarity of the title
\n", "
" ], "text/plain": [ " feature_names \\\n", "0 'nb_words_title' \n", "1 'nb_words_content' \n", "2 'pp_uniq_words' \n", "3 'pp_stop_words' \n", "4 'pp_uniq_non-stop_words' \n", "5 'nb_links' \n", "6 'nb_outside_links' \n", "7 'nb_images' \n", "8 'nb_videos' \n", "9 'ave_word_length' \n", "10 'nb_keywords' \n", "11 'category' \n", "12 'nb_mina_mink' \n", "13 'nb_mina_maxk' \n", "14 'nb_mina_avek' \n", "15 'nb_maxa_mink' \n", "16 'nb_maxa_maxk' \n", "17 'nb_maxa_avek' \n", "18 'nb_avea_mink' \n", "19 'nb_avea_maxk' \n", "20 'nb_avea_avek' \n", "21 'nb_min_linked' \n", "22 'nb_max_linked' \n", "23 'nb_ave_linked' \n", "24 'weekday' \n", "25 'dist_topic_0' \n", "26 'dist_topic_1' \n", "27 'dist_topic_2' \n", "28 'dist_topic_3' \n", "29 'dist_topic_4' \n", "30 'subj' \n", "31 'polar' \n", "32 'pp_pos_words' \n", "33 'pp_neg_words' \n", "34 'pp_pos_words_in_nonneutral' \n", "35 'ave_polar_pos' \n", "36 'min_polar_pos' \n", "37 'max_polar_pos' \n", "38 'ave_polar_neg' \n", "39 'min_polar_neg' \n", "40 'max_polar_neg' \n", "41 'subj_title' \n", "42 'polar_title' \n", "\n", " feature_description \n", "0 Number of words in the article's titles \n", "1 Number of words in the article \n", "2 Proportion of unique words in the article \n", "3 Proportion of stop words (i.e. words predefine... \n", "4 Proportion of non-stop words among unique words \n", "5 Number of hyperlinks in the article \n", "6 Number of hyperlinks pointing to another website \n", "7 Number of images in the article \n", "8 Number of videos in the article \n", "9 Average word length \n", "10 Number of keywords in the metadata \n", "11 Category of the article: 0-Lifestyle, 1-Entert... \n", "12 Minimum number of share counts among all artic... \n", "13 Minimum number of maximum share counts per key... \n", "14 Minimum number of average share counts per key... \n", "15 Maximum number of minimum share counts per key... \n", "16 Maximum number of share counts among all artic... \n", "17 Maximum number of average share counts per key... \n", "18 Average number of minimum share counts per key... \n", "19 Average number of maximum share counts per key... \n", "20 Average number of average share counts per key... \n", "21 Minimum number of shares of articles from the ... \n", "22 Maximum number of shares of articles from the ... \n", "23 Average number of shares of articles from the ... \n", "24 Day of the week: 0-Monday, 1-Tuesday, 2-Wednes... \n", "25 Distance to topic 0 \n", "26 Distance to topic 1 \n", "27 Distance to topic 2 \n", "28 Distance to topic 3 \n", "29 Distance to topic 4 \n", "30 Subjectivity \n", "31 Sentiment polarity \n", "32 Proportion of positive words in the article \n", "33 Proportion of negative words in the article \n", "34 Proportion of positive words among the non-neu... \n", "35 Average sentiment polarity of the positive words \n", "36 Minimum sentiment polarity of the positive words \n", "37 Maximum sentiment polarity of the positive words \n", "38 Average sentiment polarity of the negative words \n", "39 Mimimum sentiment polarity of the negative words \n", "40 Maximum sentiment polarity of the negative words \n", "41 Subjectivity of the title \n", "42 Polarity of the title " ] }, "execution_count": 75, "metadata": {}, "output_type": "execute_result" } ], "source": [ "feature_data = pd.read_csv('data/kaggle_data/features.txt', header=None, sep=\" \",\n", " names=['feature_names', 'feature_description'])\n", "feature_data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "** Now, let's load and look at the distribution of number of shares (output). **" ] }, { "cell_type": "code", "execution_count": 76, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
IdPrediction
02000882
120011102
220021102
320031001
420041603
\n", "
" ], "text/plain": [ " Id Prediction\n", "0 2000 882\n", "1 2001 1102\n", "2 2002 1102\n", "3 2003 1001\n", "4 2004 1603" ] }, "execution_count": 76, "metadata": {}, "output_type": "execute_result" } ], "source": [ "target_data = pd.read_csv('data/kaggle_data/train-targets.csv', sep=\",\")\n", "target_data.head(5)" ] }, { "cell_type": "code", "execution_count": 77, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "(0.0, 10000.0)" ] }, "execution_count": 77, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYcAAAD4CAYAAAAHHSreAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAaqElEQVR4nO3df2wb9f3H8ZdjGkDN6EiZ467LNyhbEFkhYRIIIminOkvS1Elj+kOoaPDF69TNILKSwZZSLVL7HaP7IbRQCSlRtS3S2DTUbS7C2opiVhoNUBGFBYQLRFPUdGrOUtKmFMjv+/7Bare5NHYSX2wnz4eE5Fzuzu97q/iVu8/dxw7TNE0BAHCJnHQXAADIPIQDAMCCcAAAWBAOAAALwgEAYHFVuguQpBMnTujaa69NdxkZYWRkRFdffXW6y8gI9CKOXsTRi7iRkRHddttttuw7I8LB4XCotLQ03WVkhEgkQi/+i17E0Ys4ehEXiURs2zeXlQAAFoQDAMCCcAAAWBAOAAALwgEAYEE4AAAsCAcAgAXhAACwIBwAABZLOhyGxyamfQ0AS11GTJ+RLtcsc+rG5pAkqXe/N83VAEDmWNJnDgCA6REOAAALwgEAYEE4AAAsCAcAgAXhAACwIBwAABYJw2FkZERbt27Vpk2b5PV69eyzz0qSDhw4oLVr16qhoUENDQ169dVXY9u0tbWpqqpKNTU16urqsq96AIAtEj4El5ubq46ODi1fvlxjY2O6//77tW7dOknSQw89pB07dly2fk9Pj0KhkEKhkAzDkN/v15EjR+R0Ou05AgBAyiU8c3A4HFq+fLkkaXx8XOPj43I4HFdcPxwOy+v1Kjc3V4WFhSoqKlJ3d3fqKgYA2C6p6TMmJia0efNmnTp1Svfff7/Ky8t17NgxPf/88woGg7rlllvU3NysFStWyDAMlZeXx7YtKCiQYRgz7n9yclKRSGR+RzIHpaWll/2cjhqmGh4ezog6MgG9iKMXcfRiYSQVDk6nU4cPH9b58+f1yCOP6MMPP9T27dv18MMPy+FwqLW1Vfv379fTTz8t0zQt2890piFJOTk5lg/qdMiEGiKRSEbUkQnoRRy9iKMXcXaG5KzuVrruuut05513qqurSzfccIOcTqdycnK0bds2vfvuu5Ikt9ut/v7+2DaGYcjlcqW2agCArRKGw+DgoM6fPy/p89O51157TcXFxYpGo7F1Ojs7VVJSIknyeDwKhUIaHR1VX1+fent7VVZWZlP5AAA7JLysFI1G1dzcrImJCZmmqQ0bNmj9+vV64okndPLkSUnS6tWrtW/fPklSSUmJamtrtXHjRjmdTrW0tHCnEgBkmYThcPPNNysYDFqW//KXv7ziNoFAQIFAYF6FAQDShyekAQAWhAMAwIJwAABYEA4AAAvCAQBgQTgAACwIBwCABeEAALAgHAAAFoQDAMBiSYXD8NhEuksAgKyQ1Pc5LBbXLHPqxuZQ7Ofe/d40VgMAmWtJnTkAAJJDOAAALAgHAIAF4QAAsCAcAAAWhAMAwIJwAABYJAyHkZERbd26VZs2bZLX69Wzzz4rSTp37pz8fr+qq6vl9/s1NDQU26atrU1VVVWqqalRV1eXfdUDAGyRMBxyc3PV0dGhF198UcFgUF1dXXrnnXfU3t6uiooKvfzyy6qoqFB7e7skqaenR6FQSKFQSAcPHtTevXs1McGTyQCQTRKGg8Ph0PLlyyVJ4+PjGh8fl8PhUDgcls/nkyT5fD51dnZKksLhsLxer3Jzc1VYWKiioiJ1d3fbdwQ2mDrNBtNuAFhqkpo+Y2JiQps3b9apU6d0//33q7y8XAMDA3K5XJIkl8ulwcFBSZJhGCovL49tW1BQIMMwZtz/5OSkIpHIXI8haaWlpTP+/mINpaWllmk2FqI+SRoeHl6w98p09CKOXsTRi4WRVDg4nU4dPnxY58+f1yOPPKIPP/zwiuuapmlZ5nA4Ztx/Tk5Owg/uhTBTDQtVXyQSyYheZAJ6EUcv4uhFnJ0hOau7la677jrdeeed6urq0sqVKxWNRiVJ0WhU+fn5kiS3263+/v7YNoZhxM4wAADZIWE4DA4O6vz585I+P5177bXXVFxcLI/Ho2AwKEkKBoOqrKyUJHk8HoVCIY2Ojqqvr0+9vb0qKyuz7wgAACmX8LJSNBpVc3OzJiYmZJqmNmzYoPXr1+u2227Trl27dOjQIa1atUqtra2SpJKSEtXW1mrjxo1yOp1qaWmR0+m0/UAAAKmTMBxuvvnm2BnCpa6//np1dHRMu00gEFAgEJh3cQCA9OAJaQCABeEAALAgHAAAFoQDAMCCcAAAWBAOAAALwgEAYEE4AAAsFn04MN02AMzeog+Ha5Y5dWNz6LIpuAEAM1v04QAAmD3CAQBgQTgAACwIBwCABeEAALAgHAAAFoQDAMCCcAAAWBAOAACLhOFw5swZPfDAA6qtrZXX6419b/SBAwe0du1aNTQ0qKGhQa+++mpsm7a2NlVVVammpkZdXV32VQ8AsMVViVZwOp1qbm7WmjVrdOHCBW3ZskV33323JOmhhx7Sjh07Llu/p6dHoVBIoVBIhmHI7/fryJEjcjqd9hwBACDlEp45uFwurVmzRpKUl5en4uJiGYZxxfXD4bC8Xq9yc3NVWFiooqIidXd3p65iAIDtEp45XOr06dOKRCIqLy/XiRMn9PzzzysYDOqWW25Rc3OzVqxYIcMwVF5eHtumoKBgxjCRpMnJSUUikbkdQQKlpaVJr3uxhum2sau+qYaHhxfsvTIdvYijF3H0YmEkHQ6ffPKJGhsb9eSTTyovL0/bt2/Xww8/LIfDodbWVu3fv19PP/20TNO0bOtwOGbcd05Ozqw+xO0yUw0LVV8kEsmIXmQCehFHL+LoRZydIZnU3UpjY2NqbGxUfX29qqurJUk33HCDnE6ncnJytG3bNr377ruSJLfbrf7+/ti2hmHI5XLZUDoAwC4Jw8E0Te3Zs0fFxcXy+/2x5dFoNPa6s7NTJSUlkiSPx6NQKKTR0VH19fWpt7dXZWVlNpQOALBLwstKb731lg4fPqybbrpJDQ0NkqSmpia99NJLOnnypCRp9erV2rdvnySppKREtbW12rhxo5xOp1paWrL+TqXhsQlds8xpeQ0Ai1XCcLj99tv1wQcfWJZ/85vfvOI2gUBAgUBgfpUtsJk+9C9+m5wk9e73LmRZAJAWPCH9X3ydKADEEQ4AAAvCwUbDYxPTvgaATDerh+AwO4xVAMhWnDkAACwIBwCABeEAALAgHAAAFoQDAMCCcAAAWBAOAAALwgEAYEE4AAAsCIdZmjoNBtNiAFiMmD5jli6dEkNiWgwAixNnDgAAC8IBAGBBOAAALAgHAIBFwnA4c+aMHnjgAdXW1srr9aqjo0OSdO7cOfn9flVXV8vv92toaCi2TVtbm6qqqlRTU6Ouri77qgcA2CJhODidTjU3N+tvf/ub/vSnP+kPf/iDenp61N7eroqKCr388suqqKhQe3u7JKmnp0ehUEihUEgHDx7U3r17NTHB7Z4AkE0ShoPL5dKaNWskSXl5eSouLpZhGAqHw/L5fJIkn8+nzs5OSVI4HJbX61Vubq4KCwtVVFSk7u5u+44AAJBys3rO4fTp04pEIiovL9fAwIBcLpekzwNkcHBQkmQYhsrLy2PbFBQUyDCMGfc7OTmpSCQy29qTUlpaast+L3Wl2qe+dzLHODw8bFsvsg29iKMXcfRiYSQdDp988okaGxv15JNPKi8v74rrmaZpWeZwOGbcd05OzoJ8iNsl2dqTWS8SiWR1L1KJXsTRizh6EWdnSCZ1t9LY2JgaGxtVX1+v6upqSdLKlSsVjUYlSdFoVPn5+ZIkt9ut/v7+2LaGYcTOMBY7ptIAsFgkDAfTNLVnzx4VFxfL7/fHlns8HgWDQUlSMBhUZWVlbHkoFNLo6Kj6+vrU29ursrIye6rPMBen1rj4HwBkq4SXld566y0dPnxYN910kxoaGiRJTU1N2rlzp3bt2qVDhw5p1apVam1tlSSVlJSotrZWGzdulNPpVEtLi5xOp71HkUbDYxO6ZtniPT4AS1PCcLj99tv1wQcfTPu7i888TBUIBBQIBOZXWZa4dCI+JuEDsFgsuiekue4PAPO36KbsZkptAJi/RXfmAACYP8IBAGBBOAAALAgHAIAF4QAAsCAcAAAWhAMAwIJwAABYEA4AAAvCAQBgQTgAACwIBwCABeEAALAgHAAAFoQDAMCCcAAAWCQMh927d6uiokJ1dXWxZQcOHNDatWvV0NCghoYGvfrqq7HftbW1qaqqSjU1Nerq6rKnagCArRJ+E9zmzZv17W9/Wz/+8Y8vW/7QQw9px44dly3r6elRKBRSKBSSYRjy+/06cuSInE5naqsGANgq4ZnDHXfcoRUrViS1s3A4LK/Xq9zcXBUWFqqoqEjd3d3zLhIAsLDmPObw/PPPq76+Xrt379bQ0JAkyTAMud3u2DoFBQUyDGP+VQIAFlTCy0rT2b59ux5++GE5HA61trZq//79evrpp2WapmVdh8ORcH+Tk5OKRCJzKcWitLQ0JfuxQzLHODw8nLJeZDt6EUcv4ujFwphTONxwww2x19u2bdP3v/99SZLb7VZ/f3/sd4ZhyOVyJdxfTk5ORn+op0oyxxiJRJZEL5JBL+LoRRy9iLMzJOd0WSkajcZed3Z2qqSkRJLk8XgUCoU0Ojqqvr4+9fb2qqysLDWVAgAWTMIzh6amJh0/flxnz57VunXr9Oijj+r48eM6efKkJGn16tXat2+fJKmkpES1tbXauHGjnE6nWlpauFMJALJQwnB45plnLMu2bdt2xfUDgYACgcD8qgIApBVPSAMALAgHAIAF4QAAsCAcAAAWhAMAwIJwAABYEA4AAAvCAQBgQTgAACwIBwCABeEAALAgHAAAFosiHIbHJtJdAgAsKosiHK5Z5tSNzSHd2BxKdykAsCgsinAAAKQW4QAAsCAcFsjUcRHGSQBksoTfBIfUuDguclHvfm8aqwGAmXHmAACwSBgOu3fvVkVFherq6mLLzp07J7/fr+rqavn9fg0NDcV+19bWpqqqKtXU1Kirq8ueqgEAtkoYDps3b9bBgwcvW9be3q6Kigq9/PLLqqioUHt7uySpp6dHoVBIoVBIBw8e1N69ezUxwbV1AMg2CcPhjjvu0IoVKy5bFg6H5fP5JEk+n0+dnZ2x5V6vV7m5uSosLFRRUZG6u7tTXzUAwFZzGpAeGBiQy+WSJLlcLg0ODkqSDMNQeXl5bL2CggIZhpFwf5OTk4pEInMpRZJUWlo6523TabpjHh4enlcvFhN6EUcv4ujFwkjp3UqmaVqWORyOhNvl5ORk7Qf8fEx3zJFIZEn2Yjr0Io5exNGLODtDck53K61cuVLRaFSSFI1GlZ+fL0lyu93q7++PrWcYRuwMAwCQPeYUDh6PR8FgUJIUDAZVWVkZWx4KhTQ6Oqq+vj719vaqrKwsZcUuJpc+BHfp69LSUh6QA5B2CS8rNTU16fjx4zp79qzWrVunRx99VDt37tSuXbt06NAhrVq1Sq2trZKkkpIS1dbWauPGjXI6nWppaZHT6bT9ILLRpQ/F9e738oAcgIySMByeeeaZaZd3dHRMuzwQCCgQCMyvKgBAWvGENADAgnAAAFgQDgAAC8IBAGBBOAAALAgHAIAF4QAAsCAcAAAWhEMGutLUGgCwUAiHDHRxao0bm0O6Ztnl048QHAAWAuGQ4aYGAMEBYCGk9PsckHqXTtAnzTwp39TJ/ABgrjhzAABYEA4AAAvCIYsxrgDALow5ZLHZjEcAwGxw5gAAsCAcAAAWhAMAwGJeYw4ej0fLly9XTk6OnE6n/vKXv+jcuXN67LHH9J///EerV6/Wr3/9a61YsSJV9SJJw2MTlz0kN/VnAJjJvAekOzo6lJ+fH/u5vb1dFRUV2rlzp9rb29Xe3q4nnnhivm+DWZo6WH3y/zbEXhMUABJJ+WWlcDgsn88nSfL5fOrs7Ez1W2AOZpp2AwCmmveZw44dO+RwOHTffffpvvvu08DAgFwulyTJ5XJpcHAw4T4mJycViUSSfs//ubFYy6+9es41Q7Pqd7oMDw9nRZ0LgV7E0YuFMa9w+OMf/6iCggINDAzI7/eruLh4TvvJyclRaWnprLbh/v75mW2/0yESiWRFnQuBXsTRizg7Q3Jel5UKCgokSStXrlRVVZW6u7u1cuVKRaNRSVI0Gr1sPAKZb+pT1zyFDSxNcw6HTz/9VBcuXIi9/uc//6mSkhJ5PB4Fg0FJUjAYVGVlZUoKhX0uDYBLxyYYnwCWrjlfVhoYGNAjjzwiSZqYmFBdXZ3WrVunW2+9Vbt27dKhQ4e0atUqtba2pqxY2IOpvgFMNedwKCws1IsvvmhZfv3116ujo2NeRQEA0osnpDEjvl0OWJoIB8zo0jGIqWYKDoIEyG5M2Y2kTTdF+KVjFXbfXnzpk9085Q3YizOHJShb/qr/nxsvf26Gp7yBhcOZwxK00F8SNNdJAJdfezUPOwJpQjjAdjOFEbPHApmJcEBa8VWnQGZizAEAYEE4wBaZNOjNsxrA7BEOsMVMz0fYbWoAcJcTMHuMOSCjJDsgPdNA9mzGMXh2Apge4YAFN9OHcLKTAKZqIJtJB4HpcVkJCy6dl5xmkuzYhB1ThTD9CDINZw7Af810FpHsZau5PreRLQ8mYunIqHCY6fov/3iRTnO93HXy/zbEXmfSv2GeL0EiGRUOU/8H5B8vkjXXgez5rpdoXcY0kK0yKhxmkkl/dSHzpHogezZ/WdsdAMNjEyotLb3s52TOsGdz9s1dW5gqa8KBv8CQ7eb6YT1TUM32d1f6f2ih//9KNoym61km1JWq7TJZ1oQDkO1mGo+Yad2ZBsftkKozjpl+d+nxTe2D3YP/Mx3DXEMy2ePJJraFw7Fjx/TUU09pcnJS27Zt086dO+16KyArpeKDyI7gmM2geqJxwmTGEGcTmpdeYptNnckGVbLhk+w409R9ZhNbwmFiYkL79u3Tb3/7WxUUFGjr1q3yeDz62te+ZsfbAfgvOy4PzfRXsR1mOobZ/O5KQZXsMSz0Nx/O9YzNLraEQ3d3t4qKilRYWChJ8nq9CofDhAOQ5RbDX8XpfKZkNtO+JHPG9rf/vfzbElPJYZqmmeqd/v3vf1dXV5eeeuopSVIwGFR3d7daWlqmXf+dd97R1VdfneoyAGBRGxkZ0W233WbLvm05c5gubxwOxxXXt+vgAABzY8vcSm63W/39/bGfDcOQy+Wy460AADawJRxuvfVW9fb2qq+vT6OjowqFQvJ4PHa8FQDABrZcVrrqqqvU0tKi7373u5qYmNCWLVtUUlJix1sBAGxgy4A0ACC78X0OAAALwgEAYJH2cDh27JhqampUVVWl9vb2dJeTcmfOnNEDDzyg2tpaeb1edXR0SJLOnTsnv9+v6upq+f1+DQ0NxbZpa2tTVVWVampq1NXVFVv+3nvvqb6+XlVVVfrpT3867S3D2WBiYkI+n0/f+973JC3dXpw/f16NjY3asGGDamtr9fbbby/ZXvzud7+T1+tVXV2dmpqaNDIysmR6sXv3blVUVKiuri62LJXHPjo6ql27dqmqqkrbtm3T6dOnkyvMTKPx8XGzsrLSPHXqlDkyMmLW19ebH330UTpLSjnDMMz33nvPNE3T/Pjjj83q6mrzo48+Mn/+85+bbW1tpmmaZltbm/mLX/zCNE3T/Oijj8z6+npzZGTEPHXqlFlZWWmOj4+bpmmaW7ZsMU+cOGFOTk6aO3bsMI8ePZqeg5qn3/zmN2ZTU5O5c+dO0zTNJduLH/3oR+YLL7xgmqZpjoyMmENDQ0uyF/39/eb69evNzz77zDRN02xsbDT//Oc/L5leHD9+3HzvvfdMr9cbW5bKY//9739v/uQnPzFN0zRfeukl8wc/+EFSdaX1zOHSaTZyc3Nj02wsJi6XS2vWrJEk5eXlqbi4WIZhKBwOy+fzSZJ8Pp86OzslSeFwWF6vV7m5uSosLFRRUZG6u7sVjUZ14cIFfeMb35DD4ZDP58vKXvX39+vo0aPaunVrbNlS7MWFCxf05ptvxvqQm5ur6667bkn2Qvr8bHJ4eFjj4+MaHh6Wy+VaMr244447tGLFisuWpfLYX3nlFd17772SpJqaGr3++utJnVGlNRwMw5Db7Y79XFBQIMMw0liRvU6fPq1IJKLy8nINDAzEHgx0uVwaHByUdOWeTF3udruzslc/+9nP9MQTTygnJ/5Pbyn2oq+vT/n5+dq9e7d8Pp/27NmjTz/9dEn2oqCgQN/5zne0fv163XPPPcrLy9M999yzJHtxUSqP3TAMrVq1StLnjxl84Qtf0NmzZxPWkNZwmC69ZppmI5t98sknamxs1JNPPqm8vLwrrnelniyGXv3jH/9Qfn6+brnllqTWX8y9GB8f1/vvv6/t27crGAzq2muvnXHMbTH3YmhoSOFwWOFwWF1dXfrss890+PDhK66/mHuRyFyOfa59SWs4LJVpNsbGxtTY2Kj6+npVV1dLklauXKloNCpJikajys/Pl3Tlnkxd3t/fn3W9OnHihF555RV5PB41NTXpjTfe0OOPP74ke+F2u+V2u1VeXi5J2rBhg95///0l2YvXXntNX/nKV5Sfn69ly5apurpab7/99pLsxUWpPHa3260zZ85I+vyPko8//lhf/OIXE9aQ1nBYCtNsmKapPXv2qLi4WH6/P7bc4/EoGAxK+nzW2srKytjyUCik0dFR9fX1qbe3V2VlZXK5XFq+fLneeecdmaZ52TbZ4oc//KGOHTumV155Rc8884zuuusu/epXv1qSvfjSl74kt9utf//735Kk119/XV/96leXZC++/OUv61//+pc+++wzmaa5pHtxUSqP3ePx6K9//ask6ciRI7rrrruSO6Oay+h6Kh09etSsrq42Kysrzeeeey7d5aTcm2++ad50001mXV2duWnTJnPTpk3m0aNHzcHBQfPBBx80q6qqzAcffNA8e/ZsbJvnnnvOrKysNKurqy+726K7u9v0er1mZWWluXfvXnNycjINR5Qab7zxRuxupaXai/fff9+89957zbq6OjMQCJjnzp1bsr1obW01a2pqTK/Xaz7++OPmyMjIkunFY489Zt59993m17/+dXPt2rXmCy+8kNJjHx4eNh999FHzW9/6lrllyxbz1KlTSdXF9BkAAIu0PwQHAMg8hAMAwIJwAABYEA4AAAvCAQBgQTgAACwIBwCAxf8DwGqBlGHJvhgAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "y_tr = target_data['Prediction'].values\n", "plt.hist(y_tr,bins=2000)\n", "plt.xlim((0,10000))" ] }, { "cell_type": "code", "execution_count": 78, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
feature_namesfeature_description
0'nb_words_title'Number of words in the article's titles
1'nb_words_content'Number of words in the article
2'pp_uniq_words'Proportion of unique words in the article
3'pp_stop_words'Proportion of stop words (i.e. words predefine...
4'pp_uniq_non-stop_words'Proportion of non-stop words among unique words
5'nb_links'Number of hyperlinks in the article
6'nb_outside_links'Number of hyperlinks pointing to another website
7'nb_images'Number of images in the article
8'nb_videos'Number of videos in the article
9'ave_word_length'Average word length
10'nb_keywords'Number of keywords in the metadata
11'category'Category of the article: 0-Lifestyle, 1-Entert...
12'nb_mina_mink'Minimum number of share counts among all artic...
13'nb_mina_maxk'Minimum number of maximum share counts per key...
14'nb_mina_avek'Minimum number of average share counts per key...
15'nb_maxa_mink'Maximum number of minimum share counts per key...
16'nb_maxa_maxk'Maximum number of share counts among all artic...
17'nb_maxa_avek'Maximum number of average share counts per key...
18'nb_avea_mink'Average number of minimum share counts per key...
19'nb_avea_maxk'Average number of maximum share counts per key...
20'nb_avea_avek'Average number of average share counts per key...
21'nb_min_linked'Minimum number of shares of articles from the ...
22'nb_max_linked'Maximum number of shares of articles from the ...
23'nb_ave_linked'Average number of shares of articles from the ...
24'weekday'Day of the week: 0-Monday, 1-Tuesday, 2-Wednes...
25'dist_topic_0'Distance to topic 0
26'dist_topic_1'Distance to topic 1
27'dist_topic_2'Distance to topic 2
28'dist_topic_3'Distance to topic 3
29'dist_topic_4'Distance to topic 4
30'subj'Subjectivity
31'polar'Sentiment polarity
32'pp_pos_words'Proportion of positive words in the article
33'pp_neg_words'Proportion of negative words in the article
34'pp_pos_words_in_nonneutral'Proportion of positive words among the non-neu...
35'ave_polar_pos'Average sentiment polarity of the positive words
36'min_polar_pos'Minimum sentiment polarity of the positive words
37'max_polar_pos'Maximum sentiment polarity of the positive words
38'ave_polar_neg'Average sentiment polarity of the negative words
39'min_polar_neg'Mimimum sentiment polarity of the negative words
40'max_polar_neg'Maximum sentiment polarity of the negative words
41'subj_title'Subjectivity of the title
42'polar_title'Polarity of the title
\n", "
" ], "text/plain": [ " feature_names \\\n", "0 'nb_words_title' \n", "1 'nb_words_content' \n", "2 'pp_uniq_words' \n", "3 'pp_stop_words' \n", "4 'pp_uniq_non-stop_words' \n", "5 'nb_links' \n", "6 'nb_outside_links' \n", "7 'nb_images' \n", "8 'nb_videos' \n", "9 'ave_word_length' \n", "10 'nb_keywords' \n", "11 'category' \n", "12 'nb_mina_mink' \n", "13 'nb_mina_maxk' \n", "14 'nb_mina_avek' \n", "15 'nb_maxa_mink' \n", "16 'nb_maxa_maxk' \n", "17 'nb_maxa_avek' \n", "18 'nb_avea_mink' \n", "19 'nb_avea_maxk' \n", "20 'nb_avea_avek' \n", "21 'nb_min_linked' \n", "22 'nb_max_linked' \n", "23 'nb_ave_linked' \n", "24 'weekday' \n", "25 'dist_topic_0' \n", "26 'dist_topic_1' \n", "27 'dist_topic_2' \n", "28 'dist_topic_3' \n", "29 'dist_topic_4' \n", "30 'subj' \n", "31 'polar' \n", "32 'pp_pos_words' \n", "33 'pp_neg_words' \n", "34 'pp_pos_words_in_nonneutral' \n", "35 'ave_polar_pos' \n", "36 'min_polar_pos' \n", "37 'max_polar_pos' \n", "38 'ave_polar_neg' \n", "39 'min_polar_neg' \n", "40 'max_polar_neg' \n", "41 'subj_title' \n", "42 'polar_title' \n", "\n", " feature_description \n", "0 Number of words in the article's titles \n", "1 Number of words in the article \n", "2 Proportion of unique words in the article \n", "3 Proportion of stop words (i.e. words predefine... \n", "4 Proportion of non-stop words among unique words \n", "5 Number of hyperlinks in the article \n", "6 Number of hyperlinks pointing to another website \n", "7 Number of images in the article \n", "8 Number of videos in the article \n", "9 Average word length \n", "10 Number of keywords in the metadata \n", "11 Category of the article: 0-Lifestyle, 1-Entert... \n", "12 Minimum number of share counts among all artic... \n", "13 Minimum number of maximum share counts per key... \n", "14 Minimum number of average share counts per key... \n", "15 Maximum number of minimum share counts per key... \n", "16 Maximum number of share counts among all artic... \n", "17 Maximum number of average share counts per key... \n", "18 Average number of minimum share counts per key... \n", "19 Average number of maximum share counts per key... \n", "20 Average number of average share counts per key... \n", "21 Minimum number of shares of articles from the ... \n", "22 Maximum number of shares of articles from the ... \n", "23 Average number of shares of articles from the ... \n", "24 Day of the week: 0-Monday, 1-Tuesday, 2-Wednes... \n", "25 Distance to topic 0 \n", "26 Distance to topic 1 \n", "27 Distance to topic 2 \n", "28 Distance to topic 3 \n", "29 Distance to topic 4 \n", "30 Subjectivity \n", "31 Sentiment polarity \n", "32 Proportion of positive words in the article \n", "33 Proportion of negative words in the article \n", "34 Proportion of positive words among the non-neu... \n", "35 Average sentiment polarity of the positive words \n", "36 Minimum sentiment polarity of the positive words \n", "37 Maximum sentiment polarity of the positive words \n", "38 Average sentiment polarity of the negative words \n", "39 Mimimum sentiment polarity of the negative words \n", "40 Maximum sentiment polarity of the negative words \n", "41 Subjectivity of the title \n", "42 Polarity of the title " ] }, "execution_count": 78, "metadata": {}, "output_type": "execute_result" } ], "source": [ "feature_data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "** Now, let's load and visualize the features. **" ] }, { "cell_type": "code", "execution_count": 79, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
nb_words_titlenb_words_contentpp_uniq_wordspp_stop_wordspp_uniq_non-stop_wordsnb_linksnb_outside_linksnb_imagesnb_videosave_word_length...pp_neg_wordspp_pos_words_in_nonneutralave_polar_posmin_polar_posmax_polar_posave_polar_negmin_polar_negmax_polar_negsubj_titlepolar_title
200098430.53582.092000e-090.746915.081114...0.0192300.71430.44370.033331.0-0.3160-0.8000-0.050.00.0
200198050.41962.165000e-090.56938.07104...0.0257100.53490.30810.050000.8-0.3463-0.7143-0.100.90.3
200281450.75941.163000e-080.84887.03024...0.0075190.83330.36730.136400.5-0.2000-0.2000-0.200.00.0
2003122010.63599.259000e-090.81487.02004...0.0270300.73680.37210.136400.6-0.4000-0.4000-0.400.00.0
2004136730.46092.500000e-090.59508.07104...0.0214400.56250.35000.050000.6-0.2435-0.8000-0.100.00.0
\n", "

5 rows × 43 columns

\n", "
" ], "text/plain": [ " nb_words_title nb_words_content pp_uniq_words pp_stop_words \\\n", "2000 9 843 0.5358 2.092000e-09 \n", "2001 9 805 0.4196 2.165000e-09 \n", "2002 8 145 0.7594 1.163000e-08 \n", "2003 12 201 0.6359 9.259000e-09 \n", "2004 13 673 0.4609 2.500000e-09 \n", "\n", " pp_uniq_non-stop_words nb_links nb_outside_links nb_images \\\n", "2000 0.7469 15.0 8 11 \n", "2001 0.5693 8.0 7 1 \n", "2002 0.8488 7.0 3 0 \n", "2003 0.8148 7.0 2 0 \n", "2004 0.5950 8.0 7 1 \n", "\n", " nb_videos ave_word_length ... pp_neg_words \\\n", "2000 1 4 ... 0.019230 \n", "2001 0 4 ... 0.025710 \n", "2002 2 4 ... 0.007519 \n", "2003 0 4 ... 0.027030 \n", "2004 0 4 ... 0.021440 \n", "\n", " pp_pos_words_in_nonneutral ave_polar_pos min_polar_pos max_polar_pos \\\n", "2000 0.7143 0.4437 0.03333 1.0 \n", "2001 0.5349 0.3081 0.05000 0.8 \n", "2002 0.8333 0.3673 0.13640 0.5 \n", "2003 0.7368 0.3721 0.13640 0.6 \n", "2004 0.5625 0.3500 0.05000 0.6 \n", "\n", " ave_polar_neg min_polar_neg max_polar_neg subj_title polar_title \n", "2000 -0.3160 -0.8000 -0.05 0.0 0.0 \n", "2001 -0.3463 -0.7143 -0.10 0.9 0.3 \n", "2002 -0.2000 -0.2000 -0.20 0.0 0.0 \n", "2003 -0.4000 -0.4000 -0.40 0.0 0.0 \n", "2004 -0.2435 -0.8000 -0.10 0.0 0.0 \n", "\n", "[5 rows x 43 columns]" ] }, "execution_count": 79, "metadata": {}, "output_type": "execute_result" } ], "source": [ "list_feature_names = [name.strip(\"'\") for name in feature_data['feature_names']]\n", "\n", "train_data = pd.read_csv('data/kaggle_data/train.csv', header=None, sep=\" \", names=list_feature_names)\n", "train_data.head(5)" ] }, { "cell_type": "code", "execution_count": 80, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
nb_words_titlenb_words_contentpp_uniq_wordspp_stop_wordspp_uniq_non-stop_wordsnb_linksnb_outside_linksnb_imagesnb_videosave_word_length...pp_neg_wordspp_pos_words_in_nonneutralave_polar_posmin_polar_posmax_polar_posave_polar_negmin_polar_negmax_polar_negsubj_titlepolar_title
0122580.57456.897000e-090.68974.02004...0.016530.71430.29670.100001.0-0.2344-0.3-0.18750.1250.0
18110.00001.000000e+000.00000.00000...0.000000.00000.00000.000000.00.00000.00.00000.5250.3
2102630.72496.623000e-090.85436.03205...0.047010.50000.26170.100001.0-0.2170-0.5-0.12500.000-0.2
31312810.40671.422000e-090.590329.04114...0.015120.75000.35850.033331.0-0.2403-0.5-0.05000.0000.0
491070.81521.538000e-080.81545.02004...0.021510.66670.48810.285701.0-0.8000-1.0-0.60000.0000.0
\n", "

5 rows × 43 columns

\n", "
" ], "text/plain": [ " nb_words_title nb_words_content pp_uniq_words pp_stop_words \\\n", "0 12 258 0.5745 6.897000e-09 \n", "1 8 11 0.0000 1.000000e+00 \n", "2 10 263 0.7249 6.623000e-09 \n", "3 13 1281 0.4067 1.422000e-09 \n", "4 9 107 0.8152 1.538000e-08 \n", "\n", " pp_uniq_non-stop_words nb_links nb_outside_links nb_images nb_videos \\\n", "0 0.6897 4.0 2 0 0 \n", "1 0.0000 0.0 0 0 0 \n", "2 0.8543 6.0 3 2 0 \n", "3 0.5903 29.0 4 1 1 \n", "4 0.8154 5.0 2 0 0 \n", "\n", " ave_word_length ... pp_neg_words pp_pos_words_in_nonneutral \\\n", "0 4 ... 0.01653 0.7143 \n", "1 0 ... 0.00000 0.0000 \n", "2 5 ... 0.04701 0.5000 \n", "3 4 ... 0.01512 0.7500 \n", "4 4 ... 0.02151 0.6667 \n", "\n", " ave_polar_pos min_polar_pos max_polar_pos ave_polar_neg min_polar_neg \\\n", "0 0.2967 0.10000 1.0 -0.2344 -0.3 \n", "1 0.0000 0.00000 0.0 0.0000 0.0 \n", "2 0.2617 0.10000 1.0 -0.2170 -0.5 \n", "3 0.3585 0.03333 1.0 -0.2403 -0.5 \n", "4 0.4881 0.28570 1.0 -0.8000 -1.0 \n", "\n", " max_polar_neg subj_title polar_title \n", "0 -0.1875 0.125 0.0 \n", "1 0.0000 0.525 0.3 \n", "2 -0.1250 0.000 -0.2 \n", "3 -0.0500 0.000 0.0 \n", "4 -0.6000 0.000 0.0 \n", "\n", "[5 rows x 43 columns]" ] }, "execution_count": 80, "metadata": {}, "output_type": "execute_result" } ], "source": [ "test_data = pd.read_csv('data/kaggle_data/test-val.csv', header=None, sep=\" \", names=list_feature_names)\n", "test_data.head(5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let us use visualizations to explore the relationships between pairs of features, and between a feature an the output:" ] }, { "cell_type": "code", "execution_count": 81, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[,\n", " ],\n", " [,\n", " ]],\n", " dtype=object)" ] }, "execution_count": 81, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from pandas import plotting\n", "plotting.scatter_matrix(train_data.get([\"nb_words_content\", \"pp_uniq_words\"]), alpha=0.2,\n", " figsize=(6, 6), diagonal='kde')" ] }, { "cell_type": "code", "execution_count": 82, "metadata": { "scrolled": true }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/seaborn/_decorators.py:43: FutureWarning: Pass the following variables as keyword args: x, y. From version 0.12, the only valid positional argument will be `data`, and passing other arguments without an explicit keyword will result in an error or misinterpretation.\n", " FutureWarning\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 82, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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jZkzZxqzZ89uMgupsLDQmDNnjjFz5kzjN7/5jREMBrsUz7p164yRI0caF154oTFv3jxj3rx5xqpVq2IWU1FRkTF//nzjwgsvNObMmWP86U9/MgzDiOlr1GDt2rXh2YmxjGf//v3G3Llzjblz5xrf/va3wz+vsYxp69atxne+8x3jwgsvNG688Uajqqoq5t8zl8tlnHrqqUZNTU34sVjG9PjjjxvnnXeeMWfOHOOWW24xvF5vzF+j44FsxSKEEKLPknKiEEKIPkuSmBBCiD5LkpgQQog+S5KYEEKIPkuSmBBCiD5LkpgQQog+S5KY6BMuv/xyvv76634bw7Jly3C73V1+/ueff86GDRuiGJEQ8UGSmBCtCAQCsQ6hieeff75bSeyLL75g48aNUYxIiPhginUAQjR28OBBrr/+eiZNmsTGjRvJycnhySefBODNN9/k/vvvx+l08sADDzBu3LhWzzF37lxeeuklkpKSmDp1ari7+q233sp3vvMdJk2axK9//Ws2b96MpmncfvvtTJ06lX/+85+sWrUKn8+Hy+Vi6dKl3HHHHezcuZNhw4bh8XiAUJf9X/3qV2zevBlFUbj44ou56qqrWo1l37593HPPPVRUVKBpGo8//jgFBQU88sgjfPTRRyiKwo033si3v/1tPv/8c5544gnS0tLYvn07Y8aM4dFHH+WFF16gtLSUK6+8ktTUVF544QU+/vhj/vSnP+Hz+SgoKODBBx8kMTGRGTNmsGDBAj788EMCgQB/+MMfsFqt/O1vf0NVVd58803uuusuJk+e3CPfPyF6XaxbhgjR2IEDB4zRo0cbW7duNQwjtHng8uXLjcsuu8z41a9+ZRhGaGPRxpuKNnfXXXcZH374ofHNN98YF110Ufh5s2bNMpxOp/HXv/7VuP322w3DMIydO3ca06ZNMzwej/H6668bZ511Vrj1zzPPPBM+rqioyBg9erRRWFhofP3118ZVV10Vvl51dXWbsSxcuNB47733DMMwDI/HY7hcLuPdd981rrrqKiMQCBhHjx41pk2bZpSUlBhr1641Jk6caBw5csTQdd347ne/a6xbt84wjKabYJaXlxvf//73jbq6OsMwQpspNrTnOuecc4znn3/eMAzDePHFF41f/vKXhmEYxh//+Efj6aefjuh7IERfIuVEEXfy8/MZPXo0AGPGjOHQoUMA4UauU6ZMwel0hhsFNzd58mTWrVvHunXrWLRoEdu3b6ekpISUlBQSExP58ssvmTdvHgDDhg1jwIAB7NmzB4AzzjiD1NRUANatWxc+btSoUZx44okAFBQUcODAAe677z7WrFnT5tY1TqeTkpISZs2aBYDVasVut/Pll18yZ84cNE0jMzOTKVOmhO+1jRs3jtzcXFRVZdSoUeGvvbFNmzaxc+dOFi1axPz581m+fDmHDx8Of75hJ4KTTz651ecLcTyRcqKIOxaLJfz/mqbh9XqBlvsmtbWP0pQpU3j55Zc5cuQIP/vZz3j//fd59913wyU0o512oXa7vcNrpKSk8MYbb/Dxxx/z8ssv88477/Dggw9G9sV1cP3mX7uu660+/4wzzuCxxx5r9RxmsxkAVVVbfb4QxxMZiYk+4+233wZg/fr1JCUlkZSU1OpxeXl5VFZWsnfvXgoKCpg4cSLPPPMMkyZNAkJJ7q233gJgz549HDlyhKFDh7Y4T+Pjtm/fzjfffAOEtosxDIPzzjuPn/zkJ2zdurXVOBwOB7m5ueEt530+H263mylTpvDOO++g6zoVFRWsX7++zft7DRITE6mrqwNgwoQJbNiwgX379gHgdrvDI8lIni/E8URGYqLPSElJ4dJLLw1P7GjPuHHjCAaDQKi8+Nhjj4WT2Pe//33uuece5s6di6ZpPPjgg01GQA0WLVrEHXfcwdy5cxk9enQ40ZSWlnLHHXeEz3/zzTe3GccjjzzC3XffzeOPP47ZbObxxx9n1qxZbNy4kfnz56MoCrfeeitZWVnh/bha893vfpfrr7+erKwsXnjhBR588EFuvvlmfD4fAD/96U8ZMmRIm88/55xzuOmmm1i5cqVM7BDHFdmKRQghRJ8l5UQhhBB9lpQTRZ/1+uuv8/zzzzd5bOLEidxzzz29HstvfvObFh0xrrjiCi6++OJej0WI/kTKiUIIIfosKScKIYTosySJCSGE6LMkiQkhhOizJIkJIYTos/4/MIYEDmXqgGwAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import seaborn as sns\n", "sns.set_style('whitegrid')\n", "\n", "sns.jointplot(\"nb_words_content\", \"pp_uniq_words\", data = train_data, \n", " kind='reg', height=6, space=0)" ] }, { "cell_type": "code", "execution_count": 83, "metadata": { "scrolled": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/wbader/miniconda3/envs/tp-ml/lib/python3.6/site-packages/seaborn/_decorators.py:43: FutureWarning: Pass the following variables as keyword args: x, y. From version 0.12, the only valid positional argument will be `data`, and passing other arguments without an explicit keyword will result in an error or misinterpretation.\n", " FutureWarning\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 83, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAAGoCAYAAAATsnHAAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAADJTklEQVR4nOy9eZwc1X3u/Zyq6uq9Z1+0SwMCgbAAYTBysIwxq4kBO4SA73XykmC4uY6xceyPjU14CXGu4bXfYLCdGC43ie0kYEdvDNgYcASWBWGxkECyxAgtI6EZafaZ3rtrPe8fp6qmeu+Z6Z6l53z94SNPdVX1qeqZ+vU55znPQyilFBwOh8PhLDCE+W4Ah8PhcDjF4AWKw+FwOAsSXqA4HA6HsyDhBYrD4XA4CxJeoDgcDoezIOEFysXx48fnuwlzDr/mxmepXS+wNK+5EeEFykUmk5nvJsw5/Jobn6V2vcDSvOZGhBcoDofD4SxIpPluAGfm/OrAEMaTKgCgLSTjyo3d89wiDofDqR28QLnw+Xzz3YRpMZ5UMRTPznczOBwOpy7wAuXirREdr4+ccH5eSL0SSiniWR2qbkKWBER8/KPjcDiNDX/KuRiOpZEl82NN6B6u6+kIIpbR0Deawp4Tk+ifTKNvNAVFN539PSJBR8iLjrAX69qD6Ax756XdHA6HUy94gVoguIfrvJKAn77ZjzeOT4BSYE1rAJtXt0ASCESRwDApfJKAY+NpHDgVx96BGHa8OwoTwM0XroJH5NoXDoez+OEFaoFxKprBD187jnhGw/uWN2HzmhZ8sKcN46nc+aaNyyIYT6kYmEzj2HgK75yK46+e2o8fv3Ycf3fTeThnRdM8XgWHw+HMHl6gFhBHR5P45e8G0RqU8T8vPR2iQCoeI4kC1neGcf2m5dh7MoYfv/4erv/ef+G/X7waf339OXPQag6Hw6kPfCxogXDgVAzP/m4QnWEfvn7NWVjR7J/W8YQQrGoJ4JaLVmN5iw8/fO09PLz9cJ1ay+FwOPWH96AWAHtOTOLJXf3oCvvwifNXIOiVkNXVGZ3L7xFx/bkrsPu9STy0/RD2DURx+VldC0qRyOFwONXAC9Q8MxLP4vYf7UbE78HHz10GWZp9p1YUCP5kyxqouokXD46AEOCjG7pq0FoOh8OZO3iBmkd0w8TnnngLKUXH7Vt7anpugRB84vwVGE0qeOngCNa1BWt6fg6Hw6k3fA5qHnl0Zx/eODaBv/3EOeiO1N7FQhQIPnZON5r8HvzLGydwbCxV8/fgcDicesEL1DxxcCiO72w/hGvftwyf3Lyybu/j9Yi47tzlIAS4/UdvIqXodXsvDofDqSW8QM0Dv/zdIP70n3bBK4k4f1Uz3ugbr+v7NQdk3HLhahwdTeLu//gdKJ0ftwwOh8OZDrxAzQP/3+4BnIpl8eEzOpBQdMTSWt3f84yuEP7yyjPxzN5T+OGrx+v+fhwOhzNbuEhijjkyksCv3x3BmV1hnN4ZmrP3bQnIaAp4cFZ3GPf/4h0MxbLYvKYF6wOLy8Gdw+EsHXgPag6hlOLepw9AlgRsPaN9zt9/MqXhw2d0IOxjoon3xtNz3gYOh8OpFl6g5pBf7BvEq0fHceXZ3QjI89N59XpEXPu+ZchoBp7cdQKGyeejOBzOwoQXqDkiqej4xrPvYOPyCD6wrnVe29IR9uKyMztxdDSFf9w1Mq9t4XA4nFLwAjUH/OrAEP7nv+zGcFzBzReugkAqm8DWm7OXR3DR2lb829vj+M93hue7ORwOh1MAL1BzwDun4njlyBg2Lo+gK7xwRAm/v2kZzmj34Ys/fRvH+SJeDoezwOAFqs5QSvHM3lPwiAI+eFrbfDcnB48o4K+vXAlRIPjTf96FidTMDGo5HA6nHvACVWd+vm8QfWMpfPC0tnkTRpSjOyzj8T9+P05GM7j1n3chrXKnCQ6HszDgBaqOJBUd3/jFO1jR7F/QCbfvX9uK795yPn43EMX//Nc90AxzvpvE4XA4vEDVk4e3H8JoUsH15y5fEMKIcly5sRt/+4n3Yce7o/jCk2/zIsXhcOYdXqDqxLtDCfzjfx3HzReuwqrWwHw3pygCAbxer/PzLRetxh9esBLP/m4Qn/z7V/HL3w3OY+s4HM5SZ+FNijQAzDFiP8I+CV++agNe2D80300qSktAxq6TaaT7TwAAejqC2Ly6BUPxLF4+PIZ/2HEUV5zdBY/Iv8dwOJy5hz956sA3nu3FG8cmcOkZHTg8nJjv5pRlOJ7GUDyLoXjWMa3dvLoFH1rfjt+djPHhPg6HM2/wHlSNSWQ1/HRXPzrDXqxqDcyJU3k92Ly6BWGvhGd/NwjdNPHILefDK4nz3SwOh7OE4D2oGvOd7YeRVHR8ZEPnghdGVOJD6zvwf3/8bLxwYBi3/fBNZFRjvpvE4XCWELxA1ZCDQ3H886vHceHa1rpEuM81AgFu/b11+H/+YBP+68gY/vgf30A8uzh7hBwOZ/HBC1SNME2Ke37GhBFXnt01382pCS0BGb86MATDpPij96/C7vcm8fFHXuGOExwOZ07gBapGPLHrBN58bxJf/9hZCHobZ2pvPKliKJ5FZ8SH39+0HCejGfzRo69hJJ6d76ZxOJwGhxeoGjAcz+KBXx7EB09rw40XrJzv5tSNde1B3PrBtTgVzeAPH30N/RM88JDD4dQPXqBqwF///ABUw8T/+sT7QBa5MKISPR0h/MttH0A0reGmR1/DkZGFLaPncDiLF16gZsmDz/Xil78bwqVndOC1o+N4o298vptUVwQCnL+6BU/efjE0g+KTf/8qXjva2NfM4XDmB16gZsGpaAb//Op76Ax7sb4rnLPYtVGxhRNvn4jiTz+4FkGvhD/+xzfwH3sG5rtpHA6nweAFaoZkNQN/8W97YFCKq8/phig09tCeG1s4oRgmvnLVmTitI4Qv/nQvbvvhLrywn/v3cTic2sAL1AzQDRN3/eRtvNUfxY2bV6IlIM93k+aNgCzhv31gNc5aFsb23hH8/Y6jPFOKw+HUBF6g8kirOobjWYwmFOhmoQddNK3i1n/ehef2D+Gea8/G+xZwztNcIQkCrjirCx88rQ37BmK44fv/hb7R5Hw3i8PhLHIaZ8HOLFF1E8++M4F3htMwKdsmCgTbdg/gnBVNWNcexImJNH625ySyuoEH/+B9+KMLV+OJN07Mb8MXCIQQXLi2FWd1R/Czt0/iuu/9F/76uo345OYVDa9s5HA49YEXKIvJtIrBhIpNK5uxqsUPzaBIqzo0g+KZt08hoejwSgI2Lo/gktPbYZpoeMXeTDi9M4RffO4SfP7Jt/CX/74Xzx8Ywv/6xPvQEfZWPpjD4XBc8AJl0RXx4bYPdCNL/M627ogPt3xgNUyTIprR0Oz34Ce7+p14irbg0p17KoVAgOXNfjx5+xb84yvH8K1fvYsrHvoNvnzVmbj5wtVLSkzC4XBmB5+DqgJBIGgNyhD4w7Uitgz9p7v6EfJK+OyHT0Nn2Iuv/2w/Pv7dV3ivk8PhVA0vUJyaY8vQh+JZmAD+9INr8b1PnY9oWsUfPfY6/vSfd6F3MD7fzeRwOAscPsTHqTutQS9AgDu2nobX+sbx8uFRfOzhl3HuqmZccVYX1neFcOXG7vluJofDWWDwAsWZE8aTKibSKs7sDuOqs7vw1Nun8MrRMewbiOKida04f3ULF1JwOJwc+BAfZ84JeiVcfU43/q8ta3H28gh+e2wCH/7Wr/H//updHojI4XAceA+KM2+EfBI+uqELV5/djYPDCXz3pSP48evv4bOXno5Pb1kDn0ec7yZyOJx5hPegOPPOGV1hXHfucvzFpaejI+TF3/6yF1u++SL+7Y0TyGrGfDePw+HME7xAcRYE40kVokjwsfctwyfPX4GgV8LXfvY7fPCBl/CtFw7iZDQz303kcDhzDB/i4yw4VrUG8P41LVjbEcQ//9dx/MOOo/j+r4/i9M4QNi6L4JwVTVjTFuDKPw6nweEFirMgEQWCD57Wjg+e1o7+iTSefvskfvTae3h67yk8s+8UTu8IYTSp4Iqzu9AZ9s13czkcTh3gBaoM3Dhi/rAdKcaTKgDgwrWtaA3I2H8qjkPDCRwbS+HrP9uPe57ajwtWt+Cqjd24amM3VrcF5rnlHA6nVvACVYb8h2RPR3CeW7S0sB0pAKAtKIMQgo6wFx1hL27cvALnrWnBC/uH8cKBIfztL3vxt7/sxYbuMC63oj82r2nhSkAOZxHDC1QF8h+SnIVBa9CLE+NpdIa9+PTFa0BBkVYNvHBgCH+/4wi+9+sjkCUBm1c346J1bdi4PIKNyyNY0eyvfHIOh7Mg4AWKs2hxf3nYuCwChIBPnr8SHztnGY6PpzCeUrFvIIbvvngYVsQXIj4Jq5sknH1AxZq2IFa1BrCmNYDVrQE0Bzw8u4rDWUDwAsVpGNwFqzkg4/dOa8fvndaO/sk0xpMqVN1AwCvh7eOj+PW7oxhNDOQc7xEJmvwerG4NoD3EhhLbQ140+T0I+yRE/B5EfB5E/BIiPrZNlgR4RAGSQHhx43BqDC9QnIbHIwrobvKxXhYBVgZNNDe1YHmzD3tORHF0NIlYRkNS0UEphV8WcXw8hTffm8RESq36fWRRgCwJEAigmxSUMqGNIBB4JQGEEBAAhAAEBAKBU9QEgW1jrwECIUipOkABr0dE2CdhbVsQIa+EsE9CyCc5/z/s8yDkZdvCXutnn4SAR+QRMZxFDS9QLrqaAlAwZVjaFPCwp0WVPy/kY0qdoysSQNqUFlRba3l9+fvEMlNefz6PiI3LI+iOTMnUezqCkEQBcWu/jrAXh4cTOBXNIqsZaA56MJZQMZpQkNUNGAaF7BGwpi0IVTeh6iZMSvHeeAoZzQAoEPZJIIRA0U1QSkEB+D0idJNC0QznZ80woRomKAW8HgFpxUBGM6BoJlKKjoNDcSSyOpKKjrRa2WGDAAh5JXhEwC8PwiMSeETW4/NIAmT3zzn/X4As5f0sEoiC4BRcgRCIAiuk7P8T5zWREKcIOw2Z+ienpzm1Lfdf9hop2FbxeGvLyIiKY/pg0X3cvxSE5G/JhRbbVmxjkT3P7I5gXTsXVs0GQmnx273Yefvtt+H1Ts8dW1GUaR9TiURWw2hCgWqYkEUBHWEvwj5PTd9jNtTjmhc6S+2al9r1Aov7miVJwvr16+e7GQuChu1Beb1enHXWWdM6pre3d9rHlGPHwRHc+58H4BEJ/B4RGc2AZiRx/3UbcemGzpq9z2yo9TUvBpbaNS+16wUW9zX39vbOdxMWDA1boBYCj+7sg0ckCMjsNgdkCWlVx6M7+5wCtePgCB7d2Yf+yTRWtQRwx9aemhWvep6bw+EsDPYNRPHIi0fwD/99MzxiY9mr8gJVJ3YcHMGeE5MwTBNeSXSG9vweEQOTaWefe585AM0wEEtrGIxlsOfEJD576Wm48/IzZv3+9z7Dem/Nfg9GElnc+8wB3A/kFKldAync//LrvIhxOAsEe9ZFN0xIVRScg0MJbO8dxlAsi1WtjeWk0ljldoFgFwdC2CSyblKcimaRyGrIaAZWtrBfokd39kEzDIwnNRiUqc1MSvH9HUex4+DIrNrg7r0Rwv71iASP7uzLaeffvzGOkUQ2p4jN9r0bkR0HR3DLY6/jkgdfwi2Pvc7vEaduEELw0H8eqqo4AUBrgBkITEdxuljgPag6YBeHrrAPp2IZEAoAFEOxLDojPtyxtQcAcGg4jsm0BtOSI4uWGko36ayHAfsn02j254ox3L23qXai7BDkfLGQhier7Y1yOPNBa6hxCxTvQdWB/sk0/B4REb8Hy5v8kEQCCiZEtQUSOw6OIKkYMC0NpUkBzaTQDRNeSSgYBpxuL2dVS4DJnF24e292O71irsBWN0zsOTE5rz2FmV5zvaimN8rhzBeN3IPiBaoOuItDxO9BT0cIq1sD2Ly6xfnG/ejOPrQGPWzhJqbWYRjWuhn3MOBMHo53bO2BZlCkVbb4NK3q0Azq9N7sdirG1CqDeEbDyWgWBJjXwrDQCoL9hcNNfm+Uw5kv7B7UZJoXKE4VVFMc+ifTaAt60RlmazUo4LgMyJLo7DuTh6M9PJZWdYwmFAzFMugM+wrk7aydcNo5nGA2Qd1NvrLzVvWei1loBaGa3iiHM1+EvRIkgWCc96A41XDphk7cf91GdIZ9iGW0osXBfuh1RnxY0xZAUBYhCGzlv3vf6T4c3cNj3REfOsJeBLyeonM4l27oxP/8QJvTTkqBFc2+nIXExVSHx8aSmEyp2HV8Anf8y248sv1QTe6bTbFrHk8piGW0eRl6rOYLB4czXxBC0BKUMckL1NKiFr2FUjYd7odeyCuhu8mHFc0BPHLz+UV6OdU/HIsNj2mGgTuffKvodVy4Mognbr8YL3/lMmxe3VKgHHIXwwee68VgNI2huIK0aoAANVMdlro3lFKMJbMYSagIyOK8DD1W84WDw5lP2oIy70EtJWYzUV/NsdU+9KbzcLTXXr03nkLfaBKJrIZEVsNYQkVaNSpeR7liuOPgCA6PJqGbU/vrJgUBoJtmTeeH8q85pRjoCMnoCJceeqw3l27odAr5E7dfzIsTZ0HREmjMHhSXmZegGheI2R576YbOqh501exXau2VYCkwvKLgPNxLXcelGzpxv9X+gck0Vrrk3bc89jo8goCsaVUoAsBSHvpdqsNa4b7mSx58qaJknsNZyrSGZPSeis93M2oOL1AlqGYdkRv3up3RhILuiLfqY2tBqbVXWZ31cgzTQN9oEu0hL8I+qWRbShXD/sk0uiJenJjI5AxbUspcwuspGFjVEsBIIusUfICLFDgcN60BGRNcxbd0mI44IX9IjwA4Gc06kQ2ljq2lIq7Y2itbQU4IyyrSDYpTsQzGksq0H+6rWgKQRAEdIZl1niibX2ORDWJdBQNcpMDhlKc1KCOa1qAbZuWdFxG8QJVgOg/FfGFCdxPLFxpOZEsem1/Ujo8ncce/7MYFf/OrGRWrYmuvPCKBLBJIgsBk7NanPZnWyj7cixVO+36E/R6sbvXD5xEgCgSndYTqLhjgIgUOpzytQbYWKur6UtwI8CG+EpSbj8knfzgw7PNgRTPFUJxJo4sd6y5qiayG8aQGCoqsZs7ISueOrT2495kDSKu6K9qDYmUzExbYmVQegSDglUqet6Stz3Ubcf91G537cf6qljm1H6p2vi6fYpZJXXVoH4dTKyiluOuKXLPoSsaxdoGaTKloDy3OHKxi8AJVhmofisXmSCRRwObVLXji9ouLHuMuaqMJhYkbQKAa5ow88YoVVFkUnPPZa5vSqo7OsK/kecoJPMqp1xaSd567TcWK7W3nh7FIo4I4SwDbLNZNfsHKxy5Q4ykVjRR1yIf4asBM5kjcQ3KqYYIQNq8jW9+SZiKqyJdCf+XqDdNu10ydKxaSd55NKcukbQdi89ouDqfWuHtQjQQvUDVgJnMk7qLmEQgMk8IEdbrn1ajUKoksZtKumdj6LDTvPJtSxXY4qc9Tizic+uDuQTUSfIgPU8NTfSMx9HTGZjQ8Nd05EveQXCyjIZHV0RLwIOyTqurpVBt2ON12lZrLqtTrmqkkv57DgaXk6V0h/mvPaSyaA+zvr9F6UEv+L9U9TxGWyZxm/biLh/3QriTIsHGHHRLCwg4Nk9kObVrZXHDeQ8NxaAaFLAlY3xl2Cs7fvXAKE88M5hSKasUhNtNZpzSX2Uqliu2Nm5pq+j4cznzjlUSEvRLvQTUa7uGpbFaDf55C+6bb0+mfTCOWZsXJNCkMSmFSgIDiged6ncype585AFU3EM+yYa2MauD4eBJf3rYXFIBfNNEcDBQUimrbsuPgCKJpFcfH09ZCYS8kUahKkg/UNySxVLHtouM1Of9CFIZwli4tQbnhIjeWfIGa7vDUTJnJw6zcMataAhiMZQAKuCKdQAEcHk06x3pEgvGkDgEEgkBgUop4RofBqhlaIhISWR1jSQWKbuLOJ98qMKwt1z67N7Sy2YfhuIKBaAbrO0L4q2vPrkqSD9TXZaNYse3tnX2BWmgpu7xYclqDcsOFFi55kcRcZP1MV+W24+AIrvnOTvzZj97EW/2TEAkKjrljaw8EQnKKk41hAp/58ZvYdXwCAxNppFQDmmlCt9SCqmFCN00YJkVSMXAqloFuUIgCkFL1qhV47t5QxC9jfVcYa9uCaAl6Sz4cGyVbaSEJQxaqipIztzRigVryPag7tvbg8z95C/FMygoNVBHxS/ira8+e8Tnzv81OppScYS3DpBiJZ3HHv+zG5tW5C16dh008C5EA1AROxbJY3uR3HoB2r6Ar7MVANFu0DZpVuWy9mklZNAYFhVcSnR5UNGu6eleATxJy3qcc0+kN2ffk8EjCEYS0h7xViTAWInPdEyzHXA6bchYurUEZBwcbyzB2yReofQNRxDJTsmMKIJbRsW8gOu0huC09rfjl7wZxeDQJjyAg4pPw1olJZHUTsgAst3oJp6JZABQUyBkaAoA7n3wLiazuMmRlZq/9k2mIAsHAZAY7Do6wthECSUBOBIYby3DciZOnYL2riF+CbrD3n0ypkERWwCgFOsLeqh+0+eKIRFbDUCwLCuCWx153Cq97OKw74oNHVDCRYr5h67sii3I4aiEZ2C6kYsmZP1qtTChKKQghlQ9YBCz5AvUPvzlacrtbrp1P/hzE8fEkfnt8AiIBRMIcIUaSU91t1QQGJjOQBAJCAFDifOtNqzru+dk+jKY0KEWqDQUrHhJYsbELWkgWQUslIlrHeQQWvSFaa60IAda2hZwey2f/bTeyugmfJKAj7EXY50Fa1at60LpVcrph4qTVm1vR7MspvPnf8NtDPgRkCZ1hX0mnjWL3eyHNscxEjl8vFlKx5MwfrUEZim4ioxk5vwuLmca4ilmQ0VhBIK7uBqVT20uR/9CNZ3QIhA2tSQLrkeSjm5QVC8Je1ylB32gSAVnAaFKDRyz/rUc1KATChgcffP4gCCHsP0pLJvdSAAFZRE9HyLE5cheFr3yoA999YxKJrI6ByTQkQUDYx4Y4ixUF+9rtbTduXoHX+iaw58QkCChACE5MZAAAksBSeJNWWKKb6XzDX2iCBGB6Xo31ZiEVS8780RqwFusmVQRaG+PR3hhXMQvsuuT0ROjU9nL0T6YhEqBvNMlEB1ZhAkoPudkYFJAEAkkg0A2KsaRW1XvCaqdmmHh3OAFRIKymEpTsSekmha4a+N1JZu9zbDSFqx/6Db56zVnOw5Rab04IYQUabOjzR6+/h6TCFH9jSQV3PrEHskdEk9/jFIpte07i/us24i///W1EMyYMl2pDM4F3h5M4sytU8K1uOt/wF+ocy0wNbOvRjoVSLDmzp5hZbDU4dkdpFataq/vbqmRCO98s+QLVFpIxlixUvrSFZOf/F+tJhL0SDo8kIQoEojWMppmAR2AP5lJYAbcwKIWu51YVrZgkLw+KKVm5abD5KZEAgtWGSpgADg0n8aVte/HtG8/FtgMxSAKBSAgMUFCTIp7R8HfbDwNghZQAUDQTWQBQDIS8Uk467wPP9SKa0WG4wnbtniixCp9mmDnf8GMZDbIo4JIHX6o4ZLeU51iqHdpcKMWSM3uKmcVWw2CMjVz8n5ePYW17sKpjZlII55IlX6DagzLGk2rOEBmxtgPFh5e+tG0v4hkNuklhmNR5wOuUwjALezR2Lw3WvxSuDS4ql5fix+gUEFxvKBIUlZ+7j0kqrLAcHsnCoLltdFOs6L03nkZHSEZXkx+6YeLYWCZnSNN9fSYFDg4ncMO5yzAUVzEwmUZQFkHA5O7VDNnVco5lx8GRou4ZtaYWc2YLcWiTs3DxWb6T+cs4FjMLt283R4yVWDdgb89f76IbFNG0BtU1pKdZIoSIV4AJFDzpZ1J4qsHujQGsZwSwHk+ljhQFkNVMvDucdPadThspgNGkinhGw2AsyxwsyoxPUgo8vXcQW3pa8TfXn4NTsSwm0iqGYlkkFb3iGqJybvHTSSW2H/iTGb2u64VqtS5pIa214ix8ArxANR5pxSh4OFNrO1DoiD2WVCCwqRqIggCfR4RXFCAJBKrJ1hGtaQtAJIVzSrVWfjq9MRe6WVowUc3x1WD3toYTWagGE31IFS7OpMD3dxy1JvMNNv9mUpyKZpHIamWH7Eq5sgOYViGwH/g+Saj6gT+dApj/PrMtLMXc2HXDxJ4Tk9NqD2dpIEsCBMLszBqFJT/El9WLf5j29vzhJdUwYVpybVsSTgBY9QydIRmjCQWSKDiCBmd4r15dqTnGvgxbEGFQNqdWCUU34REJvJIA3aBscTAoRhMKRIGUHbIrNsdyzXd2YiSehUEpZJHJ5MstMrbnshRlKha7kut6uSG2UsN4tZozK7bO7GQ0C6lGQ34LTbrPmR2EEPg8IrK8B9U4lHqu2tvzh5eYwAEQBeLcPPsUkkAwkdaQ1U1QSp3iJDTGmrkcfJJQlSgjH90w0R7ywgSFphtQdBMp1cDR0RQOjyRw9UO/qXq47tBIEialjkjlVDQL3TBLFoLp2iyV6wmVG8arlZ1T/u/eUIytM+sK+2Y95Lfj4Ai+tG0v3uqfxHA8i7f6J/GlbXt5j2yRY4uQGoUlX6BKFQ97+6UbOnHj5hUYTSjoHUpAMygESwThFusRMHkopRSmSaEatOF6Tm6yujmj4cHhuIKIJVN3ixgFAowlVaaMtLwHv7RtL675zs6iBcsuHvb/BMIWQA/HlZKFwH7g218gKuVulUsXLle8ZpKwXIz8oU0Ktgg64uqdzVTN+MBzvYimNVCTLSynJhBNa3jgud5pn4uzcPDLYkMN8S35AiWWmDuxt+84OIJte06iI+zFWd1hCPYi27zegy3/NmjhvM5iqE+VOnkCZt8T7Ah5oJkmRhPZnNwayToxAbu3Y0nVEaMcG0sVnV/qn0yjK8x6YqZJnS8HmmmWLAT2A7/FL1WVMFyuJ1SueM0kybgUl27oxBO3X4yXv3IZNq9uKVizMlM147HxNARreQIhzItRIGw7Z/HSaD2oJT8HVWqYyt7u/qacyGoVFXKLlUqXZasTBQAgxZ0y3AgkV24uSwIifhleUcBoKvc+GpawwxZfZHUT/ZNpmBSW47ruWDDZ80v2/MzyJj/GkgpUw4QoEPS0BssWgks3dKKLLsdZZ51V4YrLOzQ8urOvrPS9HuuSuGMEpxKNVqCWfA+qnEUQkDvMwybz56RZCxYTrDhV6k0FZBESIZBE9l9LwMMWIltDceUON02aU8CKKf3sYTRJJFjXHsTq1gA6wz589ZrKhadayvWEKg3jzUT9N5v2TJee9mCOw71pBV72VLnAk7Mw8ckispoJs0HmFZZ8D6oSbiWVatuCULPoUN5SQhQIzDKrgZOWrJEACHkFrGsPoTsi42dvDxbsm+cyxYZRwebuPKIAQlCg9Jsre59SPaFy71/PBba16pl95eoN+PK2vUhkmdGvJAhoCXjwlas3zPrcnPnDXguVbRDD2MV/BbOkUg/KPaziEQg0k4IIBKub/EirOkaL2CQtBTRjyiHdJj/6g60VI/B6JGzpacX3dxR3jrf3Xdnid+xaZCuMkfW0mLAhfzhrvu19Sr3/QvUOdHPphk5868ZzuX9fg+G4Sai8QC0J3N+UYxnNCdsL+yScii7tCWXDpAh4BKQt80G7VrmH70RCkFR0PP7KMeimCVkk0IzCxcR3Xb4ed15+Bm557HWnxxrPaFYUPUVQlmY8nDXXLBbvwPku8JzizNQsFgD+68gYnj8whI+fuxwf6GmrcctmxmwMaXmBqgL3H7KTDDsch2ZW9r1rdOziZBceYKr3ScDcMzSDIquxUEiTMJm++57JIsG2PSexaWVzTo817JMgWeddLMUJ4PlMnNkxU7NYgA2FA8CPXnsPrx4dr2WzZsxsDGmX+JT/9LFlv+u7IpBFsqSLk41IppR4biiYk4Zp0qlUX5pbnAiAZXlx9rUSAswXtVoHxeFMF79riK8R4D2oGdI/ma4qv2kpYFDAI5KcLCj3a+WgYP6G7SHZGQKzi5Ftw2M7JdSzSOXb/mzpacVrfRMzsgHi+Uyc+cInsz5Ho0jNeYGaJjsOjuCB53pxMpppSIeImVJNllUxfJYv38loFqd3MInzjoMjUwoz08RYQsGXt+3Ft248t+JDfib+cvmqu+PjSfz2+AQ6QjLaQ94cFR6Aqs7P53c484EkCJBFgReopcaOgyO456nfYSCane+mNBSqYbK4DrCMKgB48PmDmExrEAXimO5OpjU8+PzBgrnA/Dj6mci7H93ZB80wMBxTcyyqJlMqfB4RowkFWd3An//rboS8kmPVVM98Jm7kypkpfrlxFuvyAlUFtrFmseRdzuywi5MoAKdiWVz90G9wcDgJABAI89gzTBOGSdE7lMAtj72OLT2t2LbnZEEhCniEkvJuYKrn0+ql+CJpcx74h0cSmEiqyA9CVgyK/ok0JCtOJauZ0AwNwbxE4VrLx3lQIWc2+DxCw8xBcZFEFTy6s8/5ds+pPRSwXA2A4xNTc3uaYULVDWguAcZIIovv7zgKzTAKjFqPjRf3xzs8HM9xHp/M6Dm+fqrL+DbfmtEEK5Sg7AWBTCml7PPXWj7Ogwo5s8HfQJEbvAdVBf2TaRiWEo1PO9UHuydlmBSySKBYQ23uqS2fJCAgSzBMilhaQ3vI57zmqJfyVtBnNAOqQdHk6ln5JAGmMPXAT6uu0Mr8NGRqWS+BQpYEUEqhGmbO+cvJx2cyVLdY1lFxFiZ+WWyY0R7eg6rAjoMjiGe0ootLlzp+icxIyVjKx4+C/UIua/YXJBJLAkF3EytIXkmAYuQOyGU0Az3twaLyblkSyvasJFeDbNNa0dpEAEgiwfImP7ojPrYYmVL0jSbROxjHwGQGW3pai17PTKPfa5UnxVmaNFIPiheoMtgPmKVuEFuKjD69ou2VBARlsawTumJQnJhIwyMKkAQ25OaTBLQFWVLxwaE4VN2AQEhBIfrK1RuKrqFa3xku+sBXDQqPyAqf6KqGFGyxZJNfQltIRneTz1k07PewRmV1A7JI0Br0YNuek0WLzkyH6vg6Ks5s8HtE6CYLTF3s8CG+MtgPGFWnTg4UZ+YougkiMfPXchJ9NrRHYYLghnO78cqRcYynVAhWr8oEgV9ictpYRiu6zsi9hmpLTyt+9Pp7OBnNwDApBABhP5yeFSEEq1oDGIxmHBXf+s6QY5zqXs8kiwJUw8wZRiwllJjpUB1fR8WZDX55arGux7+4v13zAlUG+wFjS6E5s0c3TZAKTvCUWma0BHjx4CgiXhGSSKz5KQHtIS8kq8tjhwe6eyX5a5p2HR+H/WWShfSxQtce8jpzVmGfB+FuljnVGfbhidsvds7nLgyXPPhS1UVnOpZHxeaq3G3gcKrFPR8byftdXWzwAlUG+wEjiwI0ozHGdOcb3WTeeyalOc7nxaAUiGd1xLNMQemVWHGK+D2IZ1QcH09jbVsgZ34nKIs5AZPjSc0pTkzkALQFBPh9HpbAaw2lVRsAOJ2iU23AIJeVc9zMxiwWAHa/N4Gf7xvE1ed049IzF+7vTzUmsrxAlcF+wET8ElINsq6glsxE1egRCSSBQBJFpFW9bJEqWJekmxiIZrASwHBcKbrmqW8shfWdIQBMDk7IVBtV683G0hRnhEXEMhr+5vpzpjWUNp1U22qH6hZDPAdn7piNWSwATKaZgu+JN07grRPRGrWq9lRThHmBKoP7ATMYU0rut1Tl5zO5Zt2g0A0KmQIhr4Ropvr1ZQRM8j2cyEIzTaxs9ue8ni81Vw0zV2VofVCqQTGeUrC2LTRtS6Jqi07+kN3fXH9OyfepNFc1H64S3Mli8WL/HaQbQMnHC1QF7AfYBX/zK0ymtaJzUZUm/TlT2LdJ05k7hCQQ6NOY4KMAFM2EKADDCQUAccbZM5qBdW0BpDXTCZi040CA3M9oIqXhm5+YmSquUlGrdsjOLgKjCQVjCcVSC05dy8qWwLwM//Ehx8WN1xIiNYLUfHFLPOaQM7oiJbsMXEAxfSgA3aQ5ibzV4vUIWNHst0xmM4hnVEeK/dVrznKk5gEv+/4lEsAjTK2rkkUg7BXr9rCtRl7uXiPVHfFCNykGJnOv5Y6tPfPiKsGdLBY3hBA2/NwA0xJ1K1B33303tmzZgt///d93tkWjUdx666248sorceuttyIWizmvPfroo7jiiitw1VVX4eWXX3a279+/Hx//+MdxxRVX4Bvf+AboPHVVtvS0FsyJELCYc870EFzzQmzNUXXH2ceEvRIifhkrW/yQBIKhuJKTG2Vndr15zxXY0BWCx1pQFZBFrGkNIOIVkFZNnHnPczjznudw9UO/qbh4djr0Txa3XHIr/dxFIOKXsaLZD0ksvJZqzlVr5uM9ObXFnh9d7NTt8frJT34Sjz/+eM62xx57DFu2bMGvfvUrbNmyBY899hgA4MiRI3j22Wfx7LPP4vHHH8df//Vfw7BUc/fddx/uv/9+/OpXv8Lx48exc+fOejW5JI9sP4TvbD9csJ31Aua8OYuegk7TNL5zCACiGQ3xjIawz4PTO0PoDHvxxO0XFwyf3fLY6xiIpqFoLDSRUop4VsVY2kRaM6DoJhTdxKGRJL60ba9TpOxjL3nwJdzy2OvTLl7VOEH0T6ahGyb6RpM4OBTHWFJBV9hbcC3z4SrBnSwWP7xAVeDCCy9EU1NTzrYXX3wRN9xwAwDghhtuwPbt253t1157LWRZxqpVq7BmzRrs27cPIyMjSCaTOP/880EIwQ033IAXX3yxXk0uyo6DI/jO9sMFvSdO7ZhOn9gEm0saSzLRSrEHpz18dmwsCUWnINYia0U3MZkuFGWYFIimNTy6s2/G9kRuqnGCCMkiTkaz0A0KkRAnEysoi9M+V63hThaLH7/Mh/imzfj4ODo72TfDzs5OTExMAACGh4fR3d3t7NfV1YXh4eGC7d3d3RgeHp7LJuPRnX28ONURYv3n9ucrNuLnEQhka82EbjLD1lIPTnv4LJHVIYDAK4mQJQG+vGErN2wOKF2T+ZdqYusJcZn92f+5t0/jXLVmPt6TU1t8HhFZbfE/uRaEiq/YvBIhpOT2alAUBb29vbNqV29vL/pGYpV35MwYez6qp8WDoxNayd4UK2AUHgGw/+6CooEbNzWhi46jt3fc2bdvJIawTKDoBgQApsl+Z5QK47EtXuocm81qznZCKfpGpvf71AXg3g81AbBGEfLaOJHMoCMgIJo1oRkUHoGgNSBgIpkpeJ9K56pENpud9t/CbN9zvpnJNS8kxsZGZ3cCPYuMZmBkdITFxSxIznA+o7POOqvoHnNaoNra2jAyMoLOzk6MjIygtZW5QHd3d2NoaMjZb3h4GJ2dnQXbh4aGnB5YJbxeb8mLzqX0N+OzzjoLPZ0xjCTHl9Q6p+lKv8tBMCXDz8lcsn7wiAJzeBBleCUD2ZJFhDhiCq9E8Oh/v6DkN/qezhhGEll4JRO6QSEIzLnCKwrQywx7fPHq9+HRnX0YSWThz/Pa6+n0Vfn7VB12G9ubct+nM1zb9wHYF61an3Ohs5ivube3F+3tHbM6R2smCgyPItzU5njzLUQqfUZzOsR32WWX4amnngIAPPXUU/joRz/qbH/22Wehqir6+/tx/PhxbNq0CZ2dnQgGg3j77bdBKc05plZsWddSdvsdW3sQ8i7cD7jW2MNtlb5zEQAhr1jVfvYiVHtfu1gJBAj7JNx2yTpoBkVL0APRpfATCdun2c+cxHWTQiAEn730tIpuD5pBEfZJMEGhm0wkEfFLiJT4LD9x3jJcuqFzzuZf+DwPp564F60vZurWg/riF7+I3/72t5icnMTWrVvxuc99Drfffju+8IUvYNu2bVi2bBkefvhhAMD69etxzTXX4GMf+xhEUcS9994LUWQ3+L777sPdd9+NbDaLrVu3YuvWrTVt5xN3fBBrv/ps0e32QkqvtaZAXwLdKArmtFDNfkml8i+/CSCW1SFLQsEQm0GB0zuCeG7/EAajGeiu5FxJANZ3hrGhO4QXD44iq5sIyiI2LgvjB7/pw99tPwxCgBVNPnzjhvflFCy324NuxKFamVBr20K4Y2sPtr91CM+8m0JKNRCURdx2yTrcefkZBccOTKYR8krwCBT3PL0fq3bmOiqUclvYcXAEDzzXi2PjTJbd0x7EV67eUHBcWtVZmi+lIITkzHXx+R7ObHA7miM4z42ZBYTO18KiOlNtF/+ce59DUi0cVvKKQFdTAB6RQDdM9E9kuFiijkjClGRfIEBnmC1eJQAifg/8HhEno+miKryIV8Qjt2yu+qFe7e+G21HB7bt3/3UbAaDoazduXoEfvf4eomnNEX6YFGgJePCtG88tOG48pWAkoaIjJDvu6vZ71KpILebhrpmymK/5nXfewdlnnz2rcxw4FcO1j7yCH/z3zbj6nGU1aln1VGMEy81iq6BYcQIAxYCj5uobTYIuVcO9OcKOfLcCa5HI6jCsscDuJua5F3P59tnzUZQCSdWoi7FqORNXAEVfe/yVY1ANEyIhEKwKRShFIlv8uHhGh0DY9XaEfdwoljNrs1gAGLeWYTz99in0DiZq0axpUZURbBVJsEu+QJXDHsdVDZN77dUZametU3uY0bS2T934UroNk6IuLgflTFwpUPS1lGpAIIDoUk4Rwr4tFjtONUwIZOp63e/B4cwU+29FFCrNEi9suFFPGewJRlkUqrbj4cwMt7KPgN1zUSCQhKlf0VJ/awJBXVwOyjkqlHotKIsQBZLzhYZSQBKEosfJogCTwlnj5X4PDmem2B6XC1diXh1LvkCF5OK3wCvCUVm1h2QQ3oOqK25/PmKp+0JeCWGf5CjdmvxTHX5Kp9zJQ7JYF/VbOaVdqdduu2QdQl4JBqUwTNP6jykKix0X8UswKbterubj1ArD+uNY7D2oJT/Et//+a4qq+N7922sdtdXhkQQ8IoFShbqNU4hImGIvHwLg4nUtiGZY0CAh1BnrG00ooGBDFRNpDR6BQpYkePPUgGGvgOXN/qIqOwA5n6Gqm/CIBCvCIr5I2irO8VTKfir12qaVzXjguV4cGU3CoIBECNpD3qLnXNsWwi0XtuK1vomC8zyy/RAef+VYUbVho8Hzp2qLafWgxEXeg1ryBapYcbK3H3/gWgDAl7bthcaL07TpCHmQ0cyicvQmn4T2sBcnY4qjWLNVc8mshon0lJODaVJkTUAS2Homj8j+6EJeEfGsgWhGQ3vIW5BbZJ9PMwzE0hpAgIwGEGpUnW9ULvup1Gv2tnyVn/s984+7M+8cj2w/hIdfOgKBMIVjRjPw8EtH2L4NVqR4/lTtsXtQwiIfI1vkza8/j+7sQ1LRuYBvBoyntJJrpWJZvcDnzlbNRTOa40ABTA39JVUTgjUvJYAg5lLAFfPNs88Xz+g5x6VUuuAzlR5/5ZhVnAQIRLD+ZdsbDZ4/VXsapQfFC1QF+ifTMFwLSDnVU41bkluxZucQlTvO8Vi1HMrLKeDs86mGmXOcZtIFn6lkqwHdCIRtbzR4/lTtcUQSi3wOiheoCqxqCUAUSEVLH04h1fxtuBVrtsKt3HG2MIJaxamcAs4+nywKOcd5BLLgM5WCcmGhNikK4jgaAZ4/VXsaRSTBC1QFmBefxAvUDGgLekr6GDZZ6jy3Ys1WuDX7Pc6CXWDKwy8kCzBNy1sPTNVXTgFnny/il3KOC8pkwWcq3XbJOpgUrM3UtP5l2xsN7ktYe0xrUIEP8S1ybCFEqe2XbujEt288F2d0hWAlh0Mghb0DO/49/9dhcf96zI5oWseqlgC2rGvJ+SYnECCrm5BFIcfSx84hOrM7gohPcnquYZ+ET5y3DO9b2YKmALM9avJJ2NDdhM9fdjrWtYeK5hbZ51vbFnKO80kCMjqQUqYCCuvBbDOV7rz8DHz+stPh94jQTTbk9fnLTm84gQTA86fqwZRIYnE/gZa8F98j2w/hoe2Hc+aYCIC7Ll9f9GFw15N78NTewQJnifaQjG9bXmv3/GwfTsaVqR4AwaJ1opAEgpaAhPGUVjDk5PcI+PMPn4Y7Lz8Dj2w/hO/++khRtSMBG1YzLJsIk7J7IgoEEa+EWFaHYbJYDFkkCMgizuiKlJSMz1SKbKvFqKGiKRioi+/dQqSav4VGk3kvZi++3t5ePD8wu6Hcvf1R7Dg0its/1DMvcRvVWB1Vw5IvUOu/9ktoRWblPQLB4f/1sZxtj2w/hL/bfrjkuQKyCNM0kV0KtucWBMAN5y3DL/cPVwwEdB9T7g7ZZrGyJBZI0IsZt1b7IL3lsdcxkshCMDX4fMzfz85geuL2i6s6x2Kk0t9CLe7tQmMxF6hamMU+/nIfvvFsL35335UI+zyVDyhDNaautTimGEt+HVSx4lRqeyWJb9qlsFrMvabp8sy+IUzLSbdChbLNYrubJMc0tZxxa7UPUdtbT1Gm1lhxtVh5U9zFWqAWM7Uwi911fAIA8IMdR2ddKGbSG6pFcQL4HNS0SKnGkp5TKgYFk7R6a/QLaZ9TNcyiknE30y0uXC1WHC7zbjxMLjNfegRlsSrp9FKCgM0lNQU8VRfvSj1L2yy2mGTczXSLi60Wy1ohgVwtxuCFu/Gw53m5Wewi5xPnFQ/zKrb9tkvWAaT0mqiALMInsVeXyvAeAFy3qRseUURLoPhYtzjNvxHbLLaYZHw2UmRbLdbil7hazAWXeTceBqWLXmIO8DkoPHTzZvx877M5ce4SAa4/byVueex1R9W0pYcZegqgKLWWP92Aq/zLIQBY3uTFf/YOI6kUCiQ8AoFp0qJGsYDlYJ4nn6SWym80qeK6Td25knGUNm4thq1MOzQch2bFvq/vDOPGjU344yveP61rnQuVWzFj22Jqxlozk3vLWdjYqtjFzpIvUBfc/wLyRXc6Bf70h7uwrj2IZr8Hx8eT+O3xCfgkAo3nvgNgw3AmgNGkghJ2eyUFKM45rGC/9rCMtGogntHhEYnjEPHMviGsaz/kyP3LGbfmYyvTVN1APMuSeDOqgePjSfz9iIHVq0amfa56mpmWMrY9NpacE+PU6dxbzsLHNBujB7Xkh/jG03rR7SaFY15px3KnSsTDL0Xs0lOqOFV1DsomceMZHXErzr1W5qi2Mi2R1SHAMoq13ssjYlpGpHNhZlrK2DaR1blxKmfaGJQuepsjgBeoqrBjuTm1hVoTuaphMmujvNdnY45ayihWNUx4RTIthdpcqNzKtZcr6jjTxTRpQzyzeIGqAjuWm1Nb7LVisiiweI2812djjlrKKFYWBSgGnZZCbS5UbuXayxV1nOli0MaYg1ryBaotUHwaTiAoiOUOloiHX4rYv/olvGCrOwdh3/QifgkRK869VuaotjIt7JNgwjKKtd5LMzAthdpcqNxKGdvmqxk5nGowGmQOasmLJHbfe1XRVN1//JMLC2K5f/pmP1Jqdh5aufAQBIKL1jRjMq3h0HASxWbnKlkaGSZggGIwpmBDVxAeUcBYUnWOveG8Zdi0shm3PPZ6gRJvS08rnts/hL6xFABgXVsAX72GWdvYaruQLCIoi9ANE6p17Nq2EK5ZJ5UUBJRS681W5VZJBeh+D81gKj5ZJFjXHnKKk1tVutBUdo3m5bfYMenij9oAuBcfrn5oBw4Opwq2b+gK4vm7LnV+dkdwl5NOLwU6Qh5E/DLiGQ0UQJPfk+PhdsHqJjy9d7DosGh3xIu0oiFeRJYOALK1aMqkzIzW5xEhCgTjKVa4QIGQT0QsozuLhPP3j+S1J3+tU6nfjXp50s32vLM9vt6+dAvRy28xe/HVwiz2Z2+dhKqb+KMLV826PbUyfp0JS74HVaw4FdvujuDOGEtrvVM+4ykN3U0BnJzMAARY1sSMV20Pt2f2DbGV7IAzFmh/DUpk9bJqSFFgw6jEpEip7EEnCgQCCASBwKQUsYzurJSXi+zfndeeaj3l6uVJN9vzLnSvvIXevsUGpXTWReGNY+MwaXXFpZKxa62MX2fCki9Q1ZJSDUh8CgrAVJS7bpogeePcfo/oxE0Xwx3PXg470l03TRiUOOPp9nYAOeOH7v3z21OtAs42k53p8fU6b73aVSsWevsWG7Uwi31vPA1JrO48lYrYfBUngIskqqZYBPdSxR7algShYJw7oxllx77lKn/Z7Uh3SRAKlG3O6Unx/fPbU60Crl5qvdmed6F75S309i1FGkUkseQL1IauYFXb3RHc0/WWazTagh6kVR1hn4SQVypQt123qZvZGIEVDvcsZ9gnIeIt/WtnmCb7j1IEZRFhn1SgxGvySyzVuMT+M1Xb1UutN9vzLnSvvIXevqWI2SALdZf8EN/zd12Knq8+m6NCE6ztbmy7ncdfOYaUasArkrIBfc6XfPeQ1BzilQQYJoVexZvba5BEa46nkgBkNKkhpZr4H1t7sGllMx58/iDeHUpApxQiYb3N689dhhcOjCCtGSAEWNHkw03vX4Xn9g9hMq0VnHNDVxCECDgyknTOs6LZj4+9bxle65uAbsQdJV4xFd/p7bkqvnJqu10DKdz/cqEirl6edNM9bzFF3P3Xbazq+GLHds2q9bW/Pk79MUy66J3MAa7iwyXf3I6BmFKwfWWTF6/cfXnBdvcDAJTiZDSbI6UWALSGZPzxxWuwbc9JjCez82aRJAtAubeWBUASAJ0SaAZ1rqM14EHYJ+FklEnqWwISxpMaTLD9BUKgGxSiS7VlGNQpxhSARyT43EdOdwr7joMjeOC5XhweTUIkxImGp2Cx8gBFQJag6CZaAh60h7xl1WA7Do7gwecPlpSZlzJc3XFwBF/d9haCfu+CUZy5mY0irtSxt50fnrY57mJnqav4/vnV41jW5MNVG7sr7jufKr1KLPkeVLHiVGq7+wEgEuC9ycI1USaAWFrF468cQ0fYO6/+fZXeWjXtfXK/o0ykNaRVay6JMtUetRY12eo8E4BpUOiGPnW06zSaQfH9HUexaWUzAODeZw5gJJGFSAjUvC6a3cuLW75z4ykVXonJxYupwXYcHMGXt+3FZFpz5qOOjKbwuSf2wOcRIYmkpOEqU5xhwSrOZqOIK3XstgMx/PEVdW86ZwHRKD2oJV+gpoP7AdA3miy5n24y1d9qz+y+Bc0Vthzc3ZdWdBNeD5srco8SUsoW1zo/I3dBrv03Qa35Otvk1CMS18Rt6U67KBBQExhLKs56pnw12KM7+5DI6kx+bqv78mXp1mumSXPi4/sn0/DlTSIuJMXZbBRxpY4djhf/EsZpXAyzMeaglrxIYjq4TUPLyaUp2DxMvrJpsWELHASCHANTu5ARWIq6/L8Dq5flFQUMTKad++ZW45V7T9skFSiuBuufTFsS96ltbpl5OcPVVS0BKHk9uIWkOJuNIq7UsV0h/j10qWE2SGAhL1DTwP0AsA1Oi+ERCW67ZB00gy5a/z7Z6vEYlKIt6AGxnunuL2WiQNAR8ub+IVhzUHYM/MqWgHPf2kNemKBl7xulzOhSFoWSarBVLQFIQm6xKydLdxuuMsUZFqzibDaKuFLH3rixaQ5azllIsMDC+W7F7GmAS5gdW9a1VL3d/QBoD8lFH7QigSMOuP+6jdi0sgWeebrLnzhvGdqDxWPYQ7KAL16+HiGZOHJwuzPkEQnCfg/Wd4ZwekcQPo+EM7vDWNnkhSgIEAW2T0dYRkfYi46w7BQuCsBrveYRRdyxtce5b5JIsLzJ5yx4dne+RAIsb/KhLeSBQAj8HqFkJPsdW3sQ9kmsgBaRmZczXL10Qyf+5wfa0Bn2LcjYdzuWfibtK3XshSuLL6XgNC6NIjNf8io+ADjz68/mBO95ReDdv73W+dkdHZ5RTWiGCUEg6Ah6kNVNjKe1kkNX7GHtxVhSQTYvulcgVuw52FwJUN5cFWB+c5kqYn1XNnnxjU9swr6BKP7hN0eR0UwQALIkwCMCJiXQdLNs6i0BsKLJiwvXteLFg6NIqQaCsoiPbujAzkNjGHfJxQOyiLagzK5TY0NsBGwVekdIRjStIulSbXgEwCOJ0HTTUf0FvRLWd4ad3oJbLr2lpxWv9U04JrBJRcdwQoFuUEgCwWkdQXz1mrPw9NsDeGbfkONm4ZMIzl/dmnPOvpEYejqbqpZCL3Yj1MWsaJspi/maZ6vio5TikZeO4APrWnFxT1vF/bmKbwFz9UM7ClJhFYNtf/6uS4tGhwNAa9DD5jIIQZNPQjRTPJlXMSgGosUd0E1LFRfwECgAOsMyZFFA/2Sm5NqpaoqTKLDY+s89sQcpS43nEQDNZOIHVa9cCAG2z0BMwcDbgxAJIIkEKUXHz94eLNg3rRrIqBmnJ+W03zCLXr9mAppqQBIIVjT7IIlCzlCWO2L92FgSvz0+4dyfI6NMWu4+7qvXnIV9A1E8s2+IDfVJBCZl77OlpzXnnGGZVB3bPhdx7xxOLTGsb8uN0INa8gWqklmsrdwbT+o5hqXxjM6+pRNALbNgtxrSmunEfQOzX9hrmsyUNaMZMCngFQQouuGo7fKVd9VAAQhEAEVp4QfF1Doo+0+j0qJfkRCMJVX0dIQcOTWAHLl0IqtDIHDuj2h1z/KPO3AqlmN3JBAmmnj8lWPYuLzJOWc2q8FfpXybG6Fy5prZmsUmFR3f//VRfOTMTnzG+sJXzvB1Ps1gK7HkC1QlbOmuapg5hqWqYYJSCkJITZwiBFK9kWolKNi58uXhOUyzQrlFB5Xeezrndyv2bKUdBXLk0qph5twfu0DlH1fM0NeOjZ+pfJsboXLmmtmaxdpCrleOjCGpsC915QreQi1OABdJVKRcFLdtllqLnrRpnbNaM9VyELBzudtVoDidZlF1y7Yrvfd0zm/fS2BKTp0vl5ZFIef+2PL3/OOKGfrasfEzlW9zI1TOYsOez+Yy8wagkllsuehw2yw14ptdRzTgYQ/giF9Ce0iedcETBGbKGpRFZ5hLJK7FtJh2fWLuEdQsKRG39xEIcoYSKxnrGpSiPSTnyKnz5dJhn5RzfwxKYZiFx7kNffNj42cq3+ZGqJzFhi0QagSZ+ZIf4nv+rkuLqvhss1i3EaZtWAoAsYyOrGo4D+LZoBgUskgQTWvQDerIr2d6Xo/AhshaAjL6xlIFprbTPW970IOEYkDRmTqvLSBBNUwk8lJxBWI5Qbh8/Qxq+f25diWE3WNBYCq+U9EsaxUhuONfdqOnPYgbN6/Aa30TGJhMY117CJ+6qBW//N0gjo2nYVIKkwLvTWQAMGXjozv7cMfWHnz+stMdQ9+gLOK2S9Y5foD3A3jguV4cndBBqQZZEvGlbXsd5WCxOSVuhFrIYlc1NjpcJNFA3PLoq0VVfLc8+iqeuOODAOA4XQNTPnDJpIpauexRSqEaFNScGkKTrIWyM5nfUnTgVDQDSRTKOq5XQrSMYQ3KXNG7I160h5hkfjKjO70jWwhhWioJYkVhiAKTz1OKHLVeLKOBAIj4PdANEwOTGRgUEAkFEYDDI0mMvf4evnXjuTn3fduekwjKIibSudeU0Uy8OxRn6rrrNmLffVeVvKa0ZqLJSxBTAM0wEUubOD6eLKvMc3/+Sx2ualz48CG+BuK1Y5PT2m77wNEafvYmZco7WwXHXMOFGRUnu+eVVA1EM4WxFtOBUkAAQSzDVHSJrA5CCBJZ3ZHIuxV7FJaJrDVHJAmC87Ot1gvIEpKKjkRWR0CWMOYq9MyBgs3rJbJTij5gSk0XtYpb/jVHMxo8Isk5Jh/7HCmVQgCBJAgQBKaerHQsh+FWNRLC/uX3bmFh96CEBuhBLfkCNV1sH7haL2+mrv9mPWaIqTVWs2oTnfK4c6vo7H9tB4rcg5A77GkXMdfxhuXy4JwrTyFIrHkzt1LO9vMrdU0mrayus8+hWb08+73cXn2c8rj9KG34vVtYWH9avAe1FLF94Gr92RPXf2WVCFViu1TMqk1kyuPOVtEBU/8SFFH1kVwLI/tnt+pOFIizVkkWBWdntxO6JAg5SjlbTVfqmgRSWV1nn8MjkJJefZzycFXjwmdKJMEL1KJnOl58wJQPHKlhD0ogTHFjq+AEsB7ETH6/7CG3kCwWrN+ZLoQAJljEukmZMtBW1dkF0C3mIGBtt93PddN0fnar9UJeyYlmbw/Jzi8hgR3hzt7DrZSz1XTNfk9BB9NeN1VJXWefIyiTAkUmV+ZVB1c1LnwckQTvQS1+nrjjg2gL5GpF2gKSI5DI59INnfjWjefizO4wJGF2nR2BsGh2CsAwp+ZvBCtxdqZDdPYc1ESRaPVqIGDeekFZQpNPQnfEj2URLybTGg6PJCFZxq7MVYNJyf0eAW0hGWd0hbG+M4TWAMtyagmybad3BGFSoDPsw7dvPBffuvFcdIZ9MClwRhczomULjJkgI6UY2DcQddpkG6Ge2R1BxCqQNqJA0BWpbKpqn2N5REaTT4LfI6Ip4MHattCCMoxdyMzGzJYzNzgiiQboQS15Fd9dT+7BeDrXR288reOuJ/fgoZs3Fz3GVnW5ffrGUyoAOFHm1SCLpGAehwJlDVyrpdgpuiNeGKaJ0WTxwuWxZHltQRmyJOL+6zYCYB52Xo+I9Z0hjCUVDCZUdIZlLG/yYTiuQDNNBDwi0oqBQ+lkgbzbxpYn3/P0/gJ58iPbD+Gh7YedHllGM/DQ9sMA4Jwn/767o81TanXZW5du6EQXXb5ojUQXAlzVuLCZEknMc0NqQANcwux4Zt8QADju23av2N5eDlvRlMjqjiosn/xeNiFT27I6LSsDr3UPPZrWMJ4q3asiIBDArsdWZuWrtmxfvMmUhsGYwgqsCYynNaQ1AwIoMpqBh186gke2T9m12EVlJJHNkSfvODgCAPiH3xzNEVfY//8ffnO0oJ1cScbhlKaRZOZLvgdllOitlNrupphP30JGsaItSqGbJmRRyFG1lfLFU3QTsiSwWHXrNQK2JsorCo5Jq937qWS6aru052Qf0uLu7dwfj9PIzNYs9um3T+KX+4fwZx/qwbp25oizkA1hy7HkC5QokKLFqJrx21UtAYwkspBFgTlALPwa5SjyiuH2uHMrs0YSWaew2AUMKN7Ds4crbZNWm0pFpZRzRrFbat93u00AV5JxGofZmsW+cyoOYGrIHljYhrDlWJytriHXbeoGYD2cMfWAtbeXo5hPXz7564TsImBTrqbVeq2VJABtJRJ2AXuhbW4CbSlfPI/IXCLMvGpnFy3bpNWmkjx5ZYt/qhGusT5nuwuuJONwSmPPQdXCeHq+qdsVDA4O4tOf/jSuueYaXHvttfjhD38IAIhGo7j11ltx5ZVX4tZbb0UsFnOOefTRR3HFFVfgqquuwssvv+xs379/Pz7+8Y/jiiuuwDe+8Q3UMgT4oZs34xPnLXN6TKJA8InzlpUUSLixFU3r2kOOKqw9JGNlkxdeK/eBEJZu+4nzliFgPbDtbV+8fD3aQjKkvN7ahq5gzr4+qfiapi3rWvCJ85ZVNHD1CEDYK+L0zjB8HgltAck5xi0ND3hENPkkrGufUrXlq7bWtYfw+ctOx2kdIRgUIAIQ8bJrtc1h3SatNpWKyt9cfw6a/JJzHgBo8kv4m+vPKXnfuZKMwynE/tLoaYACVbchPlEU8dWvfhUbN25EMpnEH/zBH+D3fu/38B//8R/YsmULbr/9djz22GN47LHH8OUvfxlHjhzBs88+i2effRbDw8O49dZb8cILL0AURdx33324//77cd555+Ezn/kMdu7ciQ9/+MM1a+u69hCCVox4UBaxrj3kvFbKGHPHwRE8+PxB9I2xYMN1bQGctSyMX/5uCGOG/Q2G4C8+cnqOms0+3+GRBB5/5Rg0w8wZYhQFgmRWR8DDhtkoBbLFw3pz7JgIAJ9HQFbLnWdiqkDAUA30jaXQ0x7E31x/DvYNRPGDnX1IW4a3oEBaM5DWDIwfG8fu9yZgUPbLHvZJlirvYue8d15+hnMt+09Gne2ayXpqLX4J399xFN/fcRTr2gL46jVn4f7rNjrXruqmI2zYNxDFa30TkASCsE+CLAllDVyBQn/EUupADmepYfegPPnhaIuQul1BZ2cnNm5kMuVQKISenh4MDw/jxRdfxA033AAAuOGGG7B9+3YAwIsvvohrr70Wsixj1apVWLNmDfbt24eRkREkk0mcf/75IITghhtuwIsvvlizdj6y/RAefukIMpoByXIjsBVopZRnj2w/hC9v24vDI0lQSkEpxaGRJH729iCLgbdQDYq/237YUbPZ5zs+nkQsrSGl6sjkFRTDpBiIKRhLadMa4mPS7NIiCJMyc9TDI0nc+cQe/J//OgZVLx6fQSlru2EyV/Kkoheo8gBWJLb0tDqJwF6JWD0oivGU5tybI6MpfGnbXgCsJxWQJXSEvVjW5MexsSQefukIjo8nsazJj46wFwFZqrrIVFIHcjhLDcPpQS2CSfEKzEmJHRgYQG9vL84991yMj4+js5M9eDo7OzExMQEAGB4eRnf31LxPV1cXhoeHC7Z3d3djeHi4Zm17/JVjTkw4IZaBKGHbS8mZH3/lGBJZHaJALHPT8sauj79yDMCUki2e0SG47HbmCpNaPTTVQDzD2l9tE+x7ko/7/rFIeMaU8asAkRAkFb2sbD2e0WckGeeScw4nF2eIrwEWQtVdxZdKpXDnnXfia1/7GkKhUMn9is0rEUJKbq+Eoijo7e2tuF9S0SERwLQEDqZpglCKpKKjbySGsEyQzU6tHbJfI2AREmYVVSap6Ojt7XXOp+gGxBpFxU8b6nKoqLJCmhSQrOvOv6cF9891SnsbpRSGAfSNsPlG9z1VdAOC9W82y/KdCKXoG6nu8yv1GZU7PpvNVnXuRmGpXS+w+K95bGx0xscmUhlIAsG77x6sYYvqS6mF83UtUJqm4c4778THP/5xXHnllQCAtrY2jIyMoLOzEyMjI2htbQXAekZDQ1OLY4eHh9HZ2VmwfWhoyOmBlcPr9VblFhDynkBGM1gvyDQhCGwNT0gW0dPZhJFEFn6XnJl5yVGo1poiwS6WRmkng5BXwllnnYWezhhGEll4JRO6SSGQmdsZzRhCIBCW0cQkd5UbIBCAEoKQLBbcU/f9AwDBNJxrEqxtpkkhCUBPZxMA5NxTr2RANUx4RQE+H1PspVUdPZ2+qj4/+57mf0blju/t7V1SThJL7XqBxX3Nvb29aG/vmPHxvskxeER90V6/m7r1ASml+PrXv46enh7ceuutzvbLLrsMTz31FADgqaeewkc/+lFn+7PPPgtVVdHf34/jx49j06ZN6OzsRDAYxNtvvw1Kac4xtcAdE04prSom/LZL1iHsk2CY1DI3LW/saqvZ7PNF/BJMc+7XTQmEjU+HZBERP2t/tU3IV+XZ5Mesu9WB9r0xKEXIK1WMc5+JZJxLzjmcXAxKG2L+CahjD2r37t14+umnccYZZ+D6668HAHzxi1/E7bffji984QvYtm0bli1bhocffhgAsH79elxzzTX42Mc+BlEUce+990IUmdT6vvvuw913341sNoutW7di69atNWvnnZefgUdePIwpwwIKiUyp1AIeAcfG2WLSnvYg/uraDc7k/Q9+04e0ZoAQYEWTDxeubcEvfzfkCCUImAP4a30T2GRN2puGgSHLImiuYRlRFEnVwBmdQZyYyCJtFu/5CcCUQwQhuG5Tt6NG3HFwBA8814sjo0kmNQdzkNCsOS6/REAIgaqzntXp7UzFZ983O0J9/8ko0hpTMQ7GFAzGFEQsxaCtlHQrKLf0tOK1vokCReX9AB58/iAOjyQBMEUlh7NUMUwKuQEUfABAaC0XFS0gqu3in3Pvc0iqhQtsvSLQ1RTIMSTVDJpjoFrstVJmprGMBtUyNc33kxUJi8eI5WfPA2gNeBDyeXLW+ew4OII7n9iDeJH9bfwSk6eX+3ADHgFNXmAkZcKgTB4uEALdqjpdES/agt6Ca//Str2YyIu8t30MO8MsFj7/nuRjqycBCsN1oma/hIhfxo2bV2DbnpPOPRxPKRhJqOgIyQXnr/R55LOYh39mwlK7XmBxX3Nvby+eHxAr71iC7b3DmEipeO3u2o00zReNUWZnQbHiBACKgZLqsErKsWKvJxUdSZXNz+QH/ZlAQXGyzWuLRZk/urMPyQru3ZkKxQkA0pqJaJY6bWIqP8GJni+mrHt0Zx+Sij6VAeXKhDLpVCx8JTWdrf6jefcjbhnVPv7KsZx7GM+LnZ/O58HhLCUMkzbEIl2Ae/GVpVS0db6Bqvs1oLjvnGFOCSIK5p7KVJJiUeb9k+maiSs0a62TnXrrbo7q6tq4r91eH+Xg0loUO6YYKdWAJAC6/eYW9vWmVAOrXfffNqkt1SZuHstpFGZrFnt0NInewbjz82I1igV4gSpLRjNKGpKWMystZmZqm9JS22fOXaTKiOmKRZmvagngVDRTkyLlcZnl2oXTbo7by8vdhrGkAt1wFSlXO0odk09QZkNxdqy8fT/s67VfzzepLXV+bh7LaRRmaxbbOxhHNKM555hNsZtvFmdZrSEhufgt8IooqQ6rpBwr9nrIKyEki2xYC7lLkAQATd7c3pptXlssyvyOrT0IyeXHqP1S5bTfgEdAs484bWIqP9OJni+mrLtjaw9C3ikvP7ud9jF2LHwlNZ2t/iN59yNiGdXedsm6nHsYyYudn87nweHMFEopdKN0ZttCRNHZso1GYMn3oPbffw3WfvXZgu3v/u21jopsYDKNkFeCR6CO39sFq5vw4sFRtmiXEHgE4M4n33J85G7cvAKv9U04x7YHZQxE0wUdJYkwBVxMMXKUczYTaQ3RtIbPPbEHhBCY1ISqUagVuk+ZEv59NiubvFjVFkLfSAzLIh4MJRSw7EQKr0jwsfd1YyiuYmAyjZV5/nbfvvFcPPBcLw4OJ53zUQBndgYBEEdN12Nl0di4fQhV3YQkULgNzgUAy5r8+MrVTCm5aWWzc//XtoVw8ToZLx4cRe9QwkntzVcGFmsvhzNdKKVIqjoSaR0hn4iIX57vJlVNWjXQGlg87S1HVQVq9+7d+N73vodTp05B19m3VEJITT3x5ourH9pRcvvzd11aoMpr9ntwbCyJ3x5X0eSTIBICg1JkdUAzdGRUguPjSZyMZnIUZqpuQNEps0eyegLRjDYVXUEpSoXrmgASilFuJLAs7uM8AgBCMJhQcdOFrbhmnYRH3pgEQGB3ygwKvHJkHN+68dyiD/lLN3Ti6bcHcgoUABwcTiEgi1jZ4nfUdPc+cwD3W6/f+8wBaIaBWFoD7Fwqyhw5VjT7IIlCToZUviHsvc8cQEfYi9XWubftOYlNK5ud/XhB4swWuzDF05qTdh3CzBV180Fa1bGiuTCmZjFSVYH6+te/jrvvvhvnnHOO4w7QKBwcTlXcnp8Ga/vHMYWdAMPSjVMAgsAUZ91NkqMi84gE40kWCy9Y9kh2cSKEKed0vbwqzz7/THAUdyhMvF3bzBSGImFtA5hVUCI7lXZbjGf2MXeP/ATctDo1b+ROzQVc90EgEAhBVjMAwqKpx5IqejpCOSm7biol8nI4s4FaVl6xtJYjxFlsmCZFVjOduJ7FTlUFKhwO1zTeYrGRr8qzFWWaPYdiq9+sn4tFprtj4Ykr1Zbm/VtXXG21E2+Hk0yV546sJ4Qpf8qp4IqlEBej6H2wCqEd82HfM/f++fCYd049oJQimdXZOsVFXJhs7FDQJVWgPvCBD+DBBx/ElVdeCVmeGtu04zQanXxVnq0oc9bx5P1bLDLdHQtP6VT0uqOcI3NQpFzvZyfedoUkxBQT1Jx6jVLmTl5OBSe61H/lKHofLJsnAjhF01bnlVLf8Zh3Ti0xTYqUoiOa0aA1QGGySat2gWoMeUFVV7F3L8vy2b9/v7ONEIIf/ehH9WnVHLKhK1h0mG9D19QE/x1be3DvMweQVnX4PSLCPgmjSRXNfg8SrjRBAvaLHwnmKu/ufeYAwj4J4ymVWeFT1puIZjSAwvHyq/S8n+0cFAUTZbj9BptpHI+8MYloWgO1GmBSoCXgKauCu25TN3729mBBUQ3IonOfbEcH932I+CWMJVSYhEIQAGoy77DukLes+i7/M8g/N4dTDaZJkVQ0xDIatHxLlwYgrbLn0ZLqQf34xz+udzvmjefvuhRXP7Qjp0ht6Ari+bsudX62/d5sldi69hA+dRHzhbMVaZSaIESALAlY2xbKUZHZx+pGHKpBHaXflp5WPLd/CH1jKYiEoDsiA5QFFrqRBDacxeJHTCgadRbYAswqSRIFdIRY73YonoVBmW2RVxQQkAX4JAETGR2KbiLoEa2E3DPQ29uLb69ajQee63U8B9d3BB0lXSkeunkzgD14Zt8QGyIUmF/f9eetLKmms++DZrB7JosEHWEfKKVIqQY6w76S6rv8z4Ar9TjTodELk81UD6oxClRVXnyJRALf+973sGvXLgDARRddhM9+9rMIh8N1b+BMmYkXVy38u+56svChzR7mDNto9dh4GrrBejJuEYMkACZYDlbIKzmFZMfBEfzV0/sxMJkp2Yva0BVES9CHwyMJpFUDWdUokK3bCITFsmdUHYpJptzVKYuKzi92EiE4vTNUULh2HBzBg88fRN8YK/B2vHupwpFvAGv3gB7d2YdDw3ForgJerwI03c+5WJuLtava/eaaxexLN1PsazZMimSWFSZ9hivb20PynMrMZ+PFt/u9SbxyZAz/48M98ErsHA2/UPdrX/sagsEgHn74YTz88MMIhUK4++676922RcddT+7Bz94edOZmDJPiZ28P4q4n9wBgD7AvbduLI6Mp6AYzaHX/yVAAmjlli5SyotbvenIPPv+Tt9BfpjgBTHm46/g4JlMq0mWKE8CG8cbTOtL6lHWRSZmkXdFNDESzGIhmoZtsjkgzKQ4NJ/DlbXudOPUdB0fw5W17cXgkWRDvXixyvVg8+5e37cWXtu3FsbEk4lmdGeumNRwfTy6I6PZqI+V59PwCgwiIplWcnExjPKXOuDgtNtIqS8qWG2ShblVXceLECdx5551YtWoVVq1ahb/4i79Af39/vdu26HBLr+3/3Ntto1W2dqr8uex5I4Gw4+OVVt5a6GbluazpYgsabDNYtyluIsv+IIrFu+dTzNQ1kdWRVHQm3Qdh0fGWVH8hGL5Wa0TLDWsXBoZJMZlSMJrSMbGECpNNRjUQkMWqUscXA1XNQfl8Prz55pt4//vfD4At3PX5fHVt2GKklKrN3t4/mS6QdJfDVvtNd8y8Ln+SltpON80cU1zdzDWiJFYoYrVScd00QQiBAZojw3dL9eeTauXtXAY/f1BKkVENpFUDKVWHYVIoWnVf6BYi0zWLdZvBvtUfhSwJOcc3vFnsfffdh6985StIJtlQTlNTEx544IF6t23RUUp6ba/7WdUSwFhSAa1S1WqvlxIFNkdUbeGZqdqvLNSeIxNyTHHHEoojsQdYERMFUrVUXBIEZ7GuW4afL9WfL6qVt3MZ/NyTtQpSStELHfYXMdM1i3UXo7GEgmVNuZ2HxVqcgCqH+M466yw888wzeOaZZ/Dzn/8cTz31FDZs2FDvti06rtvUDcAyUKVT65rs7bbRqkEpKiUy2wasJmXHR/zVrWtgoYMzvIBSbaFTw41hn5Rjihv2sej4YvHu+RQzdQ37JIS8Eot+B2USeJOZwy4EGXm1RrTcsLb+UEqRVQ2MJxX0T6QwGMs44odGKU6zZTyloC3UGD58QIUe1NNPP43rr78e//RP/1T09VtvvbUujZprcpV3xwqUd/mUUmtdf95KPLd/EK6lUfB7BFx/3ko8sv0Qvr/jqOPvVQ0UgEegeOHACLMFqgLdZO9pUlT9XvaCY/cfuSQQNPkkxLIadNN2KyfweUQ88FyvY5r76YvXOFJ5AAXx7m7cUnFbnu8RCTotqblumFANJrZIKQZkiTpzOPnnmyvFXDF5+5aeVjy6s8+5B/Z73zgQxeOvHENKNQrMbDkzwzApMpqOrGoirTZWT6nWmCbFeFJFe8g7302pGWULVCaTAQCkUsX96hoBW3lnYyvvgD1Fi1S+cayt1rpxIIr//XJfTnECgIxm4jM/2sXUcCXaIBAWM2EbpZquYUJVByjYdtFyPgcAUQBKLYDPaCYiXhErW4KIZ1SMJjUAzCjWBDuu2S9hZUsAsVQaGUOAqhlIa6bT+zIp8xW887L1TvS6bpg4Gc0CAFY0+zCSyGLbnpMlo9WLYe937zMH0OTPjWj/9h+e57xmx7fb9/d+17GlPgP3PrWkmGltsc9/256TJc1sOdWj6iYUjc0pZTS95qKfRsXuTS6ZAnXzzTcDALZs2YILLrgg57Xdu3fXr1VzSI7pqTWuRinb/tDNhfuXMi21vzkXQ6vQkTGpFXVuKdiyhuFMJNlDfQBylH9mhXMmVQNrZAnHrJ6NbRRrE7ei032SgNG0znoz1vsDU4axj79yDB1hLwKyhL7RJJtPo6ho7lqOcsavACqaws6ncWy5z9++T3PdpkYgqxnIagZSigHVMObGm7LBGE+xBf6NNMRX1RzUN77xjaq2LUYqKe/y6Z9MF42CT6nGrL7puX35bBPVnNPlzStVeiu7Le42uefF3NvtdVducSGxLJFSquFcr2qYjny+krlrOUrdw4HJdNnXqjm+3pT7/OerTYsR06RIKzrG7PmkaAYTKRWKzovTTBlNqACAjqXSg3rrrbfw1ltvYWJiImceKplMwjCqmxNZ6FRS3uVTSq0VlEUklZkPR7iNZ20TVeIuUnnnraTUs5vv9vhzK+3cl+eOo883jJUlwYlet41eUYW5azkqKd4qqeHmUzFX7vN3R9TPZZsWC7phIqMZyKgGMpoxLWUqpzJjSdaDag83ToEq24PSNA3pdBqGYSCVSjn/hUIhPPLII3PVxrqSo7xDofIun1JqrdsuWYdgCf8rj1A+ft2eg7JVbAJhH4xAco1e3cq/SrFcIcu0tS3I1ubYx9sFKGJFp2d104mjN6hLjWdShH1STvR6e0hmij1K0R6SZ6xUK6d4q0YNN5+KuXKfP1fxFaLqJuIZFYOxDAYm0xhNKEg2mCx8oTBuFai2YOMM8ZXtQV100UW46KKL8IlPfAIrVqyYqzbNKQ/dvBm9g4VmsaUEEo/u7MNkSkFSMZz5oZUtfmxa2YzPfKgH333pcMGck9+ajygmqpMEAp9EEMvoOX+wXklASBYRy2qOGML9eqWEgLhiID6aK25xtyujGhiKZbA8LOEPz1mF5/YP4dBwAqprn4mUikdeOgyBEGfYURQIFN3EexNMQBPwiNg3EJ3WPIutjHvw+YM4OBR3ruW2H72J0zuCuHHzCrzWN1HSFNZ9vB0vv65tbnoq5Uxr3RH1821m61Y5tnopvkja5qwtWc1ARtWRVk0+nzSHjCVViAJBS4PEvQNVLtS955578PDDDyMSiQAAYrEYvvjFL+L//J//U9fGzQWPbD+Ew6NpeEQCQikoITg8msYj2w/hzsunFsDZ6i3NYBO59t+cQIDBWBaf/8lb8IgC2kJejCSUqWE1MEFCKXSTIqkW/gWruolJw0Rn2Iv2kBdjSQVDcaXIGWaGYlD4TIpNXV5s23MSmmFAsJQitpjCsLtuoLCS4qHruW1VdAMPv3QEAHLuVzWMJpUcebtuUhweSeJHr7+Hb5eIm3eTUo2i8fL1fhCXipdfKLHz+UrDyVS67vfGMClSioZ4RodmmLx3NA+MJRW0BmVH6NQIVCWSmJycdIoTADQ1NWF8fLxujZpLHn/lGATC5lsIsbzgCNvuxlZvxTM6qB0yCGvozPKOsz3lKM19fSbY5q0JS22XKFPkpos9zxXP6PhZb8K5LkEgRdtLwOTpJlzO667hx2L3qxK2L6FpOVS4/f5KefnlH8+974qTf298klC3e6PobOHswGQaY0kVKi9O88ZYUm2o4T2gygIlCAJOnTrl/Hzy5MmGMSNMqUaB84Idh+7GVm+phpkzZOEk6YJ9i8z5A63BLbLVcvWIo6Zga6bs6yqZ6ktcB+Sfgxa/X5WwfQmp+/yYuo+V1G/zqeRb6MzFvUkrOkbiWZyKMjeHatKVOfVlLKmgo4EEEkCVQ3xf+MIX8KlPfQoXXnghAODNN9/E/fffX9eGzRW2+spdpOw4dDe2eosp2abG1Z24d7CeFPOUM5w5m9liq+VkUYBWY+UkAXOdyGhGThR7QZGirgPy1YSk+P2qhO1LqNuZI65eaSkvv/zjufddcep1b+yY9HhWh6obvKdUJ6o1i7VNYO1/x5IK1rUHKx63mKiqQG3duhX/8R//gb1794JSirvvvhutra31btuccNsl6/DwS0eYqzalOXHobuzI8YhfQkY1HGWdAPaNP+KX4BEFSAJBRjOcuZXZxLQTy/uOUqaom24vpRR2AWryS/j4GUHs7NecKPZinT77Ou2hPrfaUQCK3q9K3LG1B1/athearrrmupjSsJSXX/7xPAK+OPn3JqubIOLM742qm0gqGpJZfcnFV8wH1ZrF2kXMNoMdb8AhvrIF6ujRozjttNNw4MABAEBnJ5tgHRwcxODgIDZu3Fj/FtYZe2L/8VeOIanoCMlTcehu3OotzWDfJHVLTeCRWGHqCHkdT7mUakA3KQRCWHFRdMcbz553kQSCrrAMEILhhOKcTxSA9Z1hXHNOt6NmYzHzq/HDV49hPJ07H8UCylhpUXSz5FosAazA2MrDv7n+HHTRcVx+fltOFDulJnSTiRYopZAlEQFZdK7vZDSDtGaCUoqgK/W3GKU88y7d0Ilv33guHniuF0fHUtANCkkgOK0jWDaRt9jnsRBUcwuJ/HvT4pfwxaurt6Oyyag6klkDKVXjdkMLnJTCwj4baQ0UUKFA/dM//RO+8Y1vFI3WIITgRz/6Ud0aNpdsWtmMjcub0DcSQ09nEzatbC66X75Ky62WyveUK2Zu+uDzB3FkJAkK5mbeFfGCEIKTk5mc9Nt8G6OMZmBvfxRvHBu3FtASdEe8CHklJFUDq1oC6I7IePHgKLKa6fSCvJKArogXkihAMyjuv459obALxgPP9UJRFWgYxKqWAP744jX45e8GcWQ0CYOygub1iPB7phfBbhelwyMJJLI6WgIeeCUBb/VP4k9/uAs+65xndEVyipF93D1P78eqndUXHP7sLMT9u9rb24uzqixOlFIkVR2JtM5cHWrUnt/2TeDJXf0YjGewLOLHzReuwkU9jTEKsxBwFuk2kIsEABBKG3OVQm9vL84666yK+7mLDDFUUFF2HuaVHo63PPZ6wVh/WtXRGfbhidsvznmPL2/bi4mUWjFJ141AgGa/h01CFzlOALCq1Y9YRkM0oxcMJ9pzYsubfU4MdEo1coxfKaVY2eKHopsYtmTs+W8lCsw+RZbEivfFfT8HoxloJoVhUhBCQABniMgjErQFZeecAIoW+1LvV+rLQTWfW7W/G41CNderG6alQtWmHZBZid/2TeDhlw6zNX8eAVnNhG5SfP6y9XUrUvboTy1oD8mI+Odu6Ky3txfPD1Se03XPU+1+bxJ/8A+v4p9uvRAfObNxRhHK9qB+9atflT34yiuvrGlj5gO3JDeb1ZxFtdWYfFabompHo9vDayillsvDpEA0o5X8FkvBpKUZK4ojfz/DpJAkgtEEmzw9PJLEyhb/lPErITAJxVhSzTlnQTtMJnfvbpIq3hf3/dRMClFgQYSU0ikbJwACSM45gcomsaXep5r9OcXJagaSWR1JpX7DeE/u6ockEEdZaH+heHJXP+9F1Qi7B9VIPnxAhQL161//GgAwPj6Ot956CxdfzHoFb7zxBi666KKGKFCziequVi1lR6PPZLzEnq8qBgWTn5d7sNjGrnYRcxu/ioRAoMSRsJcrhNVGsLvvp60MzPcTdBvO2uekwLQ+Bx6xPnMopUipbM1eVq2/Gm8wnkHEl/uo8XkEDMUzdX7npUOjDvGVXQf1zW9+E9/85jdBCMGzzz6L7373u/jud7+LX/ziF3PVvrqzqiXgPLxtqpXkVusJt6ol4ESbTxeBoORxBKwIlFs4bpoUIiHQDIp1bVPXKosCKAVMUMiiAFkUSjbPfp9q7ov7fnaEvY4E3+k5gi2Kzo91n+7nMJvPbamiGyZiaRUDk2mMxBVHjVpvlkX8yOb5f2U1E90R/xy8+9Jg3BoFaW0wFV9VC3VPnjzpKPgAoL29HcePH69Xm+aU2RiPXrqhE/dftxGdYR9iGQ2dYV/RORA7Gl1ArkS7EvYcVKkPicAaH7e+neYXGEkgMCiwrj2I+6/biK9ec1au8SulME12jnCJcwDMmDbsqy6C3X0/Q14JbSEPRIH1mDwCgUgACgoTNOec0/0ceMR69VDC1sicjGYwnlJrPsdUiZsvXAXdpGz5Bdi/uklx84Wr5rQdjcxYUkGT3wNZquqRvmioah3URRddhD/7sz/Dtdde6/SmPvCBD9S7bXPCpRs6ccHbA67Idx3XbeouGzEekkVmP2TJ0lOqwdyaoxm8eXwCp3eGHIn4gVMxpFQDhkkLHSsAlPOHMClzaAjIIgwTyFpZOZJA0OSXMJHSHNNWkTBRhOp6+OgmzXFAB9iC2r6xFEyT+euZBBiKK1jXFsCnLlo9peIzp9ZxEQAtARkbukO488m3ciLNbXm5+/6EvWztViyjodkvo8nnwWhSyXkwyiLBuvZQjlLPjkxPKszeye/JtefJl6vff91GLjMvASvabH7pxaMxvLj9zXlT0F3U04rPYz2e3NWPoXgG3VzFV3PGkgraGyio0KZqFd9//ud/YteuXQCACy+8EFdccUVdGzZbqlVqPbL9EB5+6QiLtrDMYk0KfP6y03MevrZizB173hJgRSL/C6m9yDYgi0gqRs52ah3nEQSMuMQJ5WjyS3j4j87PkWN/7ok9SCi5Q1wEgFciUHWaU/hEAoR8bCFxk9+Tcw0dAYKA35+jgCumkBuJZ5FSDYgCcTKm7Pu0aWVzUUXdjZtXOHHxlZR2bjPesYTqdOXagrJjidTk90xbsVeMRlXxmSZF1opKZ+75FL/tm8C3X3gHfq88Zwq6hcBSU/Hd9OhrAICf3rGlbu2aD6ruD5599tm49NJL8bWvfQ2XXHIJkslkPds1Z1RjFutWjI0lVYiEQBQIxlO5yie3gSozPTWcYgVMiRBiGR1jqeqKE8BMXfN7ErarhC04sN83q0+JEtwGrLaZrXMNlgQ9mqUFRqvFjFjtxGB2f4Sc+1TKuPXxV45VbejqNuMVBOtzsJR+iexU27kxbC6UUiQVDSPxLPon0xiOZxHPao6cnynomICEgH1RkASCJ3f1z3PLObVkLKk0nIIPqLJA/fSnP8Wdd96Je++9FwAwPDyMz372s3Vt2FxRjVms23zTHXtu0pktErV7H9VCgYLI84Lj8wxX3dttJyHb0NN9DZq1za2AK2Y2Wqy99n2qRQy624zXLui20k+3AhSrOc9SQTNMTKYU9E8wwUOpEMDBeMZxGbHhCrrGYyzRmEN8Vc1B/eu//iv+/d//HTfddBMAYO3atZiYmKhrw+aKasxi3XJyWRQcSyI7pn26Rcp+r2qLFLMmyo08PxXN5B5Pc/d3S7vtS7Nj7N3R7R5rm1sBV0w+746Ot7HvUy1i0HPNeKdMa2VRYMUp70vEUlXsZTUDiayOVJXrlpZF/BiKJuDLOQdX0C1kypnF2saw7v+v6AbiWR1tS7UHJcsyZHmqOut67bKJ5pvbLlkHkwK6ybzlipnFuhVjtvrNMCnagp6cwuY2iBUIEPKKOao9e9cmv4T2achBI/5c89Q7tvY4BZTS3Pf1SWQqHYNO5TVF/BJCXqkgur3ZRwoUcMUUckFZhEBg3R8z5z7VIgbdPkfEL8E0rc/BUvqFfVNtX6qKvaw1DzgYyyCRrX5RLVPQgSvoFhG2WWyx/+ziBEyZxE5Y0wWNtgYKqLIHdeGFF+IHP/gBstks/uu//gv/9m//hssuu6zebZsTqjGLzTffPL0jCEIIkoqO9Z1eR8VnUEAipLSKTyDwCCyuXRSA9qAH46kppwiJAHmBtYj4cgUSdnu+e8tm3POzfTgZZ6m0AVnE/7Ae2D/4TR/S1hohkQBndIXxlas34GmXWhFgasDhlAmfkkVAFnDHv+wGwOLTb9y8Aj/ddQJ9Yynn/B9Y24IDg4miKr7pxqAXM5G1VXm2aa1b6Qfr/IeH41ANClkSnDmohRCrvqoOKkLDpEhbIZgz8cWz/e+ymomMrkKWBKxpDXIFXYMxlrALVOMN8VWl4qOU4t///d/xyiuvAAAuueQS/OEf/uGCDi2ciVKrXuquYqq4WEYDARCxlGnjKQVDMaXgISQQ4AsfXV9VnHo5f7p9A1FHrch6iuyYkIcgo7OYd1uqzsQQgGrQoqq96Ua7T6ed1fr8zUbNV4vPuVZtKYaqm0hkNWdeaSa4/e+IqYEKniWh3rNpVBVfsaG/Xx8cwa3/vAv/359/EBesaal38+aUikN8pmni4x//OG666SY88sgjeOSRR3DTTTct6OK00CimcrPj4e1t8Yyeq75zKfCqjVMvF4PuViuariHHpEadnykAURAgEoKsTkuq9upxP6pR5S2kmPdat8U0mRpvOJbFyWh61im1bv87tqaMq/calUb14QOqKFCCIODMM8/MiXznTI9iKjfDmmexKRrpbn0HqDaosFzUt1utmN9ntn90pwQXYybR7tNtZz2Oqwe1aAulbAhvLKGg37IfSql61U4j5RiMZ+Dz5P55c/VeY2KbPbeHG2+Ir6o5qNHRUVx77bXYtGkT/P4p9c8PfvCDujWskSimchMFAtCpSlA00t16UFUbp17OvDaW0Ry1Yn6su636IyUKmM1Mot2n2856HFcPZtoW07L8yViLaYtJw2vBsogf4yklp4hy9V5jMpZkn7P7d7FRqOqK/uIv/qLe7VgQCIJgPXREBDwShHIurNOgWDx5yCuBAM62iF9C2o6Sdz2xBFJ9nHq5GHR7Dko3TWdOiSJ3DooAMCx1nk9itknu/WcS7T7ddtbjuHownbYYJkVa05FRDGQ0Y1ZDd9Vy84Wr8PBLh5HRDBDK1XuNzHhSacjeE1ChQCmKgieeeAInTpzAGWecgRtvvBGS1HhV+q4n9+CZfUOW6ep7+MDaFnzt2rPREpAR8kk1mW+zPfAAoCMkoz0oYzSpYDShQJZYYu0tF67GT3edKFDm3Xn5GU4ir32OdW2Bgmj0cjHo9n6Pv3LMWkBL0B7yQtU0rGrzI5HVMGoNFZzezs69z/LGK6baK0cxXz47+dduz/0AHniuF4dHmCNJT3uw4nkXUsx7pbaouglFM5DWDGRUfc4j093+d/0TKla1erl6r0EZS6oNKTEHKqj4vvCFL0CSJLz//e/Hzp07sXz5ctxzzz1z2b4ZU61S664n9+Bnbw8CAFoCHpgUiGU0XL6hA1+79mz4JBGtQRm+EkNblaTG+WqvU9EMJtIaBAAeSYBumEyeLgCnd4QKio59ji9v24vJtAZKqdP7kQTgzsvWFzVsrVb2PBNFW7n3KeVbuKLZVxA9Xy8VXCXqodbUDRNZ3YCimchqJlTDqMlcUi2opaJtsbCUVHxXf2cnVrYE8PifvL/eTZtzyookjh49im9/+9u4+eab8cgjj2D37t1z1a454ymrOOWz/eAoAOYgPhjPYCyhQMsTMtgP45FEFs1+D0YSWdz7zAHsODji7ONWeyUVHZNpDQArMIpuOkazhgkcGU3hS9v25hxvnyORZYuj3d/EDRP4/o6j2HFwpKq21IJK71PgW2h5/o0l1Ryl20JS5M0UR3kXzzoZS7GMxtYsLZDixGl8xpIqOhp0iK9sgXIP5zXi0B5QnU0RpUA8q+FUNINYWoXd6azmIetWe40mptY5FXtf0Vr8m/+QthN5zTxLCgrm7DCXD/xK71PKt9BWKdpKt4WkyJsORZV3ytwP4XE4AJvfnEgpDTvEV7bqHDx4EJs3bwbA/jAVRcHmzZtBKQUhBHv27JmTRi4UDJNiPKUiqRhoCXgc9Yyb/IesW+2lGmZRTztgau2TYdKCh/SqlgDGEgqyupljSUcI4BWFGUWmz5RKUesFvoXWeKRs2bK4lW4LRZFXCcOkyGg6MqqJtKrDrJPyjsOZLpNpFSZlsTSNSNkC1dvbO1ftmDckAY6rgpv8oD83im5gOG6gpyOIyZQCzYATb5D/kHWrvTwCYb2gIk83kRBQyuTn+Q/pO7b24Mvb9iKbVNmh1vECgKaAZ04f+JXk1e7rbQ/JzhxUd8hb4KG3UBR5xXBEDqqBjMZ7SJy5o5xZLJBrGDvurIFagj2opcCdl63H320/XLD9jy9eU/Y4CuAjZ3TiH189xjywKJzUWPdD1q32imU0GFkdEZ+AtGJAsSag7Mwog1I0ez0FD+lLN3TiWzeei796ej/6J9lCS1kA2sJeeERxTh/4leTV+eq29Z0hUEqRUg10hn05goqFosiz0Q3WQ0pkjQUlcuAsLWyz2FK4i5ftIrEkh/hmg6Io+G//7b9BVVUYhoGrrroKd955J6LRKO666y6cPHkSK1aswHe+8x00NTUBAB599FFs27YNgiDgnnvuwYc+9CEAwP79+3H33Xcjm83iwx/+ML7+9a/XzGrpzsvPwGtHx/DasUln23krI/j0B9dWPNaW7P70zX6kNR3LIj5kNQP3PrMfK3bmPnCjaRWJLFuYmdVMeD0iRJEiqxqgBDApLavie+C5XowkFHgEAkEgMEwTY0kVkkDwF0/shmYw0YWbgEfE028P5Ei+ExkVg3HFEWd4ReCzHxEdKbu9LwH75VcNWiAxNw0DfZNMCk8IQChwx7/szpG+V1Noqt2vnrz87ih+8uYJ9EczCMkSrtu0HBfOgxTbNnadr1h2zuJkqkAtwSG+2SDLMn74wx8iGAxC0zR86lOfwtatW/GrX/0KW7Zswe23347HHnsMjz32GL785S/jyJEjePbZZ/Hss89ieHgYt956K1544QWIooj77rsP999/P8477zx85jOfwc6dO/HhD3+4Ju18ZPsh/Pa9KDwigYcABgH2nYzjx68er7pIXdTTit/2TeB7O46gLejB6R0hTKRVfOPZXuwbiOLHr7+HybQGgbCFt6rOpMjdTV70tAedXkip4vSlbXsRtY43KYWmU2ZbZLLYj1LDTxnNwM/eHkRLQELE58G7Qwnkj2YqBvDQ9sM4NpbE7hMxeEQCVTOcOHpJYOd5+KUjODaWxMtHxhFNaxAt53V7xFI3TEeF+O0bz533wlMWQUQ8o+KVQ2P4zkuHoWomPBLBRFLFd146jM9jbg1V3cauEZ+E8ZSCh+ehHZzFh2Nz1KA9qKoj36cLIQTBIFt8qes6dF0HIQQvvvgibrjhBgDADTfcgO3btwMAXnzxRVx77bWQZRmrVq3CmjVrsG/fPoyMjCCZTOL8888HIQQ33HADXnzxxZq1MzfynZmlCgT46e6BaZ3nyV39IAAyqonBWBYeUUBb0IPn9g/CIxDIksCMWF1mrfGMXlUUelLRrZh5wcl9MmmOU1JR7LoVy+gYS6pl939m39CUPDylOmKMKcNYto/dlvyiSFFahbhQyKg6RuMKhuIKxpIqHnv5GDKqAVkS5jUOPcfYlceyc6bBWFKBJBA05QmXGoW6zkEZhoFPfvKTOHHiBD71qU/h3HPPxfj4ODo72bfrzs5OJ5l3eHgY5557rnNsV1cXhoeHIUkSuru7ne3d3d0YHh6u+N6KolQl8kgqOiTCXNsBAaZpglAgrRo4evRo1dfaP5FA0EOgqGy9UjrLJjtPJQw0+SQsi3iRVHSklCnXckU3kM2yOSVCKfpGCtvcNxKDbpgQAJgmKwz5gYSVMCnKrs2hYEo1YqjIWmF47gLF7gmFYQIElLWlSLoupSYMg7V5vgU2hBBQEOiUQDFYj1XRmAJPUVUcPXq04DMD2OfQP6FO67OfLfVuh329S4laXnMi4odMZm+SPB3GxkbLvHqG8/d1ZGAETV4BBw8enJuG1YlSC+frWqBEUcTTTz+NeDyOz372szh0qPTEXzFDC0JIye2V8Hq9VbkFhLwnkNEMiALrTAqCAErY/M10VqKvak1iPKXA55KdZzQDXokioehIaQZaAjK6mvxoMUxkVROaYcDnY+adaVVHT6evoM09nTHE+idBTUAQCATTyHEdt3tT5RAI4JVEGFrxIkXAzk1FGX5ZgkBUZz+BsHuimyZEAZBEwtpCzJz3ZSa0AiQB6OlsqkuuVjUYJkVK0ZBSDSiawQxu8/axXQZKfWarWr1z6rxQ73ZwJ4nZMR9OEu3tHWX3sf++jDeS6G4R5u3vrd7UbYjPTSQSwQc+8AG8/PLLaGtrw8gIcx0YGRlBaysbY+/u7sbQ0JBzzPDwMDo7Owu2Dw0NOT2wWpAb+T5llnrTBSundR4WrU0LorVvumAlgl4Jmm5iLJHFifEUhqNZqIaJde1BRHwismUUd3ds7UHIK1kx86bjPC5Y4oRy5ETMh+Sy+1+3qXsq1j4oOz2zqZh3to/dlnwfXQKmQgx5pXmRiiu6gcmUgpOTaYwlVWRUo2LhLvWZzbWh6kJpB2fxMZZs3EW6QB17UBMTE5AkCZFIBNlsFq+++io+85nP4LLLLsNTTz2F22+/HU899RQ++tGPAgAuu+wy/OVf/iVuvfVWDA8P4/jx49i0aRNEUUQwGMTbb7+Nc889F0899RQ+/elP16ydbhWfZjl2b1pRWcVXTHX1+cuYOedQPIOAR4RHFPDLA0No8XvglQSMp9iEZkvAA0Uz8PZADM1+DzpCXnzo9FY89nIf7nl6v+NvZ5u1JhWWEUQJIIkCWrwi0irzfisHBfsGkswaSKsmWoMejKW0gv0IAQ4OJXHj5hV4rW8Cqm5iVYvfUfEFPCI+uqEDQ3HmouERCXQT8AhwFIXA1GLcR3f2Yd9AFK/1TdQlDt00KRTdYGITa72SQWnJIcz8z2rrKhGnnZZrqDoUz6B7ntRzC6UdnMXHWELB6Z2h+W5G3ahbgRoZGcFXv/pVGIYBSimuvvpqfOQjH8F5552HL3zhC9i2bRuWLVuGhx9+GACwfv16XHPNNfjYxz4GURRx7733QhTZkMd9993nyMy3bt2KrVu31qydM1HxlVRdXbYef/dH5xa8ntVMEELwN9edAwB48IWDSCgGJAIksxoSWR0TKRWr2/xY0eTDSCKLz//kLcQzOiSRwCMSJ+7iY+d0YfeJGJoCzIx1wFoXZS8stuXjAgDT+o9QirAsFS1OADvvoeEExpIKvlVEgec2gF3W5C8wds03xD02lsRvj0+gMyyjLeh1/PruB2ZUpCilUHQTqs4KbVbTq55/K/ZZ/dteFcu7JxwF5kIoBAulHZzFA6UUYym1IZN0bepWoDZs2ICnnnqqYHtLSwt++MMfFj3mz//8z/Hnf/7nBdvf97734Re/+EWtmwigiIqPTKn4ShUot+oKgLNg9cld/biop7Xs6wCQUnUIhDh5U4puYiylQtENnLOiGatbAxiOMQcGyZ4bs4bantk3hLVtAQRkCX2jyZy4dje2nJxY/z+aKV6cnP0pkMgyBV5+EXH77wFAQJaQVqf2zX89kdUhEKZSbA/5CvavBkU3LCcHE4puzNheqNhnoWlwPisOZ7GSUHSousmH+BqZlGpAypuJI4RNUpdiMJ6xsqOmcMdpl3udgg1RCUWEHhnNwHiS5UM1BWSE/RRplQ1lAaxIaQbNMWPNj2svCkXB+qciu0A3zaLefZX89/Jftz0H3TH2lXwB7SE7FldhQLPmBGdLsc9CFgmPPucsesYSbJFuW4Mu0gXmSCSxkAnKYuGaHooCE1g3yyJ+ZLXcR747Trvc68sifqaYK/Lw9VhzOKpu4mQ0g2RWR0dIRlfEi2a/B36PCI9InOIpi4IjhLDNZotiLRAuBwHrrRXz7lvVEigo2G7/vfzXZZGt9bLnpOz9V7nObZgUCUXDSJwJR05FMxhNKIhnNVZ4a2QzVOyzUA3Ko885i55GX6QL8B4UbrtknROFTqkAg1ZW8bnjtH0eAVnNzFFdVXr9wRdSiGc0Rx9u146QVwQFs0IKeUUkFB3ZCR0+jwBZFOHziLj+3GX43akETEqxqsWPY2MpKAZFfv2x56AoABFAk9+DiXTpYT6BAGFfcQVeJf+9O7b24P5fvAOTUoS9Ita0+RHL6OgIy2jxy1ANEwFZxJ9dspblapmmIwGvN8U/C3CFHGfBUs4sVjdMxyx2vMF9+ABeoBx/ucdfOQadAj6PiD+5eHlZFd9FPa24eqgLP909gIxmwO8RcdMFK505Dbcq672JFFTdhEdkzgA3X7gKX7lqAx7beRT90QyoSeGVBAiEIpE1MJlKgQgEq5r9uHhdEK/1TSClGMjCBASCH7/Rj4hPQneTD7Io4KK1rYhlNIymVCi6CdOk0AwDac10JqYMCkykNXglAYZJHed1G49AcHpnCF+5ekNRgcT/frkPmmEgo1JouoEzuiL4ky1rcGFPG5KKhvNWN+OrV5+Jn745gP7JNFoCXvxeTzve6o/h0HACnWEf/ujCVVjXEUI8W1gkf9s3gcdeZh6AALCq2Y/bt55WkzmiYgq5rRsCfP6Js2ApZxZb3Ci2cYf4lnyBAoBNK5uxcXkTxuIpdDWFcGZ3pOz+v+2bwPPvDLMoeOtb+fPvDOPM7khOkQKAh186jJBXgs8j5Kj9Hv+/LsxRmBmmieE4+4XrDMnQTIoDgwn81bVn492hOH74+nsQKIUoMPeLg0NJdEe8ODGZRkYz0Oz3gFATHlFEQBbRERZgUApVN6EZ9r8musJeNAVk3H31mXj/ula8e6QP69auhSAQPPHGCXzzuV6kVAMhWcTF61rRO5wEIcD6zhDSqoF4RsN4UsF9v3gH7UEvPrl5BS5c14qJlIaxpIpoRoPfI+G0zjBuqeAIb9/LB184iHhGc4Yh35tI48EXDuIrV22oWZFyn2epuSpwGpOxpApCgNYGzYICeIHKkUhHZIKJdGWjzkoqvmr3c7/eP6kw4QQBJtOaM6/z5K5+HB5JQLB8AgE4646G4gr8HgGaQTGcUK13nbLLkSwPQI8owO8REfZJ0E0KSQR+sLMP32gNYDSeQSSl4l9ePY5/3XXCMrQlGEtQvDuSRMQroSviA8DUh0OxLESRYE1rAKdiGXznxcO4+uwuPP/O8IzMTp/c1Y+UojOXDHsSzaRIqTpX2nE4ZZhIqWjye5xsqEakca+sSvIjzKsx6hyMZ+Dz5N46t4qv2v3cr2uueHTNUr/Z+2Y0I0cAYbhG6DTDLDmXo5tMBRjLaBhNKhiMZTGcUJBRDRwdTebItn+ye8ByRmeLcCmYkCOWnSp4EymVOaqbNMfU9Ke7B2ZsdjoYzzAfQNf1Ees9uNKOwynNRFpFa6Bxe08AL1Don0wXKPaKFRs3lVR81e7nft0jCmzxKZ1S89n7+j1ijqrN/r8EU/tWCynR1vwiWAy7cLrf0+cRHAGCm0r30GZZxA8xT9VIKXOo4Eo7Dqc0kykVLQ08vAfwAlVUQl3sAe6mWu+0Svu5X28JeGBSCtOkaAl4cva96YKVMB2fwKmC1xr0oGWa36Ai1jBfflvziyAwpS602y9YMRvu98xqJvwesaqCXYybL1yFoFeCaVKYpsn+oxRBWeJKOw6nDJNpDS2BxozZsFnyBeqOrT2OSSql1Rl1XtTTis9fth5tQS8SWR1tQS8+f1nhfEul/dyvmxRY0xrAmrYgTIqcfT/9wbX4k4vXMEdyE/BKBCGviIAsIegVEfGxHiDBlOURUPjhBmUR69pDRduaXwQNkw05Xr6hw2n/ypYAIn4P6/HkGeLO1Oz0op5WfOWqDVjTFnQWc61pDdRMIMHhNCqTKXXaX1AXG0teJHHphk7caJmyTgoEPg/F1Wd3VfVwjGc1jKdUjCUV/N8/j8HvEdEa9AKUIqUZgGkipjCHBL9HxDUbm5zz5huYXrOxG2/1x5yfz1/VhCd39eOhFw85ZrQ//9wlznvbxw/FM+hpD+P8VU14qz/mGNWCEKRVHd3Wuexzl8KW1f909wBSqgGBAB6R4LU+ltdlUIpRa+V6RjXgl0WsaQ2iPeTJOcbvEbG+Mzwts1N7P/t+zCTa4MevHi+Q/VeTiMzhLEYopZhMqw2t4AN4gcKOgyPYtuckOsJeRDwmFCoVSMbzcUujASZa0E0KRdcRyzAfOp9EkNLYmJlEmJXPD19/DwBwZnckx8B0YDKFfSejaAt60ByQcTLKfm4NeNASlIuq4oqZixbzeJ9OnPinP7jWaZumG4hmNGi6kWOTJIDNRfkhoj3kwUvvjlrFjM0dZTQD569qmlbvZ7aR5z9+9TiT4RNAFHLvNS9SnEYkoxlQdBPNDd6DWvJDfDNR8bml0cWizwUyVZwAVsDcUfL5Ed927yOpGCAgSCrs55RqzDoCfLpx4vb+9nvnCwSd61N1pzixaxNyrrGebcznp7sHatIODmexMGFF97QG+RxUQzMTFZ9bGl1M4Z2vhqOu7RnNKJCf2xJzWyWX/3M1bSrX1uko7Oz97TYUK1C2DNykhddayWi3Fm3Mp5gCcSbt4HAWC1HLtoz3oBocW8VnUoqEYiCt6kirRlkFmlsaXUyZXUoNZ5vQ5svPbYm5Ld/O/xmoXhVXrK3TUdjZ+9ttyL8+gikZuEAKr7WS0W4t2phPMQXiTNrB4SwWpnpQjV2glvwclG2EOpHKYDKtAWBCgGhaw2f/bQ+WN/mxotmP5c0+LG/2Y3mzH3/0/pX4f36Vcux53AtnCcBk0p6pYT6R5EbJ2/M89vqhoCxiIm06ZrEhr4jxlImgPGUeO9MI8ErGtaX2D8oiohnNiZjPv76I7MEFq5vx0rujgKX4o1aoYjmj3Vq0MZ+bLljJ5pxm2Q4OZyFQzCzWNoi1/51M2+ncvEA1NJdu6MQFbw/g6b2DOQ/jlGqgdzCB3sFEwTGyJLCMpSKprrJE0OyTQAQBIa9LxSeJTnF67OU+jMaz0PMOjmZ0JBQDisZynsZSGiZSGta2BXD5hs4CVd+7Q/GyyjVb6RdPq0hrZs4C38d2Mj+6trz2u81VDTMJ1aq+BqXQdBOCZWQ7Zeb6Dl56dxQm87LFZWd2TFuYMNPIc7cSsiMkI5bRoRpMMbmlpxVv9cfwy//9unO/uGydsxgoZhZrFyzb1mgyZReoxp6DWvIF6pHth/DMviGIAkGzV4QOIJrW8aHT29DTGcLJaBanohmcito9LDgBgsVQdIqxtI71HSGcvTxi9bp8WNHsR79lghrPaDm9LhvNoNDyXjABnIpl8NTeUwh5JUfl9o1fvoOkwsIWiynXbGWcphvI6GZOIaUAjo2ztnz63AhOOy23HdXGj/+2bwIHBhNY0ex3ej4HBhP4bd/EtIvBdCPP85V/Wc1ES1DA5y9bDwCzUgVyOAudibQGQliMTiOz5AuUO/JdEAg8RIAo6Nh9Ior7rj8nZ9+0quMvf7IPYykFBEzEkFD0AiWfYVIcHE7g4HBh7wsoPm9VjqxOYVIdHVbui98jol9hAgDbQJaNvZlOVL2tjIuqxXOXKJj56wuHE7jhg9NskEW1prn1oNx7A5i3dnE4c0E03fhGsQAvUNOKfA/IEqJZFa1BD4hVZlJjSYgCYJpMcKEaJlTDRFo18L4VTTgZzWAols3JYJpJTp9RRbqfu9121LlbCZiPaVKMpWeudCsXbV9vyr03BeatXRzOXDCxBFwkAF6gEJTZt2t3JHo5BdiyiB/jKcV53SMySbYsCc5/Gc3AyuYAvvnJ9wFgxWU0oeCvntqP4+MpUGDaabIGZTlJsijA4/IzopZ8jRCS0267nR5RgG4WL1KCQNAemLnSLf9eADNXG9b6veerXRzOXDCZVht+/gngMnPcdsk6mBRW5Huu2q4Y+QawIa8Ik8JR3BXzoRMFgu4mHz7zoR5E/J5pD/HZKDobUnRHt6sGhWpQKDqLMl/bFsQze0/hgjXNyOoGAh4hp/jaEABBWcJV68MzbE31prn1oNx7z2e7OJy5YDKlNbzEHOA9qGlHvucrzlY0B/H775vywaukQGsJyM4iu2L4JIKsS97X5BPx6YvXYjyl4tfvjiKWUUEpE1QY+Yt/ABwYjOPAYDxnGwshnOq1CQCWN/lwx4dPQ7cQK3N3CnEr54IeEZRSDFlJwKua/fjspafPaJ4n35uwkuqukvJvJqpADmexMJlWcfby8snfjcCSL1AzoVofPDduVZ09r2mYhWuMsjqFAKC7yQtREKCbFCtbAvjkBSvxma09OeexVYWUAn5ZAAXBimY/koqO4XjWKUj5w4kmgIFYFvc+cwAtfhGr2xNMbdjkx4oWP5Y3sTVfQe/Ur8ePXz2Of9t1AopVPEMeAWOWeWxXhLU1U0bdWIofv3ocT+zqR1Y3QQAEPATvpFV87ako1rYFcfuHekoWlnLKv+mqAjmcxcRSMIoFeIHCI9sP4eGXjkAgQItPqpvRqFtVZwssaJ5cwv7JRGHsu9vx2z6PQIjlB8hsh9pDMoKyhEc/fQE0w8RwPIuT0QxORe1/MxiMZnEqloFmsHefyBiY6I/h7f7CnlSz34PlzT4omomjY6mc15KaCQGAKJKSba2EbfJqF1AKIKVREACSAAxMprk8nMPJI6MayGommpfAHNSSL1BumTkhgEimjEZrWaDcqjqBkIL1Tvnkx76XOg8wFRPv3tcjCljZEsDKlkDBuU1KMZ5UcTKawduHTkCTQ04hOxXNIK0yZV80oyGaKT0cabKTQTcoYhkNkkhwMpqGSanTtnLYJq/FDHeJQGCa1DGN5QWKw2FMWC4SjR73DvACNS2Z+WzIUdUZ+X2nQvJj30udx7b28YhC1Uo1gRB0hL3oCHsRVsdx2mk9zmuUUkQzmrU4mRWsH772XoHlkY1dXIat4T4AuObhl7G8yY9l1gLl5c1TdlHdEZ+zdiOjseHOYue2r4nLwzmcXBwXCT7E1/hMV2Y+U/I97sohAAWx76XOY1h+SyF/8Sj36UIIQUtARktAxsblTQCAbbsHoOgGQFFgz0TAgg0NE45oQzMo3ptI472JdOG1EaArwua4BEJgmLTAzxAAQJkRJpeHczi5LBUfPoAXKNx2yTo8/NIRS2YuwKDlZeYzJd/jLqObUDQTksDEEra8oCXgQYvfg7RmoDPoLVCfFfPKkyUBK5qDdVOq2WasAgFETBWTFr+ElqDXSe79g80rsLLVnzPvNRjN4GQ0i6F4FoYV0TEYy2Iwli37npJIkMzqIITg+nOXI5HVEPY1/pg7h1POLBZYOllQAC9QuPPyM3BsLIln9g3BzhisxvC0mCwaYCKGw8Nx5n9HgYA8ZeKaryxzx7YHZAmgFBNp1RkuS2QTeOD5XqxtC+UUH/vfx17uQ/9kGqphYjCawmMv9+GB53uhWUVrTetU0Sol4/7dcAbff3Mv3ptIIaMabG5LIGgLygh4RKQ0A8siflx2Zgde65tARjMQlMtHqg/HFLx6ZNx5r8995HRcsLYFw3E2ZOj2NzxwKl60R5nRTGSsCI7v7TiK7+04ClEgWNbkwxldYeYubznNr2jxoyXgASFk2nJ1DmehUc4sFpjKguI9qCXAjoMj2H0ihrVtASfyvZLhabGI8gdfOAiALfRNubKNMmppVaBdsNzS8aTl7WdSNtSnCMDAZCpHzeaOnLdFBsNJDUhqzponRTNwMsqOu3qoC8+/M1xgnnr1UBd+vjcKIgiIpTWnF2cYbG2TLXcfTykYTmTxV9eeXZXDeFGj1stY25c3+/H+vGMopRhPqQXF69BwEqeiGWd+yjApBiYzGJgsnJPyeQQ0+2VMplXIogC/LOBkNI3/d/u7uOujZ+Di0/J92zmcxYndg2p0o1iAF6jcyHdo8EsiEoJeVjlWzKh0OJ4FCKDlTdJQsDyocqrAfAm6bV9EAScSvl2WnDa5I+cFQqC71h+ZlrjApBRJxUB7SMJPdw+gNSgXmKf+dPcAwjIQUwwUW8FUTu5eipkYyBJC0B7yoj3kxSbXyOoXf7IXAgFkUYBqmNAsj0NRYOu9TsWyzh9rVjMxpLFhQ+a4MXWerz+1n63vssQasp7EKBnH8iY/upt8LD6Fw1kkLBWjWIAXKPRPptGc902kmsj3fDPSUhHwdkR6OVVgvnSc5h2bLyG3I+dFkTj75eM+zg4CzL/GjGagzS9BM0q3rZTcvdK15L/XTOPqIz4JBAR+QYTfIyLsk5DI6njklvMBsB7qqRib8/rWCwdZwTYoVMN0DHopUNDz+snv2LovAqAj7LUWKE9Fo9jqQ7/MU3k5C4uJtLYkfPgAXqCwqiWAkUSWzQFZVFKOFTMqFQUCEICYtMAdopIqsEA6Drv3VFxCvizix2SKWR4RUl6mndVYgJ/9r/sa/R4RqkHLGsqWkrtP597MJq6+0rn8sojTOkI4rSOEn+0J5+xPKUVC0RHwSPjYpm5HuPHeaBzjGcNZrDySUDCSUPAWogVtaAl4nCTlFVaq8grLdSPil0CqWO/F4dSSyZS6JCTmAC9QTuR7WtUR8VBkqzAWLRZRbtsCGZKJeHaqR8Ii0surAgti1q21TazwUATlXAn5zReuwoMvsMh5kFyZtmDFy7ul5zddsBLPvzNcEKl+0wUr8fO9Awh5RSiaWTDMV07uPp17M9dx9c7+uglCCG7fmmuXdPToUaxd14PRpJKz3ovNgbGf7R7vZFrDZFrDgVPxgvcLekVHqLHcteZrebMfbSG5qsXKHM50mUyr6I745rsZc8KSL1CXbujE/WBzUWPxFLqavPjji9dO26j0s5eeDqBQxecvonj7bd8EHtt5FP1RNuS0qiWAq8/uwi/3D8JtZycKQMgrYWVLoRoPADySAE03QQj7IG1xhS2wSCgGfBLFW/0xXH12V1FD2zCS+MXhLCZTWo6jgz33k1ENrGmrXg030/j2WpxrOvuLAkF3hC0c3rw69zVKKSbT1mLlWBYnJ9OsiMUyODmZQTyrAwBSioHDI0kcHkkWnF+WBMfTML94dUd8rMfN4cyAyZSKDd2NbxQL8AIFgBWpSzd04t1334W3bUVVWU2lzEirUbm5FXgA8N54Ck9E01B0CkmA04MyKHDDeSuc4uZWyLWH2CLWpMIeliJh1kQC2LoqANB0E60BD8ZTCp5/Z9hR0uWT0Qwsa/bDME0Mx3MNYO0ey3QKTC2NWqd7rlq8NyEErUEZrUEZ56xoKng9mdWtea9cn8OT0QzGkky0oeomjo+ncXy8cLGyKBB0RbzOUOHyZp9TvJY3+eCt8SJxTmMxkVaXxBoogBeoOefJXf1Iqbpj9AoAoNSJ2CgV4W4fW0o9KBICAnZO3TRBAXiEykauLxxOQLIECP2TChuWItNX7y0lQj4JZ/jCOKOrMEtL0Qycik0NGToFLMaSlU3KBDVsWDELYLLgHO0hOcceyt37Cnn5n+xSxjaK5XNQnLowGM/ANHPNVEtNVeSr/8qpB00UGrTaSj6gtJJuLG2gNcS+jTkGtFUcxymO1yNiXXsQ69qDBa/phonhhFJQvE5GMxiMZaFa47tjSRVjSRX7Bgod5pssh/livS97sTKncVlKNkcAL1BzzrKIH5NpFdScKkxFcged7W4FWzn1oGjJq93PJ1vJB5RW0rUHRKQtRZ+tIgSmr97jVEYSBUfCno/tMO8Wa7gXLacsh/lYRkMso6F3MFFwDr9HdAqW3fta3uyHntax1qR83qsB4AWKU1dyFHjWZJdJWZKuolMYpunMQeWr/8qpB+05KMNkMnU2QkjREpLLqvCuWh/Gv7+TQkYz0BLwsDkoiorHcWqL22H+3FXNOa9RShHPsHmvqfmuqeJlB1dmNANHR1M4OpoqOL/nxWF0R3zOgmUWTulzFit7lsCiz0ZgMsU+66UQVgjwAgWAhRY+/soxSAKBzzOAq87uKur6UK3Pm73fexMpqLoJj0iwti2E81exaHiAFRDbEYkA2NAdxmAsi+EE+4bkkwRccnob3uqP4Zf/+3Xn/T5/WWn1oNs8VhYJYhkdQ3HW47rpgpUl55EopeifzDVvHYwp8EoCmvwSHnrxEJbtyr3e2XjelfMxXIoeepXuJSEETQEPmgIenLWsUL2VVnUMuoYL3cKN0YQCCuYw3z+ZQX8RmyiBAJ1hn7POa1ne3Fetnf055SlnFjvh9KCWhkiCUFpqgGlx09vbi7POOqvifvmJugaYQOBPLl5TIA23FXTuNTn5yjh7P90w2Lcda1TF7xGRUg20BT0wTLYaHGA9HysxA00+CZ0Rb446L+SVyr5fMabT1v/17AEk1cI1UACTqhOSq+j7/GXrAaCq81fbttlc60w4evQoTjvttJqfdyZU+1nNFFU38dv9hyBFOlgBm8w4Io6hWNZx2yhHa1B2itfy5lzHjcgC9YOr5WfcHpIR8c9dj6W3txfPD+R+KbAL1o9eO457nz6AN++5HO0h75y1ab5Y8j2oahN1q/WY+//bO/coqao733/3OadOvfvd1d08gjSPAXn6Wpq7ELQBBVuxXbYabkbvYkSMkzskIGRUlOVoxgxRMzEubxZek0m8Lp2V1TogGjWKEkajRt4BGpWXAtpd0O96njqP+8epc7oep6qruqqrqvvszz/Qp87e+7cLun619/nu70/31QtIIFGvPFlWffFYBvCFVRWORuznQ39IRF2ZDXYLiy5fGAxLUGm3AASwcSz8gog/7BlaUbfj0DeocfHgWQaSrMBuURAQJLTtPZsUa1A0Tk6A6sVnpAQEkLXfXrr3sXMgBChAbfQXLpv+RjvD8S7MBp5j0OC2YEpjslmuJCs4r4k2ome8zkXPe33TE0QoKtro9gvo9gv427nkw8ouKxf3vCvWcaPayVPRRp7RvCcT7dnGKqZPUJlW1M3UYy7OV48ZLMke66un5SSOIeBYAp5jYGVZWC0MJlTaQRhAECVIioKK6F4zgfpNNiCIqHHxyWXSFdUciecY9AUjcFo5sARgGAJCCCrsQCAiosJhQSgiQxAlnPeF9DNTqTBSAirAsP32jN5HWVaShCJmUQ/m07swW1iGoL7chvpyGy5FZdxr2mFlNWkFdb9D7bmXdljZFxbxeecAPu9MFm1YOUY/2zUuWhZF+3sdPaw8LHoDEZTZOFMYxQI0QWVcUTdTj7k4Xz15UFVn49QSEE6eU9V1HANJUSBJCgRRRigiYSAUQbVTTT4d/WGAABWOwVpJAUGEx20bcrvBbbMk+Qtqbauc6ipFkhXMn1gJG9uLAUGGIMkQRNUxPBJT3jaVEnC4fntG7yPDJLvsmkU9mE/vwnwSe1h5zoTkw8oDoUjSIWXNbaMrelg5LMo4dcGPUxeSRRuak8f4ChsaEs58NZTbqcN8Crr9gmkEEgBNUBlX1M3UF27lFRPx690nMK7cioAgg+cYcCwBF90qs/MsQoKEr7oDUBSAYwbtiaocFkiygmBEgtvGQYGaWLRtn4ik4N6FjUPOKdZfMFVbliG47bIJ2HjiPMKSApZl4LZxsLAMOIboSVNT9yUq+obrt2eoRIwm0nz494028uldWEjcNgv+rt6Cv6tPPqwcikhJh5S11Vdn/+BhZU3UkXhYWXOY12yiVMXh4OrLaeLDyj0BARUmkZgDNEFh7RL14eMLH56CqAA2C4v/ddU4w+KCqXzeCNQPfAfP4Ya5Dagvt+GlT7/CF50D8IVFEADT6srQPGccPj7ZjbM9AUyosOOCLwxBUuCyslg8oxYd/YL6WqUDjzRfDED1CNSu3buwEdfM8MTFteuYF//2VjtORS11Gmuc+OdlM/DYillDtr1mhgf/9N1qvHIkgONeH0RFAVEAG8+i0mHB1FonbBYOvUEBPMuiNUYJOJTnXSpl2lA+hrn694028uldWCrYLCwaa11orHUlvSZKqp3W2d6AnrTO9QbxbXT1legwf+BMcv8Vdstg8kpYfZXbx/Zh5Z6AAI/bHEaxAE1QWRHr88YQ1TXAYWFhtbCwcoz+i7FohgcKgC1vH1O36gD0+MOYO6FCT4iJ/Oq9L7Dz2Cn4BQl9wQgOne3F2iXTk5KKhpaYPu/0QYG6EmMIwZdeHza2HcSTrfPwypqrUrbTElqFFahyO1FXbsPEFIlMURT4BBG9/oj+PCqd512sMo0lwNFv+/DQtl5cVOXAmoVThu1jOFbJp3dhqcOxDMZXqiuiRGRFwYWBcNSgNxhz7ktNZIHoYeXeYAS9wQiOfpss2nDwLMZV2FHOSZj+DYlTHNa4raPeYb7HH8Hf1ZnDKBagCSpJZh4WjUu0EwAcS2C3cLDxDOwWLuVD3l3HvNjYdhA9gUFD2OPn/djQdhBPtc5LSgCxMXCMutX1zPvHAcAwoe065sXm14/AOzB4dkmSAYYlYBlgICRi6+6ThqutDW0H0RuNS5IVdPqBC4EBTKi0wzsQwubXj+AxIK4tIQRuqwUunoMvLKI/GIEgyoaFEoFBZZqsKDg/IESdLoCzfcG40vUUSiwMIfCU2eAps2G+wWHl3mAkyaBX+7k3qD6rDQgSjkfd5fd+E7/8srBawkpefdWX2UaF8KDbL5jmDBRAE1SSzJwjDGwcgz+1d+KeRVNgYdVDr1YLC1uGBxa37j6JgZAINiozB9RChr6wceKIjQFQV2eiLOOFD08ZJiitTL2UUBxRlNVnXqIk42xPsov21t0n4QuLYIlmKqt+I5UV1f+tsdaFgGAcIxBNVDYLXFYOAUGCLyQiEBGTFHiaMu1sTxAg0KsEy7ICjiGmkI9T8gshBJUOHpUOHrPGJYs2/GExpjxKEJ+f8WJA5nCuJ4TzPnUXIyIp+Ko7gK+6k383GALUlSWUR4muvsrtFSM9vYzQnwlTkYR5SJSZVzgscFoZ9AVFjDPwTMuEMz0BiLIc942MRFcsRonDSOrOEOj+a0b9V9gt4FkGoiSpSSpqj6QKLxhMqHQYtpNkBWw0aWqJRQEgRLfu7BbWMMZYCCFwWjk4reqKMxyREBBkhCIiZGVQmRYrtdfUgGaRj1MKi9PKYVqdG9OiDvMnaiL6QV1BlPFtwnahlsy+7QtBkhXICvBt9Oe9X8X3PaPejbd+dHXRn21pPnxUxWciYmXmA2EJISmsq9+Gy8RKBy4MhPWS7ID6Ac0yxDBxGEndZUW9nqp/70AINS4rzvQE9MQEqEmw0mExVPtNrHTggi+sG9XGVu7lo8k0GJEMY0yFlWNh5ViU2dXzUgOhCO76H5Pw9J8+V1dO0VWeAgWVDmtJSKgp5oLnGEyqdmJSdbLDvCQr6OwPJfkbam4bYVFGQBAhyQo4tsgJKurDR7f4TESszJwoCiLRb1OrF0wedp/3LmzUn0EpZNAQtsJqnDhiY2DIoOw8VQyajNzCEkystOOb3iAisur6MNXjwj8vm2G4RXfvwkb9GZQSNZUF1NVajUs9BJyplN0IC8ugymnFinnjUG7j8NwHJ/C3b/pACFDrtIJlyKiQUFPMA8sQ3QHj8oTXFEVBt19AY62zJJ5Pmc3JHCiAF58kSbj11ltRV1eHrVu3ore3F+vWrcO5c+cwfvx4/PKXv0R5ubqnvHXrVrS1tYFhGDz88MO4+uqrAQCHDx/Ggw8+iFAohEWLFmHTpk1DLrcz9eIDBs1ifWERLiuH1Qsmp1TbZcquY15sefuYKt+OriIsjGr62RcQEJERlacPVs/VcPAsfrCwUY9h1zEvtu4+iTM9AV1pd+hsL174UFX9OXlVpv7ZqW6c61dXbg6exfUXe9DRL8S1AxCn4rOxMiIKi7Ao6/0YtYkd/7uNVfj4ZHfcPUYJUZYV7Prcixc//grHvQOocdlKQkJdSl58hcBs8wVGtxff0aNHcfHFF+s/i9Ht97cOd+CfXtmPP61baFgscywy4gnqP/7jP3D48GH4fD5s3boVP//5z1FRUYE1a9bg+eefR19fHzZu3Ijjx49j/fr1aGtrQ2dnJ1atWoV33nkHLMuitbUVmzZtwvz583HPPffgzjvvxKJFi9KOm02CyqVNOhJVc2J0dZYOlgCVTl5X+2mKPQtL9EO3/cGIai5rt6i+ff4wvu0LG/ZX5VDPjGiHdR9bMUtPJruOefFA23447Va9H++AgFoXjxqXNeVYifck9puIoqgCkb5ARH/WVUzM9oFttvkCoztBJZrFakax/+/j03hk+xF8tmkJat1j3ygWUA2rR4yOjg7s2rULra2t+rWdO3eipaUFANDS0oL33ntPv97c3Aye5zFx4kRMmjQJhw4dgtfrhc/nwyWXXAJCCFpaWrBz586RDDtvxKrmWIYZMjkRqFt7mtpP68PCqoeACVH/HAiJ8IVF/Vp/UBzsg8RX6O0NRvR2Fpbo/Q72jbh+GKLK1NONlXhPYr9J84qq/8ZX2lHrturPuygUSuZ0R59BVdBnUPnhiSeewMaNG+H3D3pxdXV1weNRv2l7PB50d3cDADo7OzFv3jz9vrq6OnR2doLjONTX1+vX6+vr0dnZOeTY4XAY7e3tWcUbCoWybpOOk94+iJIMBoAsZ/aAVYG6pD/p7UN7eztOevvg5glCoUFPvoikFjUMhVQ1XFiU4juIQVYG7yOKgpPewfflpLcPTi6+Hyb6p3bNaKzEexL7HQrCMPBFFPQFBMgZlHvIN2FBwIkTJwo+brEw23yB/M55oMwOnhgrakeKCxfOx/w0He3t7Thx9gKcFgbHv/i8oLEUglQ7VyOWoD744ANUVVVh9uzZ+PTTT4e832inkRCS8vpQWK3Wom/xNXr60HemB4ocNUSVhv5Prh4IZtDoKcfMmTPR6OmDdyAEe4zxq4UV1RIcNlUNZ+UkiJokXXtrom8bE3NfQBDR6LHpc2z09OFsVx+cMf0Ikgwry+htjMZKvCex30wZCEfQ7RMgFThJmW3Ly2zzBUb/Fl9NTW3ctZkzZ4Ic3I+aMjGvn1Glzojttezbtw/vv/8+mpqasH79enzyySfYsGEDqqur4fV6AQBerxdVVeoD8/r6enR0dOjtOzs74fF4kq53dHToK7BS596FjXBZOdW1PKrQS4cCNaG4rJwuTrh3YSMikoKAIEJR1D/dNi56WFa9VmYfTF6xknNA9S3T2iUq9NS+EdePrEA1qk0zVuI9w1X+ua0WNJTb4eQ5FFfAS6GUPqqLhHkUfMAIrqDuv/9+3H///QCATz/9FL/97W/x1FNPYcuWLdi2bRvWrFmDbdu2YfHixQCApqYm3H///Vi1ahU6Oztx+vRpzJ07FyzLwul04sCBA5g3bx62bduGO++8M6+xxqv4vs6Lig9Q7YKeap2nq+YsLIHbxukqPiMYoh6WfXj7YUzcrSrkYo1fnTyLGpcV531hnB8Ig2cJalxWcAyDb3qDuhowVsWnteNZJq7fa2Z48I9XVuOtUyLO9gRwUbULK6+oGjS0NTCtNbonUcVnpDrU+khU/vEcg7pyGwbCEfT4hIwqvGZCLiXpC81oipVSPHoDEdS4aIIaUdasWYMf//jHaGtrQ0NDA5555hkAwLRp07B8+XLccMMNYFkWmzdvBsuqSpZHH31Ul5kvXLgQCxcuzFs8cT54ZGgfvGy5ZobHUN2mqfMEUUJXtEqmJA2eaB9fYRv0xlsxC6+suSpO0VdfZtNVdhf8AsrtFsxsKEup1tPaVdgtcZ57V0xw4q6l8VsGa1PMY6h7Uo21oe0gCIAyuyVpfK1ft9UCh4XDQCiCvmAkp22/WLPaMhuHLn+4ZD0AR1OslOLS7RcwrS7ZIX4sU5AEdeWVV+LKK68EAFRWVuL3v/+94X333Xcf7rvvvqTrc+bMwRtvvDEiscX64MmyDJZh0vrg5QtNndflE8Fg0BtPUQCeJYbeeLGKPkBV352L+t01lNv1a4l+ekbttHs2X53sa5aPecXF2BsEFKA+TYyAemiywsHDZVUTVX9IHFaiGuky6vlkNMVKKS49AfNt8Zle7+sXpKRnQ+l88PLFmZ4A7BYWQlQlB0SfH0GViRt542ltYhFlOelDPNFPz6hdJp57w8FoLElWIMrxe5rpxudYBpVOK8ZX2FHl5MGzTFbPqL7tD8Jmif+vXaoegKMpVkrxCEUkBATJVD58AE1QcPJs0vmkdD54+WJipQPBiASeZXRRAyGqCE9dRSV742ltYuEYJqnsR6KfnlG7bD33MsVoLJYhulN7NuNzLIMKB4/xlXbUl9viStino6HMjlDCQ75S9QAcTbFSikdvQPPhownKVKxeMBmygmjJd/Wbfq5efJmgqfPcNg4ylKgXIPQ6TUbeeJko+lKr9ZS09+R7XrFjuawc3Lb0MaaDEAI7z6GuzIpqJz+kGvJ7V0yEKCsIRiQoUJLK1ZcSoylWSvHo9ms+fOY5pAtQs9i4ku++sAgXz+ZNxZeOa2Z48BjUZzai1A9BUsDbGdQ4eRBC4AuL8Lht+of4sn//M051BSDJMniOhYNnMc3jTlkaHgBWPv+JrpprvXS8ofKuvb3LMD4jJV4qK6NU88q2fP1QEEJQ7uBhtbDoC0TUhGdw32gqoz6aYqUUj17NKNZkW3wj7sVXLArpxZfth3ni/Zr56pfeAQiiDAtL4HHboCgKzvvC6AtG9HIdgLoFWemw4MmE6rxav3871wO/oDpY2Cws3DYOPMca+uW9+O4evHVKTDKifW7XCYiyeiC33GGBhTVuP9xElg9CgoSegJC0pTgUZju4arb5AqP7oK6RWezbRzrwv182l1EsQFdQOZNOwp1OXq7df+qCD3893Y1ym+p7BwL4BQU9/ggYhoAlajl3BQALApYhIIqSVNY9VrbuD6vl2CUAYVGG4BdQ7eSTVHO7jnnxfz7tgtNujZOE90XLZ1tYBpICdPkiqHbBsH02c883Np5FvcWGvmAEvQFhSK9DCmU0QAjBv7/7hf7zuqXT0RMwnw8fQJ9B5YyRmWs689TE+wdCqvlqb1BNSKrcHVAIwBICQRos664p4Ui0JHysCk7rdyCkbnsRaOazChio1xNVc4lmsQ6egy+sPh9iCQGBWrKeEKAvEEnRPvO5jwSEqNL0+nI7bNzIClsolGLR4zdfLSiAJqicyVbCnXi/IA0WKdTl5kBcNV7dXk8Z/DOxrHucbF27SAb7CYtykmruTE8A1oQqoVK0kGHsxi8hQFgybl8o+fpQ2Cws6sttKLNbqG0SZczR7RfgtnGwmKwSgLlmOwJkK+FOvJ9n1TIcDBlMCgSD5dh5jokrnyFFzz25bVycCi5Wtq7LzqPJSVIUsAxJUs1NrHQgLMXvi6mScECGAllWoCiKWu6aYQzbF0q+ngkMo9o+ecpssNLVFGUMMRASUWYz1/YeQBNUzmQr4U68321TzVcr7BbI0QOtDAMQRU0s9WVWeNxWcAzAsQSEEEzzuJIEErGydUKiCQ9qsmMIwQ+vmZL0XCjRLFaThFc4eFQ7eXCsWqI9ffvCyNezwWnlMK7CBk+ZlSYqypggFJFgH+GzmaUIFUlgUIl20tuHRk9fWiWakWot1sw1nYRaa9vtDyEYUVcnLiuHFXPr0dEv4EvvAPxhEaIEgFFFCt3+MAhRD6xO87hT9m0kW9ewsAQfn+zG3GPeuLbXzPBgyRQnXv/cr5eOX71gMuZOqIgzp/ULEp7bdQLP7TqBydUOPLB8pt6Pw8Ikyd+1Z1CFUvMZQQiBy2qBk+fgE0T0ByIIi9lX86VGrpRSICCISdvpZsD0CSpWiebmSVolWkrVWtTMNZNxBFFCWFSih00JnFYWe7/uw2MrZgFAXHn3wfLqqoP5UCq5WGPaxFLxRm13HfPivRN+1Lqt+E7UA65t3znMnVChm9NubDuInmjJegA4ft6PDW0HcddVk9C271zUuNaKc70hCKKMWhdfcDVfOgghcFstcPGqv5+mhsoEauRKKRUCgjlXUKbf4stGiZaLai1WZcdAVesxjFpCXesjsf/hlFfPJlYjFV/sPVt3n8RASATLqCXrWYYBGz1E/MKHp/T+L/iEaFl71eS2GGq+oSCEoMzOY1yFHeUOa0ZCilgjVwL1T44h+M/Pzox4vBRKLMGIBAdNUOYjGyVaLqo1I3NYzRRW6yOVwk8zjh3OeOliNVLxJZrTirIcJ9IgUSsmvyDp/WtzSmVyW0pYWAZlPFDjtiZ5GCZCjVwppUJQoAnKlGSjRMtFtWZkDquZwmp9pFL48THS0mzHSxerkYov0ZyWY5g4ybnmaOHkWb1/bU6pTG5LDVWcYkF9uS3t2Slq5EopFQKCBJsJn0GZPkFlo0TLRbVmZA4ry2oJda2PxP5zKa+eSaxGKr5Ec1q3jYMkK1F5uwwpKuxYvWCy3n+Ni4+WtTc2uS1VrByLhgobaly84WqKGrlSSgWzbvGZXiQRq3476Q2j0WPLSCmXrelpbFt/uAeBqIrPH5awesF39D5i+zcqr/7dxips3X1SLd0+RLl1t1VNbH3BiGGsiSXfE++5ZoYHT7bOw5a3j+HkBT8AYGrNoIovVu03tdapm9xaGGJYXj4bCuXxpz2bsvMcevwC/OFBA1pq5EopFQKCmHG5mbEENYvNsU22JKrrjEq0D7ftcPrO95xzmV8++0hHujkPhCPo8QkQx5CxHzWLzY1imsWKkrrTMv2Rt/GjxdOwbunIVlkoNUy/xVdo8qEETKe6K7Y3Xj5iKOY83FYLxlc6UOGwDFl3ikIZCTSz2H9/9wtwLAMxuoagMnPKiJMPJWCqtqXgjZePGIo9D5YhqHJaMa7CYcptFUppERBUMZIZn0HRBFVg8qEETNW2FLzx8hFDKcwDUH0Q68qsqHRQA1pK8QhGE5QZnSRogiow+VACplPdFdsbLx8xlMI8NAghqHRaUVdmA0f3/ChFQPuyZsbVvPlmXGQyVQIaqdgOne3FBV8YAUECIcD4Mituv+I7caq+y75Tjp3Hzsd56wHx5d+1Cr5fdPYjFJHAMl8DUD37pteVxcWTrZouF6XjUH0kzqOQ1XsdVg71LIMuXzjrCr4USi5oW3x23nzrCariy7FNvohNBC6eRZdfQJndAlGS0dkfRijG6FR1KFfdyp08C0+ZLcG7j0eNy4pgREJfMAICoMxugd3C4oIvjPM+AWU2Fr6wBFlWICkAS9RyFdVOHpKsoNrJ47wvDF9YQpXTgmqnNe9qumzfn0Sfwm5/BC4rm5RUhyKXf2dFUdDtF9AfjGC0/OJQFV9uFFrF197ejrfPqtt565ZOx19OXMD//L+f4pV7rsJ3p1QXLI5SwHwpuQTRPny9AyFU2C043R1ATyACX0jEt31hvZKuhgK1wKGsAH5BSuvd5wuLGAiJSRV8+4KqJ6CsqAlPAcCAoDegGqqe7g4gFJEhKwq6fBH4wmJRPfZilX2+sIguXwSyoiAUkXVz2l3HvCMeByEE1S51y89sxeMoxSFIRRKUYpIoq5Zk1e38vC8MEq22m4rY14y8+6RojanEe7QKvlrz2Mq7TNRvT5BktfQ7Ac4PhAEUz2MvVtl3fkB9X1hCIEhyURKnw8phXIUdbhsVUFBGlsFnUDRBUYpAoqxa87PTk0iaBBX73N7Iu0+tkMsk3aNV8NWaJ47Ds4zusRdrAlssj71YZZ9mThvr/VeMxMkyBLVuK2rLrFRAQRkxtGdQ1IuPUhQSZdU1Lqu+9SanWD5pV508m9a7z2Xl4LZxSRV8y+2qJ2Bs5V0ZilruXVFjqHFZIUP12LMwpKhqulhln4VRV5kyFNS4rACKa07rslrQUGGH04QqK8rIQ7f4KEUlUVbNsQQVDgsmVNohKQDHACyDuK0kQoBb5jfg2ZWXwuO2oS8YwUXVLvyoaSom17jQF4zA47bhqdZ5eLJ1nn7P5Br1nhn15Si3cbBZGJTZODitHMptHKZ63KhwWMCxBG4bh2onD4YQOKwcPG5bUQQSQFTZt2IWPG4bHFYODFEFHVryLbY5rYVlUFduQ61r6DIeFEo2DB7UNd8XIPPN2IBsSr6na5+J/HnXMW+c+apWQj2xbPwjzRfr/npbd5/E4XODBrMuK4fFM2rR0S/o8vLbLpuAj0924w97z2JipQOXT6rAzmPncfeLe3S5+dolg1V/10b/fPHdPXjrlJgkZ3/hw1O6VP2H10zB2iXT4+YwXCPXX733RVzfalzJ/mKpxkiUvw9Xyj5SuO0W8BYG3T6BytEpeUH7f5RYm8wMmF5mHitfJpIAheWzklJnY2xqVEJdVoAKhwVPtc5Lm9Rix9Ck4h43j2qnNUlefrYngN6gCJYBOIboir8fNU1NSjQPtO2H027VY0+UpefDkFbjV+99gWfePw6GQBdqpIqrWGax+UJzke8NCGlFLoWAysxzo9hmsVvePoaXPvka7Y8vK1gMpYL5UnICuRqTZlsyPlUJ9XTjJY6hScX7g6KhvLw/JAJQRQQMYdTy8gR44cNTBv3Gl3xPlKXn05D2hQ9PgSGIxjNUXMU1vc0VQggqHDzqy+1piyJSKIkkmsUGTFpNF6AJKmdj0mxLxqcqoZ5uvKFKwSf+rH1jj10bM0Q9M5XYb2LJ90RZeuJ8cnm//IKU5BCeKq5im97mC5uFRX25DRXUz48yTIKCZEonc4AmqJyNSbMtGZ+qhHq68YYqBZ/4s5YEYhOhrKiKv8R+E0u+J8rSE+eTy/vl5Nmk7a5UcZWCWWy+YKLu6OrhXpqmKNlh1mq6AE1QORuTZlsyPlUJ9XTjJY6hScXL7JyhvLzMpmpf1EO+slpeXoHuyxffb3zJ90RZej4NaVcvmAxZQTSeoeIqDbPYfOKwcmgot8Nl5ehqipIxAUEypZM5QBMUrpnhQeul43F+IIyTPRGcHwij9dLxGT+Mj5U/a9Luy75TjrX/uR9THvoj5j76Dn713hf6vXdeNQk8y0CQFERkBfVl1rQCCaMxNKl4uc2CL70+dPsjGFduQ4Xdgr5gBDMbynHL/AY4eQ6irG6PJQoRtH7/8cpqvV+eZVDj5CErCs4PhNHRH0qSlhvNN1Pxwtol0/GjpqmwW9gh4xruGKUOxzLwlNlQQw/3UjLEzFt8ppeZ7zrmRdu+c6h1W+FxECgsj7Z95zB3QkVWSUq7N1apxjHq8vyZ948DAOZOqEDbvnNoqLDFqdOyHSM27gmVdr2vQETG4zfPzuqD/IoJTty1dGaccq6h3K7HZiTfTowlG9YumW4oK08klzFGA26rBXaORY8/Al949BjPUgpPICLC47YVO4yiYPoVVL4VY+mUavkcK99xjwXl3GiDYxnUlqnPpnhqPEtJgZlXUKb/rci3YiydUi2fY+U77rGknBttOKwcxlfaUe3kqQsFJYkgfQZlXvKtGEunVMvnWPmOe6wp50YbhBCUO3iMr7CjzG6JU2BSzE2AqvjMS74VY+mUavkcK99xj1Xl3GiDYxnUuKwYV0HVfhSVgIm3+EwvkrhmhgetUe85X1iEy6pg9YLJOYkAABj6ze065oXDwuBUl7pt1ljjxCPNM9KWVwfU50NfegcgiHJcWfZE/75c/OiyLdWeylNwuOPn4u83FrFyLDxlLAJhEb2BCEIi9fUzI5KsQBBlOCzm/Kg256xjyIeKLxEjpVqsSm6ax4VgRIpzUIh9vcJugXcghA1tB0EAcCxBXyACECAYAU5d8GFj20FUO3n4BClvH+iZKueMPAWPn/djQ9vBISXzqfpLnPvm14/gsWhMZsZh5WDnWQyEIujyC2lrg1HGHtq2u50352aXOWcdQ6HUa0ONY/S65ovXHxTBRB0eEsuyx36gF6LkuRbrcDwF0/VHFYSpIYSgzM6jvsxGz06ZAEVRsG7pdKxbOh0DwQgAwG7CUhsATVAFU68NNY7R65ovnlZBFkguy16MD/Thegqm648qCIfGznPUfNYExJrFav6aDqriMyeFUq8NNY7R65ovnlZ6HUguy65RyA/04XoKpuuPKggzg+fUwoguqzm/UZsN7feCqvhMSqHUa0ONY/S65otXZucgR1dTiWXZNQr5gT5cT8F0/VEFYeawDEGt24pKB5Wjj3W0aro2mqDMSazv24CgjJjv21D+ckava+XaL6p2odyhFhBMLMtejA/0a2Z48GTrPEzzuEAIASEEU2udwxJIaP2NVe+9kYIQgkqnFQ1ldMtvLBPUyr2bdIuP7hPkiaFk0pnIqBNVdKnKoxtJvLUS8enGir3u4lkQQtDtCyaVuR9OrMN5T4zuefzm2QBU4YRWzt7skvN02HgWDRZbyVTvpeQXbQXlMKlIwpyzjiFW4uzmybAkzkPJpIcjo05lOnvqgg97v+6Lk6sHIvKQsbSe7UXbvnOwsAQsUWXhAFDrYOLiAZAXyXcmc04nrS+zW6jkPEO06r12nkW3T0h6nkcZvQzKzM25gjL9Fl8+JM7DkZAPNUYq09nXD3UMa6wXPjylX7/gE8ASApYh6A3JcX3kS/KdST/ppPVUcp49Vk6t3lvrslJPvzFCUBAB0ARlWvIhcR6OhHyoMVKZzkqyMqyx/DGGk5psnRAgEt0T0vrIl+Q7k37SSetzHd+sEELgtluoVdIYIWDyZ1CmT1D5kDgPR0I+1BipTGdZhgxrLCfP6tc12bqiAJZoFtT6yJfkO5N+0knrcx3f7FiihRFry6ywmtQmZyygJSi6gjIp+ZA4D0dCPtQYqUxnV8ytH9ZYqxdM1q/XuHhIigJJVlBhY+L6yJfkO5N+0knrqeQ8P7isFtQ6OZTZLHQ1NQoJRdSdFCtnzo/qEf1q1dTUBKfTCYZhwLIsXnvtNfT29mLdunU4d+4cxo8fj1/+8pcoLy8HAGzduhVtbW1gGAYPP/wwrr76agDA4cOH8eCDDyIUCmHRokXYtGkTSJ4OgFwzw4PLDpzF64c6IMkKWEbEirn1aR/IG6nT0hm3ZmvECgxtOrt190l82dkPQVLAc4z+jCbdWHMnVOjXp9Y6dRWfx22Li+cxAP/2Vju+9PoAqKa2w3lfHwOw5e1jej+Tqx2G98TG+kjzxUDCte82VlFVXy4oMmrcVjitLLp8gu5OQCl9AtGt+Xx93o02iKKMnP1kU1MT2traUFVVpV/7+c9/joqKCqxZswbPP/88+vr6sHHjRhw/fhzr169HW1sbOjs7sWrVKrzzzjtgWRatra3YtGkT5s+fj3vuuQd33nknFi1alHbs9vZ2zJw5c8gYY9VyRFGgEAJZAX7UNNWwNHms8iy2bHuhz+3kKw6j9ylffeejn5F4vzP9vzFWiJ2vLCvoDQroC0bGtPHsiRMnMGXKlLz0VePiUWbn89JXJrS3t+Pts+qWnncgjHePdmLPw0sKNn4pUfB1486dO9HS0gIAaGlpwXvvvadfb25uBs/zmDhxIiZNmoRDhw7B6/XC5/PhkksuASEELS0t2LlzZ97iiVXLEULiSrQbUSrGpiMZRyGVfIWKhaLCMARVTisaqKdfyaKZxf5T01QEBNG0NkdAAc5B3X333SCE4I477sAdd9yBrq4ueDzqN1+Px4Pu7m4AQGdnJ+bNm6e3q6urQ2dnJziOQ319vX69vr4enZ2dQ44bDofR3t4+5H0PLyg33JtXAMP2t08jYBkHSEwrBTwkWclovHyRzzgS789X3/noZ6Te70L+W5UCqear2lUpUDC2llO1Thb9Hafz0leAYQoq2xcEAYBavPKZ711SsHFLkRFNUK+88grq6urQ1dWFVatWobEx9YNuo51GQkjK60Mxf/78jGLMdqenVHaGRjKOfPWdj35K5f2mUCiFZ0S3+Orq6gAA1dXVWLp0KQ4dOoTq6mp4vWrdIq/Xqz+fqq+vR0dHh962s7MTHo8n6XpHR4e+AqNQKBTK2GXEElQgEIDP59P//tFHH2HatGloamrCtm3bAADbtm3D4sWLAaiCijfffBOCIODMmTM4ffo05s6dC4/HA6fTiQMHDkBRlLg2FAqFQhm7jNgWX1dXF374wx8CACRJwo033oiFCxdizpw5+PGPf4y2tjY0NDTgmWeeAQBMmzYNy5cvxw033ACWZbF582awrPpw8NFHH9Vl5gsXLsTChQtHKmwKhUKhlAgjKjOnUCgUCmW4mPN4MoVCoVBKHpqgKBQKhVKSmCZB7d69G9dffz2WLl2K559/Pul1RVHw05/+FEuXLsVNN92EI0eOZNy2FBnufL/99lvceeedWL58OZqbm/H73/++0KEPm1z+jQH1WWlLSwvuvffeQoWcM7nMub+/H2vXrsWyZcuwfPly7N+/v5ChD4tc5vu73/0Ozc3NuPHGG7F+/XqEw+FChk4ZDooJEEVRWbx4sfL1118r4XBYuemmm5Qvv/wy7p5du3Ypd999tyLLsrJ//36ltbU147alRi7z7ezsVA4fPqwoiqIMDAwo1113XcnPV1Fym7PGb3/7W2X9+vXKmjVrChn6sMl1zj/5yU+UP/zhD4qiKEo4HFb6+voKGn+25DLfjo4O5dprr1WCwaCiKIqydu1a5dVXXy34HCjZYYoV1KFDhzBp0iRMnDgRPM+jubk5yS5Js2AihGD+/Pno7++H1+vNqG2pkct8PR4PZs2aBQBwuVxobGzMyLmj2OQyZ0A9X7dr1y60trYWI/xhkcucfT4fPvvsM32+PM+jrKysGNPImFz/jSVJQigUgiiKCIVC9DzlKMAUCaqzszPOLkmzUUp3j2aplEnbUiOX+cZy9uxZtLe3x1lQlSq5zvmJJ57Axo0bwTCj51cilzmfOXMGVVVVePDBB9HS0oJNmzYhECjtopC5zLeurg7/8A//gGuvvRYLFiyAy+XCggULChY7ZXiMnt/GHFAysEtKdU8mbUuNXOar4ff7sXbtWjz00ENwuVz5DzLP5DLnDz74AFVVVZg9e/aIxTcS5DJnURRx9OhRrFy5Etu2bYPdbi/556u5zLevrw87d+7Ezp078d///d8IBoPYvn37iMVKyQ+mSFCpbJTS3aNZKmXSttTIZb4AEIlEsHbtWtx000247rrrChN0juQy53379uH9999HU1MT1q9fj08++QQbNmwoWOzDJdf/1/X19frqeNmyZTh69GhhAh8mucz3L3/5CyZMmICqqipYLBZcd911o0IUYnZMkaDmzJmD06dP48yZMxAEAW+++Saampri7tEsmBRFwYEDB+B2u+HxeDJqW2rkMl9FUbBp0yY0NjZi1apVRZpB9uQy5/vvvx+7d+/G+++/j1/84he46qqr8NRTTxVpJpmTy5xra2tRX1+PkyfVsiUff/xx3uonjRS5zHfcuHE4ePAggsEgFEUZFfOlFKDcRinAcRw2b96M1atXQ5Ik3HrrrZg2bRpeeeUVAMDKlSuxaNEi/PnPf8bSpUtht9vxxBNPpG1byuQy371792L79u2YPn06br75ZgDA+vXrhywQWWxymfNoJdc5P/LII9iwYQMikQgmTpyIn/3sZ8WaSkbkMt958+bh+uuvxy233AKO4zBz5kzccccdxZwOJQOo1RGFQqFQShJTbPFRKBQKZfRBExSFQqFQShKaoCgUCoVSktAERaFQKJSShCYoCoVCoZQkNEFRKBQKpSShCYpCGQVccsklxQ6BQik4NEFRKCWGKIrFDoFCKQlM4SRBGRucPXsWq1evxrx583D06FFMnjwZW7ZsQXNzM5YvX45PP/0UAPD0009j0qRJhn088MADcLlcOHz4MM6fP4+NGzdi2bJlAIAXXngBb731FgRBwNKlS7F27VoAwHPPPYcdO3agoaEBlZWVmDVrFu6+++6kvru6unDPPffgtddew7Fjx3DzzTfjgw8+wLhx47BkyRLs2LED3d3deOihh9Dd3Y2qqir87Gc/w7hx4/DAAw+gvLwcR48exaxZs/D9738fGzZsgCiKuPrqq/UxvF4v1q1bB5/PB0mS8Oijj+Lyyy/P91tNoZQEdAVFGVWcOnUKt99+O3bs2AGn04mXX34ZgFq7qq2tDX//938/pIWR1+vFyy+/jK1bt+Lpp58GAHz44Yf46quv0NbWhu3bt+PIkSP47LPP8Le//Q1/+tOfsG3bNjz77LM4fPhwyn6rq6sRDofh8/mwZ88ezJ49G3v27MG5c+dQXV0Nu92Oxx9/HC0tLdixYwduuukm/PSnP9Xbnz59Gr/73e/wwAMP4F//9V+xcuVKvPrqq6itrdXveeONN7BgwQJs374d27dvx4wZM3J5OymUkoYmKMqooqGhAZdddhkAYMWKFdi7dy8A4MYbbwQANDc348CBA2n7WLJkCRiGwdSpU3HhwgUAwEcffYSPPvoILS0tuOWWW3Dy5EmcPn0ae/fuxeLFi2Gz2eByuXDttdem7fuSSy7B3r178dlnn+EHP/gB9uzZgz179ugx79+/X4/15ptv1uMHVEdxlmX1+5qbm/X7NObMmYPXXnsNzz77LL744otRUQqFQhkuNEFRRhWJ9X+GU5uL5/mka4qiYM2aNfrK5N1338Vtt92Wdd+XX3459u7di2+++QaLFy/GsWPHsHfvXlxxxRWG98fGb7fbU76mccUVV+Cll15CXV0dfvKTn2Dbtm1Zx0ihjBZogqKMKr755hu9js+bb76pr0zeeustAMAf//jHYSneFixYgFdffRV+vx+AWmuoq6sLl156KT744AOEw2H4/X7s2rUrbT+XX345Xn/9dUyaNAkMw6C8vBy7d+/GpZdeCkBdYb355psAgB07dujxJxJ73+uvv65f17YLb7/9dtx66604cuRI1nOlUEYLVCRBGVVMmTIF//Vf/4XNmzfjoosuwsqVK/HSSy9BEATcdtttkGUZv/jFL7Lud8GCBThx4gS+973vAQAcDgeefPJJzJ07F01NTVixYgXGjx+P2bNnw+12p+xnwoQJAKCvmC677DJ0dHSgvLwcAPDwww/joYcewm9+8xtdJGHEpk2bsGHDBrz44ou4/vrr9et//etf8Zvf/AYcx8HhcGDLli1Zz5VCGS3QchuUUcPZs2fxgx/8AG+88Ubc9aamJrS1taGqqmpExvX7/XA6nQgGg/j+97+Pxx9/HLNmzRqRsSgUyiB0BUWhDMHmzZtx/PhxhMNh3HLLLTQ5USgFgq6gKGOSX//613j77bfjri1btgz33XdfXvr/l3/5F+zbty/u2l133YVbb701L/1TKBSaoCgUCoVSolAVH4VCoVBKEpqgKBQKhVKS0ARFoVAolJKEJigKhUKhlCT/H1TQq/2sLGnIAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sns.jointplot(train_data[\"pp_neg_words\"], target_data['Prediction'], \n", " kind='reg', ylim=5000, height=6, space=0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "** Question: ** Change the features you display to explore relationships. What conclusions are you drawing from this exploratory analysis? Are you going to keep all the features in your predictors?" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__Answer:__" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 2. Data transformation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2.1 feature engineering\n", "This notion includes all kinds of manual modification and creation of features. All are of course problem dependant.\n", "\n", "* __Encoding categorical features:__ if a K-categorical feature is not ordered (categorie 1 is as far to categorie 2 as to categorie 3 etc), then it must not be encoded by a single integer specifying the categorie. We can encode such feature by creating K-1 binary features encoding the belonging to k-th category. (see [link](http://scikit-learn.org/stable/modules/preprocessing.html#encoding-categorical-features))\n", "\n", "* __Feature binarization:__ some continuous features can gain predictive power when binarized. For exemple, in some prediction tasks, weekdays could be split into $working\\ days$ and $not\\ working\\ days$. (see [link](http://scikit-learn.org/stable/modules/preprocessing.html#binarization))\n", "\n", "* __Imputation of missing values:__ there are multiple strategies to input missing values when required (see [link](http://scikit-learn.org/stable/modules/preprocessing.html#imputation-of-missing-values)).\n", "\n", "* __Dealing with time features or other periodic features:__ when considering the hour of the day as a feature, we can't encode it by the an integer between 1 and 24 as midnigth is as close to 11pm to 1am. An easy strategy to encode periodic features is to apply this transformation $x \\mapsto \\sin(\\frac{2\\pi x}{T})$ (T is the period). In the case of the hour of the day, it is $x \\mapsto \\sin(\\frac{2\\pi x}{24})$. \n", "\n", "* __Generating new features:__ you might want to combine the existing features into new ones that seem informative to you. It can be useful for exemple, notably when working with linear models, to generate polynomial features from the original ones. You can also use external data to transform your features; for instance, if one feature is a date, adding a feature that qualifies whether the day is a working day, a weekday or a holiday can be useful. \n", "* ...\n", "\n", "In many practical cases, feature engineering is the key to obtaining a huge improvement in performance." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "** Question: ** How do you want to engineer the features of the challenge (first, you can start encoding the categorical features)? Keep thinking of this question all along the challenge." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let us encode weekdays as a categorical feature rather than a periodic one. Remember this transformation later in the challenge: does it help your performance?" ] }, { "cell_type": "code", "execution_count": 85, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
weekday_1weekday_2weekday_3weekday_4weekday_5weekday_6nb_words_titlenb_words_contentpp_uniq_wordspp_stop_words...pp_neg_wordspp_pos_words_in_nonneutralave_polar_posmin_polar_posmax_polar_posave_polar_negmin_polar_negmax_polar_negsubj_titlepolar_title
200010000098430.53582.092000e-09...0.0192300.71430.44370.033331.0-0.3160-0.8000-0.050.00.0
200101000098050.41962.165000e-09...0.0257100.53490.30810.050000.8-0.3463-0.7143-0.100.90.3
200200000081450.75941.163000e-08...0.0075190.83330.36730.136400.5-0.2000-0.2000-0.200.00.0
2003010000122010.63599.259000e-09...0.0270300.73680.37210.136400.6-0.4000-0.4000-0.400.00.0
2004010000136730.46092.500000e-09...0.0214400.56250.35000.050000.6-0.2435-0.8000-0.100.00.0
\n", "

5 rows × 48 columns

\n", "
" ], "text/plain": [ " weekday_1 weekday_2 weekday_3 weekday_4 weekday_5 weekday_6 \\\n", "2000 1 0 0 0 0 0 \n", "2001 0 1 0 0 0 0 \n", "2002 0 0 0 0 0 0 \n", "2003 0 1 0 0 0 0 \n", "2004 0 1 0 0 0 0 \n", "\n", " nb_words_title nb_words_content pp_uniq_words pp_stop_words ... \\\n", "2000 9 843 0.5358 2.092000e-09 ... \n", "2001 9 805 0.4196 2.165000e-09 ... \n", "2002 8 145 0.7594 1.163000e-08 ... \n", "2003 12 201 0.6359 9.259000e-09 ... \n", "2004 13 673 0.4609 2.500000e-09 ... \n", "\n", " pp_neg_words pp_pos_words_in_nonneutral ave_polar_pos min_polar_pos \\\n", "2000 0.019230 0.7143 0.4437 0.03333 \n", "2001 0.025710 0.5349 0.3081 0.05000 \n", "2002 0.007519 0.8333 0.3673 0.13640 \n", "2003 0.027030 0.7368 0.3721 0.13640 \n", "2004 0.021440 0.5625 0.3500 0.05000 \n", "\n", " max_polar_pos ave_polar_neg min_polar_neg max_polar_neg subj_title \\\n", "2000 1.0 -0.3160 -0.8000 -0.05 0.0 \n", "2001 0.8 -0.3463 -0.7143 -0.10 0.9 \n", "2002 0.5 -0.2000 -0.2000 -0.20 0.0 \n", "2003 0.6 -0.4000 -0.4000 -0.40 0.0 \n", "2004 0.6 -0.2435 -0.8000 -0.10 0.0 \n", "\n", " polar_title \n", "2000 0.0 \n", "2001 0.3 \n", "2002 0.0 \n", "2003 0.0 \n", "2004 0.0 \n", "\n", "[5 rows x 48 columns]" ] }, "execution_count": 85, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Get the weekday data and encode it using a dummy categorical encoding\n", "weekday_data = pd.get_dummies(train_data['weekday'], prefix='weekday', drop_first=True)\n", "\n", "# Get the rest of the data\n", "other_data = train_data.drop(['weekday'], axis=1)\n", "\n", "# Create a new data set by concatenation of the new weekday data and the old rest of the data\n", "training_data = pd.concat([weekday_data, other_data], axis=1)\n", "\n", "# Print the created training data.\n", "training_data.head(5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__Question:__ Repeat the process for the other categorical variable(s) in your data. Do not forget to apply your transformation to the test dataset as well!" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# TODO" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2.2 Preprocessing data: standardization\n", "You might want to consider standardizing your data as seen in Lab 02." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2.3 Unsupervised projection\n", "If your number of features is high, it may be useful to reduce it with an unsupervised step prior to supervised steps. \n", "\n", "We have already worked on a widly used dimentionality reduction method in `Lab 1`, the Principal Component Analysis. \n", "\n", "We will discuss in `Lab 5` the combinaison of dimentionality reduction and a predictor." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2.4 Feature selection\n", "See [scikit-learn's documentation](http://scikit-learn.org/stable/modules/feature_selection.html).\n", "\n", "It may be useful to select a restricted number of important features to increase their predictive power. When the number of feature is particularly bigger than the number od instance, this issue of major importance.\n", "\n", "Multiple strategies can be considered depending on the problem such like:\n", "* considering the most varying features, condering the most correlated features to the output etc\n", "* using feed forward selection procedure: recursively adding features one by one by incresing improvement of performance\n", "* using embbeded feature selection like lasso or ElasticNet (see lab 5)\n", "* computing feature importance (via bagging procedure like [randomized lasso](https://stat.ethz.ch/~nicolai/stability.pdf) or bagging trees (see lab 5) for exemple) and thresholding the feature.\n", "* ..." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 3. Model evaluation and model selection" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3.1 Our first classifier: Gaussian Naive Bayes\n", "Documentation: http://scikit-learn.org/stable/modules/generated/sklearn.naive_bayes.GaussianNB.html \n", "\n", "In order to start thinking about model evaluation and model selection, we will convert the regression problem of the KaggleInClass challenge into a classification task in order to to work with the first classifier we studied in class: the Gaussian Naive Bayes.\n", "\n", "Our goal here is to try to classify points between astonishingly and not astonishingly shared articles. Based on the distribution of the number of shares, the separation can be set at 1800 shares." ] }, { "cell_type": "code", "execution_count": 88, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(2991,)\n", "(2009,)\n" ] } ], "source": [ "# Transform output into a classification task.\n", "y_clf = np.where(y_tr >= 1800, 1, 0)\n", "print(np.where(y_clf==0)[0].shape)\n", "print(np.where(y_clf==1)[0].shape)" ] }, { "cell_type": "code", "execution_count": 89, "metadata": {}, "outputs": [], "source": [ "X_clf = training_data.values" ] }, { "cell_type": "code", "execution_count": 90, "metadata": {}, "outputs": [], "source": [ "# import Gaussian Naive Bayes\n", "from sklearn.naive_bayes import GaussianNB" ] }, { "cell_type": "code", "execution_count": 91, "metadata": {}, "outputs": [], "source": [ "# create a Gaussian Naive Bayes classifier i.e. an instance of GaussianNB\n", "gnb = GaussianNB()" ] }, { "cell_type": "code", "execution_count": 92, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "GaussianNB()" ] }, "execution_count": 92, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# fit the classifier to the data\n", "gnb.fit(X_clf, y_clf)" ] }, { "cell_type": "code", "execution_count": 93, "metadata": {}, "outputs": [], "source": [ "# predict on the same data\n", "y_pred = gnb.predict(X_clf)" ] }, { "cell_type": "code", "execution_count": 94, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Number of mislabeled points out of a total 5000 points : 1963\n" ] } ], "source": [ "# compute the number of mislabeled articles\n", "print(\"Number of mislabeled points out of a total %d points : %d\" % \\\n", " (X_clf.shape[0], (y_clf != y_pred).sum()))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note than all predictors implemented in the sklearn library are trained and applied via the `fit` and `predict` (or `predict_proba`) methods.\n", "\n", "**Question:** What are the parameters of the model we have trained? How many of them are they? How can you access them?" ] }, { "cell_type": "code", "execution_count": 95, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "{'priors': None,\n", " 'var_smoothing': 1e-09,\n", " 'n_features_in_': 48,\n", " 'epsilon_': 47.915030130169605,\n", " 'classes_': array([0, 1]),\n", " 'theta_': array([[ 1.93580742e-01, 2.05951187e-01, 1.87228352e-01,\n", " 1.40421264e-01, 4.78100970e-02, 4.71414243e-02,\n", " 1.04881311e+01, 5.45836844e+02, 5.34619425e-01,\n", " 2.97559394e-02, 6.78008526e-01, 1.00320963e+01,\n", " 6.79271147e+00, 4.03610832e+00, 1.17953862e+00,\n", " 4.01036443e+00, 7.08793046e+00, 3.19324641e+00,\n", " 2.41805416e+01, 9.28673353e+02, 2.70002006e+02,\n", " 1.27069137e+04, 7.54202508e+05, 2.55922586e+05,\n", " 1.01061819e+03, 5.12257472e+03, 2.91886433e+03,\n", " 3.02787563e+03, 7.79266332e+03, 4.90240328e+03,\n", " 1.72781849e-01, 1.52756931e-01, 2.46015109e-01,\n", " 2.06135426e-01, 2.22310033e-01, 4.37093310e-01,\n", " 1.17109337e-01, 3.90776316e-02, 1.66966225e-02,\n", " 6.77679445e-01, 3.51399733e-01, 9.54050585e-02,\n", " 7.45757773e-01, -2.52517482e-01, -5.11862414e-01,\n", " -1.03064072e-01, 2.82964510e-01, 6.50785553e-02],\n", " [ 1.80189149e-01, 1.71727227e-01, 1.64758586e-01,\n", " 1.45345943e-01, 8.56147337e-02, 9.05923345e-02,\n", " 1.02190144e+01, 5.87604778e+02, 5.23768940e-01,\n", " 3.08611296e-02, 6.65375610e-01, 1.17177700e+01,\n", " 8.35988054e+00, 4.86610254e+00, 1.31557989e+00,\n", " 3.98208064e+00, 7.34942758e+00, 3.27177700e+00,\n", " 3.11791936e+01, 1.29430762e+03, 3.49331508e+02,\n", " 1.14555396e+04, 7.42223942e+05, 2.58327544e+05,\n", " 1.20617870e+03, 6.05944052e+03, 3.34863081e+03,\n", " 5.04087705e+03, 1.19179980e+04, 7.73627442e+03,\n", " 2.08163688e-01, 1.20169836e-01, 1.69376142e-01,\n", " 2.34597611e-01, 2.67692997e-01, 4.51727038e-01,\n", " 1.28721942e-01, 4.10291648e-02, 1.62101981e-02,\n", " 6.93852364e-01, 3.57977840e-01, 9.18679343e-02,\n", " 7.74440284e-01, -2.58563280e-01, -5.19116252e-01,\n", " -1.06148371e-01, 2.96920179e-01, 8.21279189e-02]]),\n", " 'sigma_': array([[4.80711374e+01, 4.80785654e+01, 4.80672040e+01, 4.80357333e+01,\n", " 4.79605544e+01, 4.79599492e+01, 5.23574670e+01, 2.00484574e+05,\n", " 4.79333339e+01, 4.79439006e+01, 4.79381009e+01, 1.46923696e+02,\n", " 1.29730972e+02, 1.08452677e+02, 6.43746048e+01, 4.85357853e+01,\n", " 5.16087360e+01, 5.09308454e+01, 4.58833111e+03, 2.70535460e+06,\n", " 7.88311247e+04, 3.16905236e+09, 4.67115687e+10, 1.77537953e+10,\n", " 1.12425412e+06, 1.99926793e+07, 1.41124704e+06, 2.14915154e+08,\n", " 9.25165735e+08, 3.47575175e+08, 4.79779402e+01, 4.79686235e+01,\n", " 4.80040740e+01, 4.79957998e+01, 4.79949409e+01, 4.79285792e+01,\n", " 4.79239664e+01, 4.79153324e+01, 4.79151514e+01, 4.79526437e+01,\n", " 4.79259205e+01, 4.79202788e+01, 4.79762149e+01, 4.79303124e+01,\n", " 4.79998731e+01, 4.79224631e+01, 4.80161744e+01, 4.79789879e+01],\n", " [4.80627511e+01, 4.80572671e+01, 4.80526433e+01, 4.80392506e+01,\n", " 4.79933150e+01, 4.79974155e+01, 5.22811992e+01, 2.40446097e+05,\n", " 4.79339690e+01, 4.79449388e+01, 4.79387435e+01, 1.83723380e+02,\n", " 1.63495322e+02, 1.14929954e+02, 6.22773608e+01, 4.85239674e+01,\n", " 5.13130898e+01, 5.06365880e+01, 5.69946978e+03, 1.16386774e+07,\n", " 3.31657609e+05, 1.62349785e+09, 4.96209108e+10, 1.84107850e+10,\n", " 1.49577628e+06, 2.61482758e+07, 1.52266109e+06, 3.85017724e+08,\n", " 1.53945604e+09, 5.95637982e+08, 4.79922245e+01, 4.79543917e+01,\n", " 4.79738443e+01, 4.80042993e+01, 4.80102771e+01, 4.79282621e+01,\n", " 4.79241411e+01, 4.79153239e+01, 4.79151323e+01, 4.79496336e+01,\n", " 4.79259402e+01, 4.79200300e+01, 4.79752515e+01, 4.79308426e+01,\n", " 4.79983999e+01, 4.79238575e+01, 4.80248025e+01, 4.79879665e+01]]),\n", " 'class_count_': array([2991., 2009.]),\n", " 'class_prior_': array([0.5982, 0.4018])}" ] }, "execution_count": 95, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Hint\n", "gnb.__dict__" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3.2 Model Evaluation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You must have a look at http://scikit-learn.org/stable/modules/model_evaluation.html which shows and details a list of metrics for evaluating regression or classification models." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In the case of regression, the most commonly used metrics are :\n", "* `mean squared errors`\n", "* `mean absolute errors` which gives less importance to errors of very bad prediction and more importance to errors of good predictions as the following plot shows than `mean squared errors`\n", "* `R2` (coefficient of determination) which provides a measure of how well future samples are likely to be predicted by the model." ] }, { "cell_type": "code", "execution_count": 96, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "x = np.arange(-2,2,0.01)\n", "plt.plot(x,x*x, 'blue', label='$x^2$')\n", "plt.plot(x,abs(x), 'orange', label='|x|')\n", "plt.legend(loc=\"upper center\")\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In the case of classification, lots of metrics are used depending on the considered problem:\n", "\n", "* `accuracy` is a default performance measure computing the proportion of missclassified tested instances\n", "* `sensitivity` or 'true positive rate' is the proportion of well classified positive samples\n", "* `specificity` or 'true negative rate' is the proportion of well classified negative samples\n", "\n", "* `precision` is the ability of the classifier not to label as positive a sample that is negative. Like in the case of cancer, we really want to avoid diagnose a cancer to somebody who does not have one.\n", "* `recall` is the ability of the classifier to find all the positive samples.\n", " \n", "* `the area under the precision-recall curve`\n", "* `the area under the Receiver operating characteristic (ROC) curve` " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Question** Use the sklearn library to compute the accuracy score of the above prediction." ] }, { "cell_type": "code", "execution_count": 100, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Accuracy: 0.607\n" ] } ], "source": [ "from sklearn import metrics\n", "# Score the predictions\n", "print(\"Accuracy: %.3f\" % metrics.accuracy_score(y_clf, y_pred) # TODO\n", " )" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Building an ROC curve requires to use the probability estimates for the test data points *before* they are thresholded." ] }, { "cell_type": "code", "execution_count": 101, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(5000, 2)\n" ] } ], "source": [ "# Predict probability estimates instead of 0/1 class labels\n", "y_prob = gnb.predict_proba(X_clf)\n", "print(y_prob.shape)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Question:** `y_prob` returns two values for each data point because it returns one probability estimate per class for each data point. The order in which the classes appear are given by `gnb.classes_ `. How do you get the 1-dimensional array that only contains the estimated probability for each point to belong to the positive class?" ] }, { "cell_type": "code", "execution_count": 102, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 102, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "pos_index = list(gnb.classes_).index(1)\n", "\n", "# ROC curve\n", "fpr, tpr, thresholds = metrics.roc_curve(y_clf, y_prob[:, pos_index], pos_label=1)\n", "\n", "# Area under the ROC curve\n", "auc = metrics.auc(fpr, tpr)\n", "\n", "# Plot the ROC curve\n", "plt.plot(fpr, tpr, '-', color='orange', label='AUC = %0.3f' % auc)\n", "\n", "plt.xlabel('False Positive Rate', fontsize=16)\n", "plt.ylabel('True Positive Rate', fontsize=16)\n", "plt.title('ROC curve: Gaussian Naive Bayes', fontsize=16)\n", "plt.legend(loc=\"lower right\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Question:** What is it problematic to have evaluated our classifier on the training data? " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__Answer:__" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3.3 Model Selection: cross-validation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We will now use the function `make_Kfolds` you have implemented in the first section to evaluate the accuracy of your model via a 5-fold cross-validation scheme. We will compare the results you obtained with those you get with scikit-learn's implementation of the cross-validation scheme. " ] }, { "cell_type": "code", "execution_count": 130, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "200\n" ] } ], "source": [ "# Set up a cross-validation with make_Kfolds\n", "n_instance = len(y)\n", "perso_folds = make_Kfolds(n_instance, 5) # TODO\n", "\n", "# Set up a cross-validation with sklearn\n", "sk_folds = model_selection.KFold(n_splits=5, shuffle=True).split(X,y) # TODO" ] }, { "cell_type": "code", "execution_count": 135, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Your own cv-scheme: Accuracy: 0.515\n", "Sklearn cv-scheme: Accuracy: 0.478\n" ] } ], "source": [ "# Assess performance using the cross_validate function you have implemented\n", "# On perso_folds\n", "gnb = GaussianNB()\n", "# TODO use cross_validate and perso_folds\n", "y_prob_cv_perso = cross_validate(X, y, gnb, perso_folds) > 0.5\n", "print(\"Your own cv-scheme: Accuracy: %.3f\" % metrics.accuracy_score(y, y_prob_cv_perso) # TODO\n", " )\n", "\n", "# On sk_folds\n", "gnb = GaussianNB()\n", "# TODO use cross_validate and perso_folds\n", "y_prob_cv_sk = cross_validate(X, y, gnb, sk_folds) > 0.5\n", "print(\"Sklearn cv-scheme: Accuracy: %.3f\" % metrics.accuracy_score(y, y_prob_cv_sk) # TODO\n", " )" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We will now plot the ROC curve corresponding to your predictions." ] }, { "cell_type": "code", "execution_count": 137, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Your own cv-scheme: AUROC: 0.507\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 137, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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CJ4+fcoPP/xAfHw8Pj4+2joJCQnExMQwatQoypUrx/Pnz9myZQvvvfcev/zyC+XKlcPZ2RkXFxe2bdtG27ZttetGR0fzyy+/MHToUIyNjQH4+uuvWbduHf3792fy5MlERESwdOlSbty4wc8//4yxsTF79+7lq6++YvTo0bi5uREfH8+1a9dSJJB8xdBdl8Lg9bDSrVu3lMTERCUqKkrZsWOH4uTkpGzatEmnrouLizJ+/Ph0t9esWTNl6NChiqIoypo1a7Tbzork5GSldevWSteuXVMMY73J0dFR+eabb3TKXnfV/f39tWWffPKJ4ujoqBw5ckSnbmxsrNKgQQPl66+/1inv1KmTti2KoihTp05VGjdurERGRurUGzRokNKpUyft6/v37ytOTk7K8uXL023fzJkzFUdHxxRDW2q1WklMTNT+pNX25ORkJTExUQkICFBq1qypE1fr1q2VTz75JMU6b75XT58+VRwdHZWjR4+mGaOvr68yf/78dNuR2vv/psTEROXChQuKo6OjcuXKFW3568/jzz//1JbFx8cr7u7uyowZM9Ld53+HYnr37q34+PgoiYmJiqJkPKyUlJSkJCYmKj4+Pspnn32mLT979qzi6OionD17Vlvm4+OT4u9+1KhRSocOHbSvV6xYoTg7OyshISE69aZPn664u7tr40qvLf/9cXZ2Vnbs2JHu+5CUlKS8evVKcXV1VdatW6ct9/f3V2rVqqXcv39fW7ZhwwbFyclJefjwoXa/tWrVSvF3evHiRZ3/J3PmzFG6dOmSbhz5jfQcclCHDh10Xvfp04d+/fplejtKDl5Zc/v2bcLCwhg2bFiKYaysMjExoXXr1jplxYoVw8fHh3379jFhwgRUKhXXrl0jODiY4cOHa+udOnUKT09PSpYsqdPVb9GiBQsWLODly5eUKFGCSpUq8e+//2YYS1rv1ezZs3W+YY8cOZLx48cDmm+oq1ev5tChQ4SHh5OYmKitd/fuXaytrfV7I9AMBVauXJlFixbx9OlT3N3defvtt3XquLi4sHv3bqytrWnevDm1a9fWfutMS0JCAj/++CMBAQE8ePBA56q3kJAQateurX1tYWGh00MwMzPj7bffznTPcMKECfTt25fdu3fTs2fPVOv88ccfrF69muvXr+t867Wzs0t3235+fnz33XfazzcqKoqTJ08ybtw4bZ1T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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Compute the ROC curve corresponding to the y_prob_cv_perso predictions\n", "fpr, tpr, thresholds = metrics.roc_curve(y, y_prob_cv_perso, pos_label=1)\n", "\n", "# Area under the ROC curve\n", "auc = metrics.auc(fpr, tpr)\n", "print(\"Your own cv-scheme: AUROC: %.3f\" % auc)\n", "\n", "# Plot the ROC curve\n", "plt.plot(fpr, tpr, '-', color='orange', label='AUC = %0.3f' % auc)\n", "\n", "# TODO: plot in blue the ROC curve corresponding to the y_prob_cv_sk predictions\n", "\n", "plt.xlabel('False Positive Rate', fontsize=16)\n", "plt.ylabel('True Positive Rate', fontsize=16)\n", "plt.title('ROC curve: Gaussian Naive Bayes', fontsize=16)\n", "plt.legend(loc=\"lower right\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__Question:__ The `sklearn.cross_validation` module provides some utilities to make cross-validated predictions. Compare the results you obtained to what they return.\n", "\n", "Documentation: [cross_val_score](http://scikit-learn.org/stable/modules/generated/sklearn.model_selection.cross_val_score.html)" ] }, { "cell_type": "code", "execution_count": 138, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.515\n" ] } ], "source": [ "gnb = GaussianNB()\n", "skf = model_selection.StratifiedKFold(5, shuffle=True, random_state=91)\n", "\n", "# Use model_selection.cross_val_score to compute the average cross-validated roc_auc score \n", "# of gnb on (X_clf, y_clf), using the skf iterator.\n", "cv_aucs = model_selection.cross_val_score(gnb, X, y, cv=5) # TODO\n", "\n", "print(np.mean(cv_aucs))\n", "\n", "# Note that averaging the AUCs obtained over 10 folds is not the same as \n", "# globally computing the AUC for the predictions made within the cross-validation loop." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__Question__ Compare scikit-learn's implementation of the cross-validation with yours." ] }, { "cell_type": "code", "execution_count": 141, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Cross-validated accuracy: 0.515\n", "Cross-validated accuracy: 0.512\n" ] } ], "source": [ "gnb = GaussianNB()\n", "skf = model_selection.StratifiedKFold(5, shuffle=True, random_state=91)\n", "\n", "# Compute the cross-validation accuracy using model_selection.cross_val_predict\n", "y_pred_sk = model_selection.cross_val_predict(gnb, X, y, cv=5 # TODO\n", " )\n", "print(\"Cross-validated accuracy: %.3f\" % metrics.accuracy_score(y, y_pred_sk # TODO\n", " ))\n", "\n", "# Compute the cross-validation accuracy using your own cross_validate function\n", "y_prob_cv = cross_validate(X, y, gnb, skf.split(X, y)# TODO\n", " )\n", "# Transform y_prob_cv into a vector of binary predictions\n", "y_pred_perso = y_prob_cv > 0.5 # TODO \n", "print(\"Cross-validated accuracy: %.3f\" % metrics.accuracy_score(y, y_pred_perso # TODO\n", " ))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__Question:__ Does stratifying the cross-validation make a difference?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__Answer:__" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Getting started on the final project\n", "\n", "You will be evaluated on a final project in the form of a data challenge competition hosted on codalab.\n", "The data challenge is not public: you can access it through the following link: https://codalab.lisn.upsaclay.fr/competitions/755?secret_key=95ee48c1-fc46-406f-b08b-25a7884d2a61\n", "\n", "- Register on the plateform\n", "- Download the starting kit. It contains the data, a README file, and a script to help with creating the submission bundle.\n", "- Read the README file.\n", "- Run the submission script, and submit the submission bundle.\n", "\n", "You are all set to start working on the final project! Choose to create teams of two or work on your own, and get started training models!" ] } ], "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.6.13" } }, "nbformat": 4, "nbformat_minor": 2 }