Repository: trekhleb/homemade-machine-learning Branch: master Commit: 963d77f17f66 Files: 57 Total size: 35.6 MB Directory structure: gitextract_5ot4huh7/ ├── .gitignore ├── .travis.yml ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── README.es-ES.md ├── README.md ├── data/ │ ├── README.md │ ├── fashion-mnist-demo.csv │ ├── iris.csv │ ├── microchips-tests.csv │ ├── mnist-demo.csv │ ├── non-linear-regression-x-y.csv │ ├── server-operational-params.csv │ └── world-happiness-report-2017.csv ├── homemade/ │ ├── __init__.py │ ├── anomaly_detection/ │ │ ├── README.md │ │ ├── __init__.py │ │ └── gaussian_anomaly_detection.py │ ├── k_means/ │ │ ├── README.md │ │ ├── __init__.py │ │ └── k_means.py │ ├── linear_regression/ │ │ ├── README.md │ │ ├── __init__.py │ │ └── linear_regression.py │ ├── logistic_regression/ │ │ ├── README.md │ │ ├── __init__.py │ │ └── logistic_regression.py │ ├── neural_network/ │ │ ├── README.md │ │ ├── __init__.py │ │ └── multilayer_perceptron.py │ └── utils/ │ ├── __init__.py │ ├── features/ │ │ ├── __init__.py │ │ ├── generate_polynomials.py │ │ ├── generate_sinusoids.py │ │ ├── normalize.py │ │ └── prepare_for_training.py │ └── hypothesis/ │ ├── __init__.py │ ├── sigmoid.py │ └── sigmoid_gradient.py ├── images/ │ ├── machine-learning-map.xml │ └── neural_network/ │ ├── multi-class-network.xml │ ├── neuron-network.xml │ └── neuron.xml ├── notebooks/ │ ├── anomaly_detection/ │ │ └── anomaly_detection_gaussian_demo.ipynb │ ├── k_means/ │ │ └── k_means_demo.ipynb │ ├── linear_regression/ │ │ ├── multivariate_linear_regression_demo.ipynb │ │ ├── non_linear_regression_demo.ipynb │ │ └── univariate_linear_regression_demo.ipynb │ ├── logistic_regression/ │ │ ├── logistic_regression_with_linear_boundary_demo.ipynb │ │ ├── logistic_regression_with_non_linear_boundary_demo.ipynb │ │ ├── multivariate_logistic_regression_demo.ipynb │ │ └── multivariate_logistic_regression_fashion_demo.ipynb │ └── neural_network/ │ ├── multilayer_perceptron_demo.ipynb │ └── multilayer_perceptron_fashion_demo.ipynb ├── pylintrc └── requirements.txt ================================================ FILE CONTENTS ================================================ ================================================ FILE: .gitignore ================================================ .idea env .ipynb_checkpoints ================================================ FILE: .travis.yml ================================================ language: python python: - "3.6" # Install dependencies. install: - pip install -r requirements.txt # Run linting and tests. script: - pylint ./homemade # Turn email notifications off. notifications: email: false ================================================ FILE: CODE_OF_CONDUCT.md ================================================ # Contributor Covenant Code of Conduct ## Our Pledge In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation. ## Our Standards Examples of behavior that contributes to creating a positive environment include: * Using welcoming and inclusive language * Being respectful of differing viewpoints and experiences * Gracefully accepting constructive criticism * Focusing on what is best for the community * Showing empathy towards other community members Examples of unacceptable behavior by participants include: * The use of sexualized language or imagery and unwelcome sexual attention or advances * Trolling, insulting/derogatory comments, and personal or political attacks * Public or private harassment * Publishing others' private information, such as a physical or electronic address, without explicit permission * Other conduct which could reasonably be considered inappropriate in a professional setting ## Our Responsibilities Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. ## Scope This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. ## Attribution This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html [homepage]: https://www.contributor-covenant.org For answers to common questions about this code of conduct, see https://www.contributor-covenant.org/faq ================================================ FILE: CONTRIBUTING.md ================================================ ## Contributing ### General Rules - As much as possible, try to follow the existing format of markdown and code. - Don't forget to run `pylint ./homemade` before submitting pull requests. ### Contributing New Translation - Create new `README.xx-XX.md` file with translation alongside with main `README.md` file where `xx-XX` is [locale and country/region codes](http://www.lingoes.net/en/translator/langcode.htm). For example `en-US`, `zh-CN`, `zh-TW`, `ko-KR` etc. - You may also translate all other sub-folders by creating related `README.xx-XX.md` files in each of them. ### Contributing New Algorithms - Make your pull requests to be **specific** and **focused**. Instead of contributing "several algorithms" all at once contribute them all one by one separately (i.e. one pull request for "Logistic Regression", another one for "K-Means" and so on). - Every new algorithm must have: - **Source code** with comments and readable namings - **Math** being explained in README.md along with the code - **Jupyter demo notebook** with example of how this new algorithm may be applied If you're adding new **datasets** they need to be saved in the `/data` folder. CSV files are preferable. The size of the file should not be greater than `30Mb`. ================================================ FILE: LICENSE ================================================ MIT License Copyright (c) 2018 Oleksii Trekhleb Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ================================================ FILE: README.es-ES.md ================================================ # Homemade Machine Learning (Aprendizaje automatico casero) > UA UCRANIA [ESTÁ SIENDO ATACADA](https://war.ukraine.ua/) POR EL EJERCITO RUSO. CIVILES ESTAN SIENDO ASESINADOS. AREAS RESIDENCIALES ESTAN SIENDO BOMBARDEADAS. > Ayuda a Ucrania via [National Bank of Ukraine](https://bank.gov.ua/en/news/all/natsionalniy-bank-vidkriv-spetsrahunok-dlya-zboru-koshtiv-na-potrebi-armiyi) > - Ayuda a Ucrania via [SaveLife](https://savelife.in.ua/en/donate-en/) fund > - Más información en [war.ukraine.ua](https://war.ukraine.ua/) y [MFA of Ukraine](https://twitter.com/MFA_Ukraine)
[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/trekhleb/homemade-machine-learning/master?filepath=notebooks) > _También te podría interesar 🤖 [Interactive Machine Learning Experiments](https://github.com/trekhleb/machine-learning-experiments)_ _Para la versión en Octave/MatLab de este repositiorio, visita [machine-learning-octave](https://github.com/trekhleb/machine-learning-octave) project._ > Este repositorio contiene ejemplos de algoritmos populares en machine learning implementados en **Python** con los racionales matemáticos explicados. Cada algoritmo tiene un **Jupiter Notebook** interactive asociado que te permite jugar con la data, la configuración de los algoritmos e inmediatamente ver los resultados, gráficas y predicciones **directamente en tu explorador**. En la mayoría de los casos las explicaciones están basadas en [this great machine learning course](https://www.coursera.org/learn/machine-learning) por Andrew Ng. El propósito de este repositorio _no_ es de implementar algoritmos de machine learning utilizando bibliotecas desarrolladas por 3eros que consisten en comandos de una linea. El propósito es practicar la implementación de estos algoritmos desde zero y por consiguiente mejorar el entendimieno de la matematica detrás de cada algoritmo. Es por esto que todas las implementaciones son llamadas "caseras" y no están hachas para ser utilizadas fuera de un contexto didáctico. ## Supervised Learning (Aprendizaje supervisado) En este tipo de algoritmos contamos con un set de data de entrenamiento (training data) como entrada y un set de etiquetas o "respuestas correctas" correspondiente con ladata de entrada que serviran como salida. El propósito es entrenar nuestro modelo (parametros del algoritmo) para emparejar los datos de entrada con los de salida correctamente (hacer predicciones correctas). Esto con el fin de encontrar los parametros del modelo que continuaran este emparejamiento (correcto) de _entrada+salida_ con nuevos datos. ### Regression (Regresión) En problemas de regresión hacemos predicciones de datos reales. Básicamente intentamos dibujar una linea/plano através de los ejemplos de entrenamiento. _Ejemplos de uso: pronostico de precios de acciones, análisis de ventas, dependencias numericas, etc..._ #### 🤖 Linear Regression (Regresión linear) - 📗 [Math | Linear Regression](homemade/linear_regression) - teoría y más para leer (en inglés) - ⚙️ [Code | Linear Regression](homemade/linear_regression/linear_regression.py) - ejemplo de implementación - ▶️ [Demo | Univariate Linear Regression (Regresión univariable)](https://nbviewer.jupyter.org/github/trekhleb/homemade-machine-learning/blob/master/notebooks/linear_regression/univariate_linear_regression_demo.ipynb) - predecir la evaluacion de `country happiness (felicidad en el país)` usando `economy GDP (producto interno bruto)` - ▶️ [Demo | Multivariate Linear Regression(Regresión multivariable)](https://nbviewer.jupyter.org/github/trekhleb/homemade-machine-learning/blob/master/notebooks/linear_regression/multivariate_linear_regression_demo.ipynb) - predecir la evaluacion de `country happiness (felicidad en el país)` usando `economy GDP (producto interno bruto)` y `freedom index (índice de libertad)` - ▶️ [Demo | Non-linear Regression](https://nbviewer.jupyter.org/github/trekhleb/homemade-machine-learning/blob/master/notebooks/linear_regression/non_linear_regression_demo.ipynb) - usar regresión linear con caracteristicas _polinimiales_ y _sinusoidales_ para predecir dependencias no-lineales ### Classification (Clasificación) En problemas de clasificación no contamos con etiquetas o "respuestas correctas". En este tipo de problemas dividimos la data de entrada en grupos dependiendo sus características. _Ejemplos de uso: filtros de spam, detección de lenguaje, encontrar documentos similares, reconocimiento de letras escritas a mano, etc..._ #### 🤖 Logistic Regression (Regresión logística) - 📗 [Math | Logistic Regression](homemade/logistic_regression) - teoría y más para leer (en inglés) - ⚙️ [Code | Logistic Regression](homemade/logistic_regression/logistic_regression.py) - ejemplo de implementación - ▶️ [Demo | Logistic Regression (Linear Boundary)](https://nbviewer.jupyter.org/github/trekhleb/homemade-machine-learning/blob/master/notebooks/logistic_regression/logistic_regression_with_linear_boundary_demo.ipynb) - predecir la `class (clase)` de flor basado en `petal_length (longitud del pétalo)` y `petal_width (ancho del pétalo)` - ▶️ [Demo | Logistic Regression (Non-Linear Boundary)](https://nbviewer.jupyter.org/github/trekhleb/homemade-machine-learning/blob/master/notebooks/logistic_regression/logistic_regression_with_non_linear_boundary_demo.ipynb) - predicir la `validity (validez)` de un microchip basado en `param_1` y `param_2` - ▶️ [Demo | Multivariate Logistic Regression | MNIST](https://nbviewer.jupyter.org/github/trekhleb/homemade-machine-learning/blob/master/notebooks/logistic_regression/multivariate_logistic_regression_demo.ipynb) - reconocer números escritos a mano en imagenes de `28x28` pixeles - ▶️ [Demo | Multivariate Logistic Regression | Fashion MNIST](https://nbviewer.jupyter.org/github/trekhleb/homemade-machine-learning/blob/master/notebooks/logistic_regression/multivariate_logistic_regression_fashion_demo.ipynb) - reconocer artículos de ropa en imagenes de `28x28` pixeles ## Unsupervised Learning (Aprendizaje no supervisado) Aprendizaje no supervisado es una rama del machine learning que aprende de data que no ha sido etiquetada, clasificada o categorizada. En lugar de aprender de retoralimentación, unsupervised learning identifica caracteristicas en común de la data y reacciona de acuerdo a la presencia (o ausencia) de estas caracteristicas en data nueva. ### Clustering (Clústering) En problemas de clústering dividimos los ejemplos de entrenamiento por caracteristicas desconocidas. El algoritmo en si decide que caracteristicas usa para hacer esta división. _Ejemplos de uso: segmentación de mercados, analysis de redes sociales, organizar clústers de cómputo, análisis de data astronómica, compresión de imagenes, etc..._ #### 🤖 K-means Algorithm (Algoritmo K-means) - 📗 [Math | K-means Algorithm](homemade/k_means) - teoría y más para leer (en inglés) - ⚙️ [Code | K-means Algorithm](homemade/k_means/k_means.py) - ejemplo de implementación - ▶️ [Demo | K-means Algorithm](https://nbviewer.jupyter.org/github/trekhleb/homemade-machine-learning/blob/master/notebooks/k_means/k_means_demo.ipynb) - dividir flores en clústers basandonos en `petal_length (longitud del pétalo)` y `petal_width (ancho del pétalo)` ### Anomaly Detection (Detección de anomalías) La detección de anomalías es la identificación de articulos, eventos o observaciones raras que levantan sospechas ya que difieren significativamente de la mayoría de la data. _Ejemplos de uso: detección de intrusos, detección de fraude, monitoreo de la salud del sistema, remover data anómala de un set, etc..._ #### 🤖 Anomaly Detection using Gaussian Distribution (Detección de anomalías utilizando la Distribución Normal) - 📗 [Math | Anomaly Detection using Gaussian Distribution](homemade/anomaly_detection) - teoría y más para leer (en inglés) - ⚙️ [Code | Anomaly Detection using Gaussian Distribution](homemade/anomaly_detection/gaussian_anomaly_detection.py) - ejemplo de implementación - ▶️ [Demo | Anomaly Detection](https://nbviewer.jupyter.org/github/trekhleb/homemade-machine-learning/blob/master/notebooks/anomaly_detection/anomaly_detection_gaussian_demo.ipynb) - encontrar anomalías en los parametros de servicio de un servidor como `latency` y `threshold` ## Neural Network (NN) (Redes Neurales) Las NN en si no son un algoritmo, más bien son un marke de referencia para el uso de varios algoritmos juntos y el procesamiento de data compleja. _Ejemplos de uso: como un substituto sobre todos los demás algoritmos en general, reconocimiento de imagenes, procesamiento de imagened (aplicando cierts estilos), traducciones, etc..._ #### 🤖 Multilayer Perceptron (MLP) (Perceptrón de multiples capas) - 📗 [Math | Multilayer Perceptron](homemade/neural_network) - teoría y más para leer (en inglés) - ⚙️ [Code | Multilayer Perceptron](homemade/neural_network/multilayer_perceptron.py) - ejemplo de implementación - ▶️ [Demo | Multilayer Perceptron | MNIST](https://nbviewer.jupyter.org/github/trekhleb/homemade-machine-learning/blob/master/notebooks/neural_network/multilayer_perceptron_demo.ipynb) - reconocer números escritos a mano en imagenes de `28x28` pixeles - ▶️ [Demo | Multilayer Perceptron | Fashion MNIST](https://nbviewer.jupyter.org/github/trekhleb/homemade-machine-learning/blob/master/notebooks/neural_network/multilayer_perceptron_fashion_demo.ipynb) - reconocer artículos de ropa en imagenes de `28x28` pixeles ## Mapa de Machine Learning (inglés) ![Machine Learning Map](images/machine-learning-map.png) La fuente de este mapa es [este maravilloso blog post](https://vas3k.ru/blog/machine_learning/) ## Prerequisitos #### Instalación de Python Asegura de tener [Python instalado](https://realpython.com/installing-python/) en tu computadora. Recomendamos utilizar la biblioteca estándar de Pyton [venv](https://docs.python.org/3/library/venv.html) para crear un ambiente virtual y tener Python, `pip` y todos los paquetes dependientes instalados y entregados desde el directorio del proyecto directamente para evitar problemas con cambios globales de los paquetes y sus versiones. #### Instalar las dependencias Instala todas las dependencias requeridas para el proyecto ejecutando: ```bash pip install -r requirements.txt ``` #### Lanzar Jupyter Localmente Todas las demonstraciones en este proyecto pueden ser ejecutadas directamnte en tu navegador sin necesidad de instalar Jypyter localmente. Sin embargo, si queres lanzar [Jupyter Notebook](http://jupyter.org/) localmente, es probable que lo quieras hacer utilizando el siguiente comando desde la carpeta raíz del proyecto: ```bash jupyter notebook ``` Después de esto, el Jupyter Notebook se puede accesar a través de `http://localhost:8888`. #### Lanzar Jupyter de manera remota Cada sección dedicada a un algoritmo contiene enlaces a [Jupyter NBViewer](http://nbviewer.jupyter.org/). Esta es una herramienta onlina muy veloz para pre-vizualisar el código, los graficos y la data desde tu navegador sin necesidad de instalar nada localmente. En el caso que quieras _camnbiar_ el código y _experimentar_ con el notebook, tienes que lanzarlo desde [Binder](https://mybinder.org/). Puedes hacerlo simplemente con hacer clock en _"Execute on Binder"_ en la esquina superior derecha de NBViewer. ![](./images/binder-button-place.png) ## Datasets La lista de los datasets que son utilizados en los demos se encuentra ubicada en [data folder](data). ## Apoyo al proyecto Puedes apoyar el proyecto vía ❤️️ [GitHub](https://github.com/sponsors/trekhleb) o ❤️️ [Patreon](https://www.patreon.com/trekhleb). ## Autor - [@trekhleb](https://trekhleb.dev) ================================================ FILE: README.md ================================================ # Homemade Machine Learning > 🇺🇦 UKRAINE [IS BEING ATTACKED](https://war.ukraine.ua/) BY RUSSIAN ARMY. CIVILIANS ARE GETTING KILLED. RESIDENTIAL AREAS ARE GETTING BOMBED. > - Help Ukraine via: > - [Serhiy Prytula Charity Foundation](https://prytulafoundation.org/en/) > - [Come Back Alive Charity Foundation](https://savelife.in.ua/en/donate-en/) > - [National Bank of Ukraine](https://bank.gov.ua/en/news/all/natsionalniy-bank-vidkriv-spetsrahunok-dlya-zboru-koshtiv-na-potrebi-armiyi) > - More info on [war.ukraine.ua](https://war.ukraine.ua/) and [MFA of Ukraine](https://twitter.com/MFA_Ukraine)
[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/trekhleb/homemade-machine-learning/master?filepath=notebooks) > _Read this in other languages:_ [_Español_](README.es-ES.md) > _You might be interested in:_ > - _[Homemade GPT • JS](https://github.com/trekhleb/homemade-gpt-js)_ > - _[Interactive Machine Learning Experiments](https://github.com/trekhleb/machine-learning-experiments)_ _For Octave/MatLab version of this repository please check [machine-learning-octave](https://github.com/trekhleb/machine-learning-octave) project._ > This repository contains examples of popular machine learning algorithms implemented in **Python** with mathematics behind them being explained. Each algorithm has interactive **Jupyter Notebook** demo that allows you to play with training data, algorithms configurations and immediately see the results, charts and predictions **right in your browser**. In most cases the explanations are based on [this great machine learning course](https://www.coursera.org/learn/machine-learning) by Andrew Ng. The purpose of this repository is _not_ to implement machine learning algorithms by using 3rd party library one-liners _but_ rather to practice implementing these algorithms from scratch and get better understanding of the mathematics behind each algorithm. That's why all algorithms implementations are called "homemade" and not intended to be used for production. ## Supervised Learning In supervised learning we have a set of training data as an input and a set of labels or "correct answers" for each training set as an output. Then we're training our model (machine learning algorithm parameters) to map the input to the output correctly (to do correct prediction). The ultimate purpose is to find such model parameters that will successfully continue correct _input→output_ mapping (predictions) even for new input examples. ### Regression In regression problems we do real value predictions. Basically we try to draw a line/plane/n-dimensional plane along the training examples. _Usage examples: stock price forecast, sales analysis, dependency of any number, etc._ #### 🤖 Linear Regression - 📗 [Math | Linear Regression](homemade/linear_regression) - theory and links for further readings - ⚙️ [Code | Linear Regression](homemade/linear_regression/linear_regression.py) - implementation example - ▶️ [Demo | Univariate Linear Regression](https://nbviewer.jupyter.org/github/trekhleb/homemade-machine-learning/blob/master/notebooks/linear_regression/univariate_linear_regression_demo.ipynb) - predict `country happiness` score by `economy GDP` - ▶️ [Demo | Multivariate Linear Regression](https://nbviewer.jupyter.org/github/trekhleb/homemade-machine-learning/blob/master/notebooks/linear_regression/multivariate_linear_regression_demo.ipynb) - predict `country happiness` score by `economy GDP` and `freedom index` - ▶️ [Demo | Non-linear Regression](https://nbviewer.jupyter.org/github/trekhleb/homemade-machine-learning/blob/master/notebooks/linear_regression/non_linear_regression_demo.ipynb) - use linear regression with _polynomial_ and _sinusoid_ features to predict non-linear dependencies ### Classification In classification problems we split input examples by certain characteristic. _Usage examples: spam-filters, language detection, finding similar documents, handwritten letters recognition, etc._ #### 🤖 Logistic Regression - 📗 [Math | Logistic Regression](homemade/logistic_regression) - theory and links for further readings - ⚙️ [Code | Logistic Regression](homemade/logistic_regression/logistic_regression.py) - implementation example - ▶️ [Demo | Logistic Regression (Linear Boundary)](https://nbviewer.jupyter.org/github/trekhleb/homemade-machine-learning/blob/master/notebooks/logistic_regression/logistic_regression_with_linear_boundary_demo.ipynb) - predict Iris flower `class` based on `petal_length` and `petal_width` - ▶️ [Demo | Logistic Regression (Non-Linear Boundary)](https://nbviewer.jupyter.org/github/trekhleb/homemade-machine-learning/blob/master/notebooks/logistic_regression/logistic_regression_with_non_linear_boundary_demo.ipynb) - predict microchip `validity` based on `param_1` and `param_2` - ▶️ [Demo | Multivariate Logistic Regression | MNIST](https://nbviewer.jupyter.org/github/trekhleb/homemade-machine-learning/blob/master/notebooks/logistic_regression/multivariate_logistic_regression_demo.ipynb) - recognize handwritten digits from `28x28` pixel images - ▶️ [Demo | Multivariate Logistic Regression | Fashion MNIST](https://nbviewer.jupyter.org/github/trekhleb/homemade-machine-learning/blob/master/notebooks/logistic_regression/multivariate_logistic_regression_fashion_demo.ipynb) - recognize clothes types from `28x28` pixel images ## Unsupervised Learning Unsupervised learning is a branch of machine learning that learns from test data that has not been labeled, classified or categorized. Instead of responding to feedback, unsupervised learning identifies commonalities in the data and reacts based on the presence or absence of such commonalities in each new piece of data. ### Clustering In clustering problems we split the training examples by unknown characteristics. The algorithm itself decides what characteristic to use for splitting. _Usage examples: market segmentation, social networks analysis, organize computing clusters, astronomical data analysis, image compression, etc._ #### 🤖 K-means Algorithm - 📗 [Math | K-means Algorithm](homemade/k_means) - theory and links for further readings - ⚙️ [Code | K-means Algorithm](homemade/k_means/k_means.py) - implementation example - ▶️ [Demo | K-means Algorithm](https://nbviewer.jupyter.org/github/trekhleb/homemade-machine-learning/blob/master/notebooks/k_means/k_means_demo.ipynb) - split Iris flowers into clusters based on `petal_length` and `petal_width` ### Anomaly Detection Anomaly detection (also outlier detection) is the identification of rare items, events or observations which raise suspicions by differing significantly from the majority of the data. _Usage examples: intrusion detection, fraud detection, system health monitoring, removing anomalous data from the dataset etc._ #### 🤖 Anomaly Detection using Gaussian Distribution - 📗 [Math | Anomaly Detection using Gaussian Distribution](homemade/anomaly_detection) - theory and links for further readings - ⚙️ [Code | Anomaly Detection using Gaussian Distribution](homemade/anomaly_detection/gaussian_anomaly_detection.py) - implementation example - ▶️ [Demo | Anomaly Detection](https://nbviewer.jupyter.org/github/trekhleb/homemade-machine-learning/blob/master/notebooks/anomaly_detection/anomaly_detection_gaussian_demo.ipynb) - find anomalies in server operational parameters like `latency` and `threshold` ## Neural Network (NN) The neural network itself isn't an algorithm, but rather a framework for many different machine learning algorithms to work together and process complex data inputs. _Usage examples: as a substitute of all other algorithms in general, image recognition, voice recognition, image processing (applying specific style), language translation, etc._ #### 🤖 Multilayer Perceptron (MLP) - 📗 [Math | Multilayer Perceptron](homemade/neural_network) - theory and links for further readings - ⚙️ [Code | Multilayer Perceptron](homemade/neural_network/multilayer_perceptron.py) - implementation example - ▶️ [Demo | Multilayer Perceptron | MNIST](https://nbviewer.jupyter.org/github/trekhleb/homemade-machine-learning/blob/master/notebooks/neural_network/multilayer_perceptron_demo.ipynb) - recognize handwritten digits from `28x28` pixel images - ▶️ [Demo | Multilayer Perceptron | Fashion MNIST](https://nbviewer.jupyter.org/github/trekhleb/homemade-machine-learning/blob/master/notebooks/neural_network/multilayer_perceptron_fashion_demo.ipynb) - recognize the type of clothes from `28x28` pixel images ## Machine Learning Map ![Machine Learning Map](images/machine-learning-map.png) The source of the following machine learning topics map is [this wonderful blog post](https://vas3k.ru/blog/machine_learning/) ## Prerequisites #### Installing Python Make sure that you have [Python installed](https://realpython.com/installing-python/) on your machine. You might want to use [venv](https://docs.python.org/3/library/venv.html) standard Python library to create virtual environments and have Python, `pip` and all dependent packages to be installed and served from the local project directory to avoid messing with system wide packages and their versions. #### Installing Dependencies Install all dependencies that are required for the project by running: ```bash pip install -r requirements.txt ``` #### Launching Jupyter Locally All demos in the project may be run directly in your browser without installing Jupyter locally. But if you want to launch [Jupyter Notebook](http://jupyter.org/) locally you may do it by running the following command from the root folder of the project: ```bash jupyter notebook ``` After this Jupyter Notebook will be accessible by `http://localhost:8888`. #### Launching Jupyter Remotely Each algorithm section contains demo links to [Jupyter NBViewer](http://nbviewer.jupyter.org/). This is fast online previewer for Jupyter notebooks where you may see demo code, charts and data right in your browser without installing anything locally. In case if you want to _change_ the code and _experiment_ with demo notebook you need to launch the notebook in [Binder](https://mybinder.org/). You may do it by simply clicking the _"Execute on Binder"_ link in top right corner of the NBViewer. ![](./images/binder-button-place.png) ## Datasets The list of datasets that is being used for Jupyter Notebook demos may be found in [data folder](data). ## Supporting the project You may support this project via ❤️️ [GitHub](https://github.com/sponsors/trekhleb) or ❤️️ [Patreon](https://www.patreon.com/trekhleb). ## Author - [@trekhleb](https://trekhleb.dev) ================================================ FILE: data/README.md ================================================ # Datasets This is a list of datasets that are used for Jupyter Notebook demos in this repository. ### MNIST (Handwritten Digits) > [mnist-demo.csv](mnist-demo.csv) _Source: [Kaggle](https://www.kaggle.com/oddrationale/mnist-in-csv/home)_ A sample of original MNIST dataset in a CSV format. Instead of using full dataset with 60000 training examples the dataset consists of just 10000 examples. Each row in the dataset consists of 785 values: the first value is the label (a number from 0 to 9) and the remaining 784 values (28x28 pixels image) are the pixel values (a number from 0 to 255). ### Fashion MNIST > [fashion-mnist-demo.csv](fashion-mnist-demo.csv) _Source: [Kaggle](https://www.kaggle.com/zalando-research/fashionmnist)_ Fashion-MNIST is a dataset of Zalando's article images—consisting of a training set. Each example is a 28x28 grayscale image, associated with a label from 10 classes. Zalando intends Fashion-MNIST to serve as a direct drop-in replacement for the original MNIST dataset for benchmarking machine learning algorithms. It shares the same image size and structure of training and testing splits. Instead of using full dataset with 60000 training examples we will use cut dataset of just 5000 examples that we will also split into training and testing sets. ### World Happiness Report 2017 > [world-happiness-report-2017.csv](world-happiness-report-2017.csv) _Source: [Kaggle](https://www.kaggle.com/unsdsn/world-happiness#2017.csv)_ Happiness rank and scores by country, 2017. ### Iris Flowers > [iris.csv](iris.csv) _Source: [ics.uci.edu](http://archive.ics.uci.edu/ml/datasets/Iris)_ Iris data set data set consists of several samples from each of three species of Iris (`Iris setosa`, `Iris virginica` and `Iris versicolor`). Four features were measured from each sample: the length and the width of the sepals and petals, in centimeters. ### Microchips Tests (Artificial) > [microchips-tests.csv](microchips-tests.csv) _Source: [Machine Learning at Coursera](https://www.coursera.org/learn/machine-learning)_ Artificial dataset in which `param_1` and `param_2` produce non-linear decision boundary. ### Non-Linear Y(X) Dependency (Artificial) > [non-linear-regression-x-y.csv](non-linear-regression-x-y.csv) _Source: [Machine Learning at Coursera](https://www.coursera.org/learn/machine-learning)_ Artificial dataset that contains non-linear y(x) dependency. ### Server Operational Parameters > [server-operational-params.csv](server-operational-params.csv) _Source: [Machine Learning at Coursera](https://www.coursera.org/learn/machine-learning)_ Dataset of server operational parameters containing the `Latency(Throughput)` dependency. ================================================ FILE: data/fashion-mnist-demo.csv ================================================ [File too large to display: 10.6 MB] ================================================ FILE: data/iris.csv ================================================ sepal_length,sepal_width,petal_length,petal_width,class 5.1,3.5,1.4,0.2,SETOSA 4.9,3.0,1.4,0.2,SETOSA 4.7,3.2,1.3,0.2,SETOSA 4.6,3.1,1.5,0.2,SETOSA 5.0,3.6,1.4,0.2,SETOSA 5.4,3.9,1.7,0.4,SETOSA 4.6,3.4,1.4,0.3,SETOSA 5.0,3.4,1.5,0.2,SETOSA 4.4,2.9,1.4,0.2,SETOSA 4.9,3.1,1.5,0.1,SETOSA 5.4,3.7,1.5,0.2,SETOSA 4.8,3.4,1.6,0.2,SETOSA 4.8,3.0,1.4,0.1,SETOSA 4.3,3.0,1.1,0.1,SETOSA 5.8,4.0,1.2,0.2,SETOSA 5.7,4.4,1.5,0.4,SETOSA 5.4,3.9,1.3,0.4,SETOSA 5.1,3.5,1.4,0.3,SETOSA 5.7,3.8,1.7,0.3,SETOSA 5.1,3.8,1.5,0.3,SETOSA 5.4,3.4,1.7,0.2,SETOSA 5.1,3.7,1.5,0.4,SETOSA 4.6,3.6,1.0,0.2,SETOSA 5.1,3.3,1.7,0.5,SETOSA 4.8,3.4,1.9,0.2,SETOSA 5.0,3.0,1.6,0.2,SETOSA 5.0,3.4,1.6,0.4,SETOSA 5.2,3.5,1.5,0.2,SETOSA 5.2,3.4,1.4,0.2,SETOSA 4.7,3.2,1.6,0.2,SETOSA 4.8,3.1,1.6,0.2,SETOSA 5.4,3.4,1.5,0.4,SETOSA 5.2,4.1,1.5,0.1,SETOSA 5.5,4.2,1.4,0.2,SETOSA 4.9,3.1,1.5,0.1,SETOSA 5.0,3.2,1.2,0.2,SETOSA 5.5,3.5,1.3,0.2,SETOSA 4.9,3.1,1.5,0.1,SETOSA 4.4,3.0,1.3,0.2,SETOSA 5.1,3.4,1.5,0.2,SETOSA 5.0,3.5,1.3,0.3,SETOSA 4.5,2.3,1.3,0.3,SETOSA 4.4,3.2,1.3,0.2,SETOSA 5.0,3.5,1.6,0.6,SETOSA 5.1,3.8,1.9,0.4,SETOSA 4.8,3.0,1.4,0.3,SETOSA 5.1,3.8,1.6,0.2,SETOSA 4.6,3.2,1.4,0.2,SETOSA 5.3,3.7,1.5,0.2,SETOSA 5.0,3.3,1.4,0.2,SETOSA 7.0,3.2,4.7,1.4,VERSICOLOR 6.4,3.2,4.5,1.5,VERSICOLOR 6.9,3.1,4.9,1.5,VERSICOLOR 5.5,2.3,4.0,1.3,VERSICOLOR 6.5,2.8,4.6,1.5,VERSICOLOR 5.7,2.8,4.5,1.3,VERSICOLOR 6.3,3.3,4.7,1.6,VERSICOLOR 4.9,2.4,3.3,1.0,VERSICOLOR 6.6,2.9,4.6,1.3,VERSICOLOR 5.2,2.7,3.9,1.4,VERSICOLOR 5.0,2.0,3.5,1.0,VERSICOLOR 5.9,3.0,4.2,1.5,VERSICOLOR 6.0,2.2,4.0,1.0,VERSICOLOR 6.1,2.9,4.7,1.4,VERSICOLOR 5.6,2.9,3.6,1.3,VERSICOLOR 6.7,3.1,4.4,1.4,VERSICOLOR 5.6,3.0,4.5,1.5,VERSICOLOR 5.8,2.7,4.1,1.0,VERSICOLOR 6.2,2.2,4.5,1.5,VERSICOLOR 5.6,2.5,3.9,1.1,VERSICOLOR 5.9,3.2,4.8,1.8,VERSICOLOR 6.1,2.8,4.0,1.3,VERSICOLOR 6.3,2.5,4.9,1.5,VERSICOLOR 6.1,2.8,4.7,1.2,VERSICOLOR 6.4,2.9,4.3,1.3,VERSICOLOR 6.6,3.0,4.4,1.4,VERSICOLOR 6.8,2.8,4.8,1.4,VERSICOLOR 6.7,3.0,5.0,1.7,VERSICOLOR 6.0,2.9,4.5,1.5,VERSICOLOR 5.7,2.6,3.5,1.0,VERSICOLOR 5.5,2.4,3.8,1.1,VERSICOLOR 5.5,2.4,3.7,1.0,VERSICOLOR 5.8,2.7,3.9,1.2,VERSICOLOR 6.0,2.7,5.1,1.6,VERSICOLOR 5.4,3.0,4.5,1.5,VERSICOLOR 6.0,3.4,4.5,1.6,VERSICOLOR 6.7,3.1,4.7,1.5,VERSICOLOR 6.3,2.3,4.4,1.3,VERSICOLOR 5.6,3.0,4.1,1.3,VERSICOLOR 5.5,2.5,4.0,1.3,VERSICOLOR 5.5,2.6,4.4,1.2,VERSICOLOR 6.1,3.0,4.6,1.4,VERSICOLOR 5.8,2.6,4.0,1.2,VERSICOLOR 5.0,2.3,3.3,1.0,VERSICOLOR 5.6,2.7,4.2,1.3,VERSICOLOR 5.7,3.0,4.2,1.2,VERSICOLOR 5.7,2.9,4.2,1.3,VERSICOLOR 6.2,2.9,4.3,1.3,VERSICOLOR 5.1,2.5,3.0,1.1,VERSICOLOR 5.7,2.8,4.1,1.3,VERSICOLOR 6.3,3.3,6.0,2.5,VIRGINICA 5.8,2.7,5.1,1.9,VIRGINICA 7.1,3.0,5.9,2.1,VIRGINICA 6.3,2.9,5.6,1.8,VIRGINICA 6.5,3.0,5.8,2.2,VIRGINICA 7.6,3.0,6.6,2.1,VIRGINICA 4.9,2.5,4.5,1.7,VIRGINICA 7.3,2.9,6.3,1.8,VIRGINICA 6.7,2.5,5.8,1.8,VIRGINICA 7.2,3.6,6.1,2.5,VIRGINICA 6.5,3.2,5.1,2.0,VIRGINICA 6.4,2.7,5.3,1.9,VIRGINICA 6.8,3.0,5.5,2.1,VIRGINICA 5.7,2.5,5.0,2.0,VIRGINICA 5.8,2.8,5.1,2.4,VIRGINICA 6.4,3.2,5.3,2.3,VIRGINICA 6.5,3.0,5.5,1.8,VIRGINICA 7.7,3.8,6.7,2.2,VIRGINICA 7.7,2.6,6.9,2.3,VIRGINICA 6.0,2.2,5.0,1.5,VIRGINICA 6.9,3.2,5.7,2.3,VIRGINICA 5.6,2.8,4.9,2.0,VIRGINICA 7.7,2.8,6.7,2.0,VIRGINICA 6.3,2.7,4.9,1.8,VIRGINICA 6.7,3.3,5.7,2.1,VIRGINICA 7.2,3.2,6.0,1.8,VIRGINICA 6.2,2.8,4.8,1.8,VIRGINICA 6.1,3.0,4.9,1.8,VIRGINICA 6.4,2.8,5.6,2.1,VIRGINICA 7.2,3.0,5.8,1.6,VIRGINICA 7.4,2.8,6.1,1.9,VIRGINICA 7.9,3.8,6.4,2.0,VIRGINICA 6.4,2.8,5.6,2.2,VIRGINICA 6.3,2.8,5.1,1.5,VIRGINICA 6.1,2.6,5.6,1.4,VIRGINICA 7.7,3.0,6.1,2.3,VIRGINICA 6.3,3.4,5.6,2.4,VIRGINICA 6.4,3.1,5.5,1.8,VIRGINICA 6.0,3.0,4.8,1.8,VIRGINICA 6.9,3.1,5.4,2.1,VIRGINICA 6.7,3.1,5.6,2.4,VIRGINICA 6.9,3.1,5.1,2.3,VIRGINICA 5.8,2.7,5.1,1.9,VIRGINICA 6.8,3.2,5.9,2.3,VIRGINICA 6.7,3.3,5.7,2.5,VIRGINICA 6.7,3.0,5.2,2.3,VIRGINICA 6.3,2.5,5.0,1.9,VIRGINICA 6.5,3.0,5.2,2.0,VIRGINICA 6.2,3.4,5.4,2.3,VIRGINICA 5.9,3.0,5.1,1.8,VIRGINICA ================================================ FILE: data/microchips-tests.csv ================================================ param_1,param_2,validity 0.051267,0.69956,1 -0.092742,0.68494,1 -0.21371,0.69225,1 -0.375,0.50219,1 -0.51325,0.46564,1 -0.52477,0.2098,1 -0.39804,0.034357,1 -0.30588,-0.19225,1 0.016705,-0.40424,1 0.13191,-0.51389,1 0.38537,-0.56506,1 0.52938,-0.5212,1 0.63882,-0.24342,1 0.73675,-0.18494,1 0.54666,0.48757,1 0.322,0.5826,1 0.16647,0.53874,1 -0.046659,0.81652,1 -0.17339,0.69956,1 -0.47869,0.63377,1 -0.60541,0.59722,1 -0.62846,0.33406,1 -0.59389,0.005117,1 -0.42108,-0.27266,1 -0.11578,-0.39693,1 0.20104,-0.60161,1 0.46601,-0.53582,1 0.67339,-0.53582,1 -0.13882,0.54605,1 -0.29435,0.77997,1 -0.26555,0.96272,1 -0.16187,0.8019,1 -0.17339,0.64839,1 -0.28283,0.47295,1 -0.36348,0.31213,1 -0.30012,0.027047,1 -0.23675,-0.21418,1 -0.06394,-0.18494,1 0.062788,-0.16301,1 0.22984,-0.41155,1 0.2932,-0.2288,1 0.48329,-0.18494,1 0.64459,-0.14108,1 0.46025,0.012427,1 0.6273,0.15863,1 0.57546,0.26827,1 0.72523,0.44371,1 0.22408,0.52412,1 0.44297,0.67032,1 0.322,0.69225,1 0.13767,0.57529,1 -0.0063364,0.39985,1 -0.092742,0.55336,1 -0.20795,0.35599,1 -0.20795,0.17325,1 -0.43836,0.21711,1 -0.21947,-0.016813,1 -0.13882,-0.27266,1 0.18376,0.93348,0 0.22408,0.77997,0 0.29896,0.61915,0 0.50634,0.75804,0 0.61578,0.7288,0 0.60426,0.59722,0 0.76555,0.50219,0 0.92684,0.3633,0 0.82316,0.27558,0 0.96141,0.085526,0 0.93836,0.012427,0 0.86348,-0.082602,0 0.89804,-0.20687,0 0.85196,-0.36769,0 0.82892,-0.5212,0 0.79435,-0.55775,0 0.59274,-0.7405,0 0.51786,-0.5943,0 0.46601,-0.41886,0 0.35081,-0.57968,0 0.28744,-0.76974,0 0.085829,-0.75512,0 0.14919,-0.57968,0 -0.13306,-0.4481,0 -0.40956,-0.41155,0 -0.39228,-0.25804,0 -0.74366,-0.25804,0 -0.69758,0.041667,0 -0.75518,0.2902,0 -0.69758,0.68494,0 -0.4038,0.70687,0 -0.38076,0.91886,0 -0.50749,0.90424,0 -0.54781,0.70687,0 0.10311,0.77997,0 0.057028,0.91886,0 -0.10426,0.99196,0 -0.081221,1.1089,0 0.28744,1.087,0 0.39689,0.82383,0 0.63882,0.88962,0 0.82316,0.66301,0 0.67339,0.64108,0 1.0709,0.10015,0 -0.046659,-0.57968,0 -0.23675,-0.63816,0 -0.15035,-0.36769,0 -0.49021,-0.3019,0 -0.46717,-0.13377,0 -0.28859,-0.060673,0 -0.61118,-0.067982,0 -0.66302,-0.21418,0 -0.59965,-0.41886,0 -0.72638,-0.082602,0 -0.83007,0.31213,0 -0.72062,0.53874,0 -0.59389,0.49488,0 -0.48445,0.99927,0 -0.0063364,0.99927,0 0.63265,-0.030612,0 ================================================ FILE: data/mnist-demo.csv ================================================ [File too large to display: 17.4 MB] ================================================ FILE: data/non-linear-regression-x-y.csv ================================================ y,x 97.58776,1.000000 97.76344,2.000000 96.56705,3.000000 92.52037,4.000000 91.15097,5.000000 95.21728,6.000000 90.21355,7.000000 89.29235,8.000000 91.51479,9.000000 89.60966,10.000000 86.56187,11.00000 85.55316,12.00000 87.13054,13.00000 85.67940,14.00000 80.04851,15.00000 82.18925,16.00000 87.24081,17.00000 80.79407,18.00000 81.28570,19.00000 81.56940,20.00000 79.22715,21.00000 79.43275,22.00000 77.90195,23.00000 76.75468,24.00000 77.17377,25.00000 74.27348,26.00000 73.11900,27.00000 73.84826,28.00000 72.47870,29.00000 71.92292,30.00000 66.92176,31.00000 67.93835,32.00000 69.56207,33.00000 69.07066,34.00000 66.53983,35.00000 63.87883,36.00000 69.71537,37.00000 63.60588,38.00000 63.37154,39.00000 60.01835,40.00000 62.67481,41.00000 65.80666,42.00000 59.14304,43.00000 56.62951,44.00000 61.21785,45.00000 54.38790,46.00000 62.93443,47.00000 56.65144,48.00000 57.13362,49.00000 58.29689,50.00000 58.91744,51.00000 58.50172,52.00000 55.22885,53.00000 58.30375,54.00000 57.43237,55.00000 51.69407,56.00000 49.93132,57.00000 53.70760,58.00000 55.39712,59.00000 52.89709,60.00000 52.31649,61.00000 53.98720,62.00000 53.54158,63.00000 56.45046,64.00000 51.32276,65.00000 53.11676,66.00000 53.28631,67.00000 49.80555,68.00000 54.69564,69.00000 56.41627,70.00000 54.59362,71.00000 54.38520,72.00000 60.15354,73.00000 59.78773,74.00000 60.49995,75.00000 65.43885,76.00000 60.70001,77.00000 63.71865,78.00000 67.77139,79.00000 64.70934,80.00000 70.78193,81.00000 70.38651,82.00000 77.22359,83.00000 79.52665,84.00000 80.13077,85.00000 85.67823,86.00000 85.20647,87.00000 90.24548,88.00000 93.61953,89.00000 95.86509,90.00000 93.46992,91.00000 105.8137,92.00000 107.8269,93.00000 114.0607,94.00000 115.5019,95.00000 118.5110,96.00000 119.6177,97.00000 122.1940,98.00000 126.9903,99.00000 125.7005,100.00000 123.7447,101.00000 130.6543,102.00000 129.7168,103.00000 131.8240,104.00000 131.8759,105.00000 131.9994,106.0000 132.1221,107.0000 133.4414,108.0000 133.8252,109.0000 133.6695,110.0000 128.2851,111.0000 126.5182,112.0000 124.7550,113.0000 118.4016,114.0000 122.0334,115.0000 115.2059,116.0000 118.7856,117.0000 110.7387,118.0000 110.2003,119.0000 105.17290,120.0000 103.44720,121.0000 94.54280,122.0000 94.40526,123.0000 94.57964,124.0000 88.76605,125.0000 87.28747,126.0000 92.50443,127.0000 86.27997,128.0000 82.44307,129.0000 80.47367,130.0000 78.36608,131.0000 78.74307,132.0000 76.12786,133.0000 79.13108,134.0000 76.76062,135.0000 77.60769,136.0000 77.76633,137.0000 81.28220,138.0000 79.74307,139.0000 81.97964,140.0000 80.02952,141.0000 85.95232,142.0000 85.96838,143.0000 79.94789,144.0000 87.17023,145.0000 90.50992,146.0000 93.23373,147.0000 89.14803,148.0000 93.11492,149.0000 90.34337,150.0000 93.69421,151.0000 95.74256,152.0000 91.85105,153.0000 96.74503,154.0000 87.60996,155.0000 90.47012,156.0000 88.11690,157.0000 85.70673,158.0000 85.01361,159.0000 78.53040,160.0000 81.34148,161.0000 75.19295,162.0000 72.66115,163.0000 69.85504,164.0000 66.29476,165.0000 63.58502,166.0000 58.33847,167.0000 57.50766,168.0000 52.80498,169.0000 50.79319,170.0000 47.03490,171.0000 46.47090,172.0000 43.09016,173.0000 34.11531,174.0000 39.28235,175.0000 32.68386,176.0000 30.44056,177.0000 31.98932,178.0000 23.63330,179.0000 23.69643,180.0000 20.26812,181.0000 19.07074,182.0000 17.59544,183.0000 16.08785,184.0000 18.94267,185.0000 18.61354,186.0000 17.25800,187.0000 16.62285,188.0000 13.48367,189.0000 15.37647,190.0000 13.47208,191.0000 15.96188,192.0000 12.32547,193.0000 16.33880,194.0000 10.438330,195.0000 9.628715,196.0000 13.12268,197.0000 8.772417,198.0000 11.76143,199.0000 12.55020,200.0000 11.33108,201.0000 11.20493,202.0000 7.816916,203.0000 6.800675,204.0000 14.26581,205.0000 10.66285,206.0000 8.911574,207.0000 11.56733,208.0000 11.58207,209.0000 11.59071,210.0000 9.730134,211.0000 11.44237,212.0000 11.22912,213.0000 10.172130,214.0000 12.50905,215.0000 6.201493,216.0000 9.019605,217.0000 10.80607,218.0000 13.09625,219.0000 3.914271,220.0000 9.567886,221.0000 8.038448,222.0000 10.231040,223.0000 9.367410,224.0000 7.695971,225.0000 6.118575,226.0000 8.793207,227.0000 7.796692,228.0000 12.45065,229.0000 10.61601,230.0000 6.001003,231.0000 6.765098,232.0000 8.764653,233.0000 4.586418,234.0000 8.390783,235.0000 7.209202,236.0000 10.012090,237.0000 7.327461,238.0000 6.525136,239.0000 2.840065,240.0000 10.323710,241.0000 4.790035,242.0000 8.376431,243.0000 6.263980,244.0000 2.705892,245.0000 8.362109,246.0000 8.983507,247.0000 3.362469,248.0000 1.182678,249.0000 4.875312,250.0000 ================================================ FILE: data/server-operational-params.csv ================================================ Latency (ms),Throughput (mb/s),Anomaly 13.04681516870484,14.7411524132184,0 13.4085201853932,13.76326960024047,0 14.19591481245491,15.85318112982812,0 14.91470076531303,16.17425986715807,0 13.5766996051752,14.04284943755652,0 13.92240250750028,13.40646893666083,0 12.82213163903098,14.22318782380161,0 15.6763661470048,15.89169137219994,0 16.16287532482238,16.20299807446642,0 12.66645094909174,14.8990837351338,1 13.98454962300191,12.95800821585463,0 14.06146043109355,14.54908874282629,0 13.38988671215899,15.56202141787754,0 13.39350474623341,15.62698794188875,0 13.97900926099814,13.28061494266342,0 14.16791258723419,14.46583828507579,0 13.96176145283657,14.75182421254904,0 14.45899735355037,15.07018562997125,0 14.58476371878708,15.82743423785702,0 12.07427073619131,13.06711089796514,0 13.54912940444922,15.53827676982062,0 13.98625041879221,14.78776303583677,0 14.96991942049244,16.51830493015889,0 14.2557659665841,15.29427277420701,0 15.33425000108006,16.12469988952639,0 15.63504869777692,16.49094476663806,0 13.62081291712303,15.45947525058772,0 14.81548484709227,15.33956526603583,0 14.59318972857327,14.61238105671215,0 14.48906754712418,15.64087368177291,0 15.52704801171451,14.63568031226173,0 13.97506707358789,14.76531532927648,0 12.95364954381841,14.82328512087584,0 12.88787444214799,15.07607810133002,0 16.02178960565569,16.25746991816081,0 14.9262927071427,16.29725072434191,0 12.46559400363085,14.18321211753596,0 14.08466278107714,14.44192203204038,0 14.53717522545769,14.24224248113181,0 14.22250851601845,15.42386187610343,0 14.51908495978717,13.99871698993444,0 13.11971433616167,14.66081845898369,0 14.5108889424642,15.30465148682366,0 14.18262426407451,15.3938896849634,0 14.71651844926282,15.73369667477785,0 13.83454699853918,16.17138034441191,0 16.00076179182642,14.69232970320203,0 14.12702715242892,15.91462774747984,0 13.84578546855034,14.34139348861173,0 15.41426110064101,16.24243182463628,1 13.25273726696165,15.00861363933526,0 13.66840226015763,14.35886035673854,0 13.77534773921765,14.73808512203812,0 14.12582342640922,14.92980922624493,0 14.54724604324321,15.6333944514067,0 14.15258077112493,14.53622696521789,0 14.12648161131633,15.34467591276852,0 14.26324658304056,14.98556918087115,0 14.77324331862399,15.25299473774317,0 14.20969933686442,16.14572569071713,0 13.260655152992,15.48016214411599,0 14.25273350867239,15.03134360663839,0 12.92124446791387,13.19321540142361,0 13.852431292546,13.33213110580615,0 13.96856800302965,13.19821236714215,0 13.25206981975186,15.36846390294601,0 13.70449633962696,13.21431301976872,0 14.5087472134072,15.46051652161006,0 15.69042695638351,16.48168851978138,0 12.95598191982515,12.43703005897334,0 13.59312604041728,14.84189902611636,0 15.12874638631439,17.14981222613881,0 14.26705036670259,15.67551973639503,0 15.6614505451442,14.81146451457414,0 14.33962672797097,15.49202297710026,0 14.2761765458781,14.70590693250814,0 14.86049072335336,15.59000779027686,0 14.10414479623351,15.1805045637764,0 15.98828286381979,15.62105187028486,0 13.47473582792461,15.59307141917535,0 13.77637601475249,14.99194426684731,0 12.82770875129005,15.67136906874635,0 13.67165486007913,15.11954159126301,0 15.38704283906103,15.56936935237784,0 15.54320933642332,15.51543150058866,0 13.85306094119846,15.60672436869602,0 13.62525245784644,14.45209462876985,0 15.0157784412311,14.91664093008973,0 13.83645753449745,15.24940725360926,0 14.22694438547307,14.3479843622948,0 13.23742625416296,14.61058751286003,0 13.38482919115422,14.7331933025011,0 13.87130103241151,14.97399468636979,0 12.39445846815594,14.64448216946588,0 14.32186557845068,14.52890629439163,0 15.82965092460402,15.71619455432355,0 15.80177302202355,16.01808914480403,0 14.69751200330076,14.11198748714029,0 14.70598656653535,16.46040295414171,0 13.59156859810395,14.91975097196414,0 12.29984538869378,14.77119467910275,0 13.3990474777037,16.11912910518291,0 15.13112869806696,15.90031130320181,0 15.38581197702793,15.71453967469415,0 15.45487421920634,15.4404224240544,0 13.74951530855867,15.26803135994583,0 15.69914333094722,16.05595814533895,0 14.80580490719942,14.33258926354469,0 15.17222942648117,16.70624397729834,0 11.24915511828765,15.13295896107001,0 13.88773906521638,14.48548132472444,0 15.3258701791002,16.58524064023295,0 12.97517063349011,15.1605677140184,0 14.07427780835002,17.21973519125371,0 14.1820256369139,17.83351945487566,0 12.23970014041095,14.72866833837743,0 14.82555960703615,15.94500684833057,0 13.09763368416417,16.23036500469445,0 13.85758877756093,15.03526838191721,0 15.52502523459987,16.78653607805479,0 15.31499528329094,14.56835427536349,0 14.03034873517879,15.6633618769716,0 14.42312994571211,14.94109334872472,0 13.63615118835241,14.96411634434718,0 14.53477942776931,13.35611764012331,0 14.61566223678644,14.15241034694619,0 13.08085544352481,14.0284594118694,0 14.93928677902786,14.54933745884242,0 16.0271266262212,15.70965830468461,0 14.31925037139242,15.11762658185582,0 14.86153307492049,14.28458412390706,0 14.01432032507764,16.77971266133154,0 13.40765469906171,14.60041190939531,0 13.0795973186072,14.19389917316378,0 12.68820688788819,13.81109597020173,0 14.19232756586644,15.36498178724437,0 14.86589365075524,14.47138789706538,0 13.39350297747264,14.34389892642248,0 13.58659142682796,14.39148496395445,0 13.10219289551651,14.3760326021477,0 14.54176555566262,16.37233995317341,0 14.25602703003231,15.0423494965284,0 16.18754760471493,16.36145253974863,0 13.63292362573135,13.62886893815872,0 14.65349334618363,14.97649220824924,0 12.61911799757794,16.77214314245786,0 13.03427729514449,14.25689090988086,0 10.85940051666349,14.47914434225415,0 12.93486070587027,14.60746677979927,0 13.9922676551586,14.96212808248882,0 12.57248704338531,15.1972734968139,0 15.68266703007037,16.22123922102406,0 13.2125815156299,14.3518273677709,0 13.98975002194823,14.52445650352669,0 13.4662664096024,13.65765529406475,0 13.13166385488746,15.79882584075226,0 14.35439254719252,15.02329268379058,0 13.55329410888779,13.73218768633878,0 12.98628429130503,14.80983707085099,0 14.37264883162727,14.95148191190331,0 13.58869050224715,15.19778174710474,0 12.26002251889708,15.61364103922988,0 13.66602493759934,16.44517365387813,0 14.34554567080519,15.44883765222099,0 14.60667497581217,15.77655361118647,0 14.15369523977195,16.57440586446113,0 14.04899502017924,14.39078838248393,0 14.06857464220482,14.62364257375797,0 15.88890082127304,16.33705609429303,0 13.97601419894874,15.84206442894244,0 10.88221341356124,13.46166188373757,0 13.90920312008345,14.97657577218348,0 12.36776146202978,15.14204982137499,0 15.16765639256333,15.51933856946829,0 15.3376951724287,14.23319145087297,0 13.55057689653119,15.73044061233337,0 13.57918656724497,15.47264441338775,0 14.24479089854792,15.0850911865811,0 15.33086296717245,15.71142599198902,0 15.91714892779239,15.15651432878437,0 13.85421253890297,15.32125758133508,0 14.08736591098981,14.30728373787297,0 12.63610997338858,15.65066101888946,0 14.36282756033598,13.87195409310256,0 14.50066606012271,14.61759024545319,0 13.96984547008964,16.17341605305203,0 15.13133128099397,15.28924849061305,0 15.15300231315136,14.01362830007739,0 13.31011939341444,14.39060274697614,0 14.25712172586539,14.29705004451436,0 13.71613134707139,13.52733470384027,0 15.70094057818437,15.99611428697285,0 13.38943515399727,14.36513422537798,0 14.14088666467278,13.97440554314796,0 14.84487049785213,14.01695105963744,0 12.70489590338878,14.27293037161499,0 14.95353525235777,14.73218902472499,0 14.28114117782965,14.61262377516035,0 13.06799073973982,14.83286345035982,0 13.60279699846308,12.20295198971654,0 12.68816488185228,15.81141680713469,0 13.88291727981215,14.11808370066965,0 14.016482216113,14.33509982485053,0 15.36576550135049,15.82610475260424,0 13.57764756126836,14.88045533202498,0 13.3918924208501,14.34497756139911,0 13.69362090262048,15.92189939882443,0 12.87853442397187,13.20174479842375,0 13.69916365173765,15.41800069841461,0 14.01609081001448,15.82165925226776,0 14.5899650464961,16.38090675134464,0 15.00784342040606,15.50954333819685,0 14.05950746445452,13.75788684204651,0 14.46114683681014,13.34425721343066,0 14.64474777063343,15.03905866347516,0 13.85478898285457,15.86614260965412,0 14.2814175097121,14.02340696081207,0 14.93304554162803,14.32639552072927,0 13.7693080678919,16.51310530416839,0 13.44404345182867,15.07922662749323,0 14.0317928593353,14.40986664465888,0 13.81946840229293,15.58676798397279,0 16.50656640573653,15.22029747467542,0 12.20423230665472,14.32106064914233,0 14.8819298948981,16.36162230554352,0 15.16030999546341,15.14972042192441,0 11.78759609450762,14.55034168613148,0 12.88388298331717,14.57250347912669,0 13.62023705917705,16.42369250161395,0 14.53049363223479,15.44664319460541,0 12.64616608049998,15.10838775257841,0 15.54763373107359,16.43238820991158,0 14.4007699774828,15.21258204276164,0 15.21058389990948,14.93547994178749,0 15.06173440367518,15.11740665636805,0 14.86214589875373,14.70177771082854,0 15.40451989437227,15.34490711864667,0 13.79430574831448,14.68727111247282,0 14.63390271757003,16.30082803685785,0 12.45687580804446,15.54617986485219,0 13.99759772841731,16.73594542008409,0 12.93253733568772,12.62389976814524,0 13.70345190616539,14.71480993356161,0 13.12395594125503,15.44848980937747,0 13.81691009423219,14.09233539217894,0 13.02489337092878,14.25050251544228,0 14.53425534561566,15.76596516545384,0 13.25186260458783,16.3225231885698,0 13.23657554891477,15.33696609589177,0 12.1297131595538,12.66688846478064,0 14.3808873556303,16.03087164666765,0 15.98239721601976,15.52399453253037,0 13.75107909980303,13.64320737566979,0 13.35730012174231,13.42431786138274,0 13.08559089708043,14.86775905977197,0 13.6117330216296,14.86806413838196,0 15.1776173709485,14.15354188009321,0 14.15456588767872,15.28746897631645,0 13.22531906267953,13.9598546965538,0 13.94151500958564,14.76023193066396,0 15.39066478902675,15.71412823472551,0 13.17642606705518,13.67395694240669,0 13.38689005901117,14.66536821990745,0 15.15888821036137,14.78211270885843,0 14.55599224830758,14.04946255637684,0 14.62692885570043,14.29592015439668,0 13.28624407169681,15.6581260669439,0 13.8154823515179,14.1716943145893,0 14.3109896419094,16.25419059506493,0 13.53597112272297,15.77020127180871,0 14.80103055297733,13.81813140471321,0 13.77274485542839,14.64955360893938,0 13.76510156692244,15.02311286948475,0 14.05349835921094,13.93946896423697,0 15.30905390162218,16.04190604522437,0 13.15523771144825,16.9212211680188,0 12.69940390796505,13.99916733869651,0 14.3679922537568,16.75782353966251,0 13.2632541853177,14.09898705600851,0 11.91253508924009,14.61325734486844,0 13.37000592461161,15.18268143261131,0 15.99450697482097,15.4532938283601,0 14.15764860588238,13.77083846575649,0 14.96982662482653,15.59222552688896,0 14.75068711060737,15.46889187883478,0 13.33027919659259,14.34699591207669,0 13.05002153442813,14.68726188711367,0 13.77642646984253,14.23618563920568,0 15.17426585206286,15.5095749119089,0 14.21251759323552,15.08270517066944,0 13.82089482923982,15.61146315929325,0 14.12355955034152,14.95509753853501,0 14.54752171050364,14.85861945287413,0 14.09944359402792,16.03131199865159,0 14.57730180008498,14.25667659137451,0 14.52331832390665,14.2300499886642,0 14.30044704017983,15.26643299159799,0 14.55839285912062,15.48691913661183,0 14.22494186934392,15.86117827216267,0 12.04029344338111,13.34483350304919,0 13.07931049306772,9.347878119065356,1 21.7271340215587,4.126232224310076,1 12.4766288158932,14.4593696654036,1 19.5825727723877,10.4116189967773,1 23.33986752737173,16.29887355272053,1 18.2611884383863,17.9783089957873,1 4.752612823293772,24.35040724802435,1 ================================================ FILE: data/world-happiness-report-2017.csv ================================================ "Country","Happiness.Rank","Happiness.Score","Whisker.high","Whisker.low","Economy..GDP.per.Capita.","Family","Health..Life.Expectancy.","Freedom","Generosity","Trust..Government.Corruption.","Dystopia.Residual" "Norway",1,7.53700017929077,7.59444482058287,7.47955553799868,1.61646318435669,1.53352355957031,0.796666502952576,0.635422587394714,0.36201223731041,0.315963834524155,2.27702665328979 "Denmark",2,7.52199983596802,7.58172806486487,7.46227160707116,1.48238301277161,1.55112159252167,0.792565524578094,0.626006722450256,0.355280488729477,0.40077006816864,2.31370735168457 "Iceland",3,7.50400018692017,7.62203047305346,7.38596990078688,1.480633020401,1.6105740070343,0.833552122116089,0.627162635326385,0.475540220737457,0.153526559472084,2.32271528244019 "Switzerland",4,7.49399995803833,7.56177242040634,7.42622749567032,1.56497955322266,1.51691174507141,0.858131289482117,0.620070576667786,0.290549278259277,0.367007285356522,2.2767162322998 "Finland",5,7.4689998626709,7.52754207581282,7.41045764952898,1.44357192516327,1.5402467250824,0.80915766954422,0.617950856685638,0.24548277258873,0.38261154294014,2.4301815032959 "Netherlands",6,7.3769998550415,7.42742584124207,7.32657386884093,1.50394463539124,1.42893922328949,0.810696125030518,0.585384488105774,0.470489829778671,0.282661825418472,2.29480409622192 "Canada",7,7.31599998474121,7.38440283536911,7.24759713411331,1.47920441627502,1.48134899139404,0.83455765247345,0.611100912094116,0.435539722442627,0.287371516227722,2.18726444244385 "New Zealand",8,7.31400012969971,7.3795104418695,7.24848981752992,1.40570604801178,1.54819512367249,0.816759705543518,0.614062130451202,0.500005125999451,0.382816702127457,2.0464563369751 "Sweden",9,7.28399991989136,7.34409487739205,7.22390496239066,1.49438726902008,1.47816216945648,0.830875158309937,0.612924098968506,0.385399252176285,0.384398728609085,2.09753799438477 "Australia",10,7.28399991989136,7.35665122494102,7.2113486148417,1.484414935112,1.51004195213318,0.84388679265976,0.601607382297516,0.477699249982834,0.301183730363846,2.06521081924438 "Israel",11,7.21299982070923,7.27985325649381,7.14614638492465,1.37538242340088,1.37628996372223,0.83840399980545,0.405988603830338,0.330082654953003,0.0852421000599861,2.80175733566284 "Costa Rica",12,7.0789999961853,7.16811166629195,6.98988832607865,1.10970628261566,1.41640365123749,0.759509265422821,0.580131649971008,0.214613229036331,0.100106589496136,2.89863920211792 "Austria",13,7.00600004196167,7.07066981211305,6.94133027181029,1.48709726333618,1.4599449634552,0.815328419208527,0.567766189575195,0.316472321748734,0.221060365438461,2.1385064125061 "United States",14,6.99300003051758,7.07465674757957,6.91134331345558,1.54625928401947,1.41992056369781,0.77428662776947,0.505740523338318,0.392578780651093,0.135638788342476,2.2181134223938 "Ireland",15,6.97700023651123,7.04335166752338,6.91064880549908,1.53570663928986,1.55823111534119,0.80978262424469,0.573110342025757,0.42785832285881,0.29838815331459,1.77386903762817 "Germany",16,6.95100021362305,7.00538156926632,6.89661885797977,1.48792338371277,1.47252035140991,0.798950731754303,0.562511384487152,0.336269170045853,0.276731938123703,2.01576995849609 "Belgium",17,6.89099979400635,6.95582075044513,6.82617883756757,1.46378076076508,1.46231269836426,0.818091869354248,0.539770722389221,0.231503337621689,0.251343131065369,2.12421035766602 "Luxembourg",18,6.86299991607666,6.92368609987199,6.80231373228133,1.74194359779358,1.45758366584778,0.845089495182037,0.59662789106369,0.283180981874466,0.31883442401886,1.61951208114624 "United Kingdom",19,6.71400022506714,6.78379176110029,6.64420868903399,1.44163393974304,1.49646008014679,0.805335938930511,0.508190035820007,0.492774158716202,0.265428066253662,1.70414352416992 "Chile",20,6.65199995040894,6.73925056010485,6.56474934071302,1.25278460979462,1.28402495384216,0.819479703903198,0.376895278692245,0.326662421226501,0.0822879821062088,2.50958585739136 "United Arab Emirates",21,6.64799976348877,6.72204730376601,6.57395222321153,1.62634336948395,1.26641023159027,0.726798236370087,0.60834527015686,0.3609419465065,0.324489563703537,1.734703540802 "Brazil",22,6.63500022888184,6.72546950161457,6.5445309561491,1.10735321044922,1.43130600452423,0.616552352905273,0.437453746795654,0.16234989464283,0.111092761158943,2.76926708221436 "Czech Republic",23,6.60900020599365,6.68386246263981,6.5341379493475,1.35268235206604,1.43388521671295,0.754444003105164,0.490946173667908,0.0881067588925362,0.0368729270994663,2.45186185836792 "Argentina",24,6.59899997711182,6.69008508607745,6.50791486814618,1.18529546260834,1.44045114517212,0.695137083530426,0.494519203901291,0.109457060694695,0.059739887714386,2.61400532722473 "Mexico",25,6.57800006866455,6.67114890769124,6.48485122963786,1.15318381786346,1.210862159729,0.709978997707367,0.412730008363724,0.120990432798862,0.132774114608765,2.83715486526489 "Singapore",26,6.57200002670288,6.63672306910157,6.50727698430419,1.69227766990662,1.35381436347961,0.949492394924164,0.549840569496155,0.345965981483459,0.46430778503418,1.21636199951172 "Malta",27,6.52699995040894,6.59839677289128,6.45560312792659,1.34327983856201,1.48841166496277,0.821944236755371,0.588767051696777,0.574730575084686,0.153066068887711,1.55686283111572 "Uruguay",28,6.4539999961853,6.54590621769428,6.36209377467632,1.21755969524384,1.41222786903381,0.719216823577881,0.57939225435257,0.175096929073334,0.178061872720718,2.17240953445435 "Guatemala",29,6.4539999961853,6.56687397271395,6.34112601965666,0.872001945972443,1.25558519363403,0.540239989757538,0.531310617923737,0.283488392829895,0.0772232785820961,2.89389109611511 "Panama",30,6.4520001411438,6.55713071614504,6.34686956614256,1.23374843597412,1.37319254875183,0.706156134605408,0.550026834011078,0.21055693924427,0.070983923971653,2.30719995498657 "France",31,6.44199991226196,6.51576780244708,6.36823202207685,1.43092346191406,1.38777685165405,0.844465851783752,0.470222115516663,0.129762306809425,0.172502428293228,2.00595474243164 "Thailand",32,6.42399978637695,6.50911685571074,6.33888271704316,1.12786877155304,1.42579245567322,0.647239029407501,0.580200731754303,0.572123110294342,0.0316127352416515,2.03950834274292 "Taiwan Province of China",33,6.42199993133545,6.49459602192044,6.34940384075046,1.43362653255463,1.38456535339355,0.793984234333038,0.361466586589813,0.258360475301743,0.0638292357325554,2.1266074180603 "Spain",34,6.40299987792969,6.4710548453033,6.33494491055608,1.38439786434174,1.53209090232849,0.888960599899292,0.408781230449677,0.190133571624756,0.0709140971302986,1.92775774002075 "Qatar",35,6.375,6.56847681432962,6.18152318567038,1.87076568603516,1.27429687976837,0.710098087787628,0.604130983352661,0.330473870038986,0.439299255609512,1.1454644203186 "Colombia",36,6.35699987411499,6.45202005416155,6.26197969406843,1.07062232494354,1.4021829366684,0.595027923583984,0.477487415075302,0.149014472961426,0.0466687418520451,2.61606812477112 "Saudi Arabia",37,6.3439998626709,6.44416661202908,6.24383311331272,1.53062355518341,1.28667759895325,0.590148329734802,0.449750572443008,0.147616013884544,0.27343225479126,2.0654296875 "Trinidad and Tobago",38,6.16800022125244,6.38153389066458,5.95446655184031,1.36135590076447,1.3802285194397,0.519983291625977,0.518630743026733,0.325296461582184,0.00896481610834599,2.05324745178223 "Kuwait",39,6.10500001907349,6.1919569888711,6.01804304927588,1.63295245170593,1.25969874858856,0.632105708122253,0.496337592601776,0.228289797902107,0.215159550309181,1.64042520523071 "Slovakia",40,6.09800004959106,6.1773484121263,6.01865168705583,1.32539355754852,1.50505924224854,0.712732911109924,0.295817464590073,0.136544480919838,0.0242108516395092,2.09777665138245 "Bahrain",41,6.08699989318848,6.17898906782269,5.99501071855426,1.48841226100922,1.32311046123505,0.653133034706116,0.536746919155121,0.172668486833572,0.257042169570923,1.65614938735962 "Malaysia",42,6.08400011062622,6.17997963652015,5.98802058473229,1.29121541976929,1.28464603424072,0.618784427642822,0.402264982461929,0.416608929634094,0.0656007081270218,2.00444889068604 "Nicaragua",43,6.07100009918213,6.18658360034227,5.95541659802198,0.737299203872681,1.28721570968628,0.653095960617065,0.447551846504211,0.301674216985703,0.130687981843948,2.51393055915833 "Ecuador",44,6.00799989700317,6.10584767535329,5.91015211865306,1.00082039833069,1.28616881370544,0.685636222362518,0.4551981985569,0.150112465023994,0.140134647488594,2.29035258293152 "El Salvador",45,6.00299978256226,6.108635122329,5.89736444279552,0.909784495830536,1.18212509155273,0.596018552780151,0.432452529668808,0.0782579854130745,0.0899809598922729,2.7145938873291 "Poland",46,5.97300004959106,6.05390834122896,5.89209175795317,1.29178786277771,1.44571197032928,0.699475347995758,0.520342111587524,0.158465966582298,0.0593078061938286,1.79772281646729 "Uzbekistan",47,5.97100019454956,6.06553757295012,5.876462816149,0.786441087722778,1.54896914958954,0.498272627592087,0.658248662948608,0.415983647108078,0.246528223156929,1.81691360473633 "Italy",48,5.96400022506714,6.04273690596223,5.88526354417205,1.39506661891937,1.44492328166962,0.853144347667694,0.256450712680817,0.17278964817524,0.0280280914157629,1.81331205368042 "Russia",49,5.96299982070923,6.03027490749955,5.89572473391891,1.28177809715271,1.46928238868713,0.547349333763123,0.373783111572266,0.0522638224065304,0.0329628810286522,2.20560741424561 "Belize",50,5.95599985122681,6.19724231779575,5.71475738465786,0.907975316047668,1.08141779899597,0.450191766023636,0.547509372234344,0.240015640854836,0.0965810716152191,2.63195562362671 "Japan",51,5.92000007629395,5.99071944460273,5.84928070798516,1.41691517829895,1.43633782863617,0.913475871086121,0.505625545978546,0.12057276815176,0.163760736584663,1.36322355270386 "Lithuania",52,5.90199995040894,5.98266964137554,5.82133025944233,1.31458234786987,1.47351610660553,0.62894994020462,0.234231784939766,0.010164656676352,0.0118656428530812,2.22844052314758 "Algeria",53,5.87200021743774,5.97828643366694,5.76571400120854,1.09186446666718,1.1462174654007,0.617584645748138,0.233335807919502,0.0694366469979286,0.146096110343933,2.56760382652283 "Latvia",54,5.84999990463257,5.92026353821158,5.77973627105355,1.26074862480164,1.40471494197845,0.638566970825195,0.325707912445068,0.153074786067009,0.0738427266478539,1.99365520477295 "South Korea",55,5.83799982070923,5.92255902826786,5.7534406131506,1.40167844295502,1.12827444076538,0.900214076042175,0.257921665906906,0.206674367189407,0.0632826685905457,1.88037800788879 "Moldova",56,5.83799982070923,5.90837083846331,5.76762880295515,0.728870630264282,1.25182557106018,0.589465200901031,0.240729048848152,0.208779126405716,0.0100912861526012,2.80780839920044 "Romania",57,5.82499980926514,5.91969415679574,5.73030546173453,1.21768391132355,1.15009129047394,0.685158312320709,0.457003742456436,0.133519917726517,0.00438790069893003,2.17683148384094 "Bolivia",58,5.82299995422363,5.9039769025147,5.74202300593257,0.833756566047668,1.22761905193329,0.473630249500275,0.558732926845551,0.22556072473526,0.0604777261614799,2.44327902793884 "Turkmenistan",59,5.82200002670288,5.88518087550998,5.75881917789578,1.13077676296234,1.49314916133881,0.437726080417633,0.41827192902565,0.24992498755455,0.259270340204239,1.83290982246399 "Kazakhstan",60,5.81899976730347,5.90364177465439,5.73435775995255,1.28455626964569,1.38436901569366,0.606041550636292,0.437454283237457,0.201964423060417,0.119282886385918,1.78489255905151 "North Cyprus",61,5.80999994277954,5.89736646488309,5.72263342067599,1.3469113111496,1.18630337715149,0.834647238254547,0.471203625202179,0.266845703125,0.155353352427483,1.54915761947632 "Slovenia",62,5.75799989700317,5.84222516000271,5.67377463400364,1.3412059545517,1.45251882076263,0.790828227996826,0.572575807571411,0.242649093270302,0.0451289787888527,1.31331729888916 "Peru",63,5.71500015258789,5.81194677859545,5.61805352658033,1.03522527217865,1.21877038478851,0.630166113376617,0.450002878904343,0.126819714903831,0.0470490865409374,2.20726943016052 "Mauritius",64,5.62900018692017,5.72986219167709,5.52813818216324,1.18939554691315,1.20956099033356,0.638007462024689,0.491247326135635,0.360933750867844,0.0421815551817417,1.6975839138031 "Cyprus",65,5.62099981307983,5.71469269931316,5.5273069268465,1.35593807697296,1.13136327266693,0.84471470117569,0.355111539363861,0.271254301071167,0.0412379764020443,1.62124919891357 "Estonia",66,5.61100006103516,5.68813987419009,5.53386024788022,1.32087934017181,1.47667109966278,0.695168316364288,0.479131430387497,0.0988908112049103,0.183248922228813,1.35750865936279 "Belarus",67,5.56899976730347,5.64611424401402,5.49188529059291,1.15655755996704,1.44494521617889,0.637714266777039,0.295400261878967,0.15513750910759,0.156313821673393,1.72323298454285 "Libya",68,5.52500009536743,5.67695380687714,5.37304638385773,1.10180306434631,1.35756433010101,0.520169019699097,0.465733230113983,0.152073666453362,0.0926102101802826,1.83501124382019 "Turkey",69,5.5,5.59486496329308,5.40513503670692,1.19827437400818,1.33775317668915,0.637605607509613,0.300740599632263,0.0466930419206619,0.0996715798974037,1.87927794456482 "Paraguay",70,5.49300003051758,5.57738126963377,5.40861879140139,0.932537317276001,1.50728487968445,0.579250693321228,0.473507791757584,0.224150657653809,0.091065913438797,1.6853334903717 "Hong Kong S.A.R., China",71,5.47200012207031,5.54959417313337,5.39440607100725,1.55167484283447,1.26279091835022,0.943062424659729,0.490968644618988,0.374465793371201,0.293933749198914,0.554633140563965 "Philippines",72,5.42999982833862,5.54533505424857,5.31466460242867,0.85769921541214,1.25391757488251,0.468009054660797,0.585214674472809,0.193513423204422,0.0993318930268288,1.97260475158691 "Serbia",73,5.39499998092651,5.49156965613365,5.29843030571938,1.06931757926941,1.25818979740143,0.65078467130661,0.208715528249741,0.220125883817673,0.0409037806093693,1.94708442687988 "Jordan",74,5.33599996566772,5.44841002240777,5.22358990892768,0.991012394428253,1.23908889293671,0.604590058326721,0.418421149253845,0.172170460224152,0.11980327218771,1.79117655754089 "Hungary",75,5.32399988174438,5.40303970918059,5.24496005430818,1.2860119342804,1.34313309192657,0.687763452529907,0.175863519310951,0.0784016624093056,0.0366369374096394,1.71645927429199 "Jamaica",76,5.31099987030029,5.58139872848988,5.04060101211071,0.925579309463501,1.36821806430817,0.641022384166718,0.474307239055634,0.233818337321281,0.0552677810192108,1.61232566833496 "Croatia",77,5.29300022125244,5.39177720457315,5.19422323793173,1.22255623340607,0.96798300743103,0.701288521289825,0.255772292613983,0.248002976179123,0.0431031100451946,1.85449242591858 "Kosovo",78,5.27899980545044,5.36484799548984,5.19315161541104,0.951484382152557,1.13785350322723,0.541452050209045,0.260287940502167,0.319931447505951,0.0574716180562973,2.01054072380066 "China",79,5.27299976348877,5.31927808977663,5.2267214372009,1.08116579055786,1.16083741188049,0.741415500640869,0.472787708044052,0.0288068410009146,0.0227942746132612,1.76493859291077 "Pakistan",80,5.26900005340576,5.35998364135623,5.17801646545529,0.72688353061676,0.672690689563751,0.402047783136368,0.23521526157856,0.315446019172668,0.124348066747189,2.79248929023743 "Indonesia",81,5.26200008392334,5.35288859814405,5.17111156970263,0.995538592338562,1.27444469928741,0.492345720529556,0.443323463201523,0.611704587936401,0.0153171354904771,1.42947697639465 "Venezuela",82,5.25,5.3700319455564,5.1299680544436,1.12843120098114,1.43133759498596,0.617144227027893,0.153997123241425,0.0650196298956871,0.0644911229610443,1.78946375846863 "Montenegro",83,5.23699998855591,5.34104444056749,5.13295553654432,1.12112903594971,1.23837649822235,0.667464673519135,0.194989055395126,0.197911024093628,0.0881741940975189,1.72919154167175 "Morocco",84,5.2350001335144,5.31834096476436,5.15165930226445,0.878114581108093,0.774864435195923,0.59771066904068,0.408158332109451,0.0322099551558495,0.0877631828188896,2.45618939399719 "Azerbaijan",85,5.23400020599365,5.29928653523326,5.16871387675405,1.15360176563263,1.15240025520325,0.540775775909424,0.398155838251114,0.0452693402767181,0.180987507104874,1.76248168945312 "Dominican Republic",86,5.23000001907349,5.34906088516116,5.11093915298581,1.07937383651733,1.40241670608521,0.574873745441437,0.55258983373642,0.186967849731445,0.113945253193378,1.31946516036987 "Greece",87,5.22700023651123,5.3252461694181,5.12875430360436,1.28948748111725,1.23941457271576,0.810198903083801,0.0957312509417534,0,0.04328977689147,1.74922156333923 "Lebanon",88,5.22499990463257,5.31888228848577,5.13111752077937,1.07498753070831,1.12962424755096,0.735081076622009,0.288515985012054,0.264450758695602,0.037513829767704,1.69507384300232 "Portugal",89,5.19500017166138,5.28504173308611,5.10495861023665,1.3151752948761,1.36704301834106,0.795843541622162,0.498465299606323,0.0951027125120163,0.0158694516867399,1.10768270492554 "Bosnia and Herzegovina",90,5.18200016021729,5.27633568674326,5.08766463369131,0.982409417629242,1.0693359375,0.705186307430267,0.204403176903725,0.328867495059967,0,1.89217257499695 "Honduras",91,5.18100023269653,5.30158279687166,5.0604176685214,0.730573117733002,1.14394497871399,0.582569479942322,0.348079860210419,0.236188873648643,0.0733454525470734,2.06581115722656 "Macedonia",92,5.17500019073486,5.27217263966799,5.07782774180174,1.06457793712616,1.20789301395416,0.644948184490204,0.325905978679657,0.25376096367836,0.0602777935564518,1.6174693107605 "Somalia",93,5.15100002288818,5.24248370990157,5.0595163358748,0.0226431842893362,0.721151351928711,0.113989137113094,0.602126955986023,0.291631311178207,0.282410323619843,3.11748456954956 "Vietnam",94,5.07399988174438,5.14728076457977,5.000718998909,0.788547575473785,1.27749133110046,0.652168989181519,0.571055591106415,0.234968051314354,0.0876332372426987,1.46231865882874 "Nigeria",95,5.07399988174438,5.20950013548136,4.93849962800741,0.783756256103516,1.21577048301697,0.0569157302379608,0.394952565431595,0.230947196483612,0.0261215660721064,2.36539053916931 "Tajikistan",96,5.04099988937378,5.11142559587956,4.970574182868,0.524713635444641,1.27146327495575,0.529235124588013,0.471566706895828,0.248997643589973,0.146377146244049,1.84904932975769 "Bhutan",97,5.01100015640259,5.07933456212282,4.94266575068235,0.885416388511658,1.34012651443481,0.495879292488098,0.501537680625916,0.474054545164108,0.173380389809608,1.14018440246582 "Kyrgyzstan",98,5.00400018692017,5.08991990312934,4.91808047071099,0.596220076084137,1.39423859119415,0.553457796573639,0.454943388700485,0.42858037352562,0.0394391790032387,1.53672313690186 "Nepal",99,4.96199989318848,5.06735607936978,4.85664370700717,0.479820191860199,1.17928326129913,0.504130780696869,0.440305948257446,0.394096165895462,0.0729755461215973,1.8912410736084 "Mongolia",100,4.95499992370605,5.0216795091331,4.88832033827901,1.02723586559296,1.4930112361908,0.557783484458923,0.394143968820572,0.338464230298996,0.0329022891819477,1.11129236221313 "South Africa",101,4.8289999961853,4.92943518772721,4.72856480464339,1.05469870567322,1.38478863239288,0.187080070376396,0.479246735572815,0.139362379908562,0.0725094974040985,1.51090860366821 "Tunisia",102,4.80499982833862,4.88436700701714,4.72563264966011,1.00726580619812,0.868351459503174,0.613212049007416,0.289680689573288,0.0496933571994305,0.0867231488227844,1.89025115966797 "Palestinian Territories",103,4.77500009536743,4.88184834256768,4.66815184816718,0.716249227523804,1.15564715862274,0.565666973590851,0.25471106171608,0.114173173904419,0.0892826020717621,1.8788902759552 "Egypt",104,4.7350001335144,4.82513378962874,4.64486647740006,0.989701807498932,0.997471392154694,0.520187258720398,0.282110154628754,0.128631442785263,0.114381365478039,1.70216107368469 "Bulgaria",105,4.71400022506714,4.80369470641017,4.62430574372411,1.1614590883255,1.43437945842743,0.708217680454254,0.289231717586517,0.113177694380283,0.0110515309497714,0.996139287948608 "Sierra Leone",106,4.70900011062622,4.85064333498478,4.56735688626766,0.36842092871666,0.984136044979095,0.00556475389748812,0.318697690963745,0.293040901422501,0.0710951760411263,2.66845989227295 "Cameroon",107,4.69500017166138,4.79654085725546,4.5934594860673,0.564305365085602,0.946018218994141,0.132892116904259,0.430388748645782,0.236298456788063,0.0513066314160824,2.3336455821991 "Iran",108,4.69199991226196,4.79822470769286,4.58577511683106,1.15687310695648,0.711551249027252,0.639333188533783,0.249322608113289,0.387242913246155,0.048761073499918,1.49873495101929 "Albania",109,4.64400005340576,4.75246400639415,4.53553610041738,0.996192753314972,0.803685247898102,0.731159746646881,0.381498634815216,0.201312944293022,0.0398642159998417,1.49044156074524 "Bangladesh",110,4.60799980163574,4.68982165828347,4.52617794498801,0.586682975292206,0.735131740570068,0.533241033554077,0.478356659412384,0.172255352139473,0.123717859387398,1.97873616218567 "Namibia",111,4.57399988174438,4.77035474091768,4.37764502257109,0.964434325695038,1.0984708070755,0.33861181139946,0.520303547382355,0.0771337449550629,0.0931469723582268,1.4818902015686 "Kenya",112,4.55299997329712,4.65569159060717,4.45030835598707,0.560479462146759,1.06795072555542,0.309988349676132,0.452763766050339,0.444860309362411,0.0646413192152977,1.6519021987915 "Mozambique",113,4.55000019073486,4.77410232633352,4.3258980551362,0.234305649995804,0.870701014995575,0.106654435396194,0.480791091918945,0.322228103876114,0.179436385631561,2.35565090179443 "Myanmar",114,4.54500007629395,4.61473994642496,4.47526020616293,0.367110550403595,1.12323594093323,0.397522568702698,0.514492034912109,0.838075160980225,0.188816204667091,1.11529040336609 "Senegal",115,4.53499984741211,4.6016037812829,4.46839591354132,0.479309022426605,1.17969191074371,0.409362852573395,0.377922266721725,0.183468893170357,0.115460447967052,1.78964614868164 "Zambia",116,4.51399993896484,4.64410550147295,4.38389437645674,0.636406779289246,1.00318729877472,0.257835894823074,0.461603492498398,0.249580144882202,0.0782135501503944,1.82670545578003 "Iraq",117,4.49700021743774,4.62259140968323,4.37140902519226,1.10271048545837,0.978613197803497,0.501180469989777,0.288555532693863,0.19963726401329,0.107215754687786,1.31890726089478 "Gabon",118,4.46500015258789,4.5573617656529,4.37263853952289,1.1982102394104,1.1556202173233,0.356578588485718,0.312328577041626,0.0437853783369064,0.0760467872023582,1.32291626930237 "Ethiopia",119,4.46000003814697,4.54272867664695,4.377271399647,0.339233845472336,0.86466920375824,0.353409707546234,0.408842742443085,0.312650740146637,0.165455713868141,2.01574373245239 "Sri Lanka",120,4.44000005722046,4.55344719231129,4.32655292212963,1.00985014438629,1.25997638702393,0.625130832195282,0.561213254928589,0.490863561630249,0.0736539661884308,0.419389247894287 "Armenia",121,4.37599992752075,4.46673461228609,4.28526524275541,0.900596737861633,1.00748372077942,0.637524425983429,0.198303267359734,0.0834880918264389,0.0266744215041399,1.5214991569519 "India",122,4.31500005722046,4.37152201749384,4.25847809694707,0.792221248149872,0.754372596740723,0.455427616834641,0.469987004995346,0.231538489460945,0.0922268852591515,1.5191171169281 "Mauritania",123,4.29199981689453,4.37716361626983,4.20683601751924,0.648457288742065,1.2720308303833,0.285349279642105,0.0960980430245399,0.201870024204254,0.136957004666328,1.65163731575012 "Congo (Brazzaville)",124,4.29099988937378,4.41005350500345,4.17194627374411,0.808964252471924,0.832044363021851,0.28995743393898,0.435025870800018,0.120852127671242,0.0796181336045265,1.72413563728333 "Georgia",125,4.28599977493286,4.37493396580219,4.19706558406353,0.950612664222717,0.57061493396759,0.649546980857849,0.309410035610199,0.0540088154375553,0.251666635274887,1.50013780593872 "Congo (Kinshasa)",126,4.28000020980835,4.35781083270907,4.20218958690763,0.0921023488044739,1.22902345657349,0.191407024860382,0.235961347818375,0.246455833315849,0.0602413564920425,2.22495865821838 "Mali",127,4.19000005722046,4.26967071101069,4.11032940343022,0.476180493831635,1.28147339820862,0.169365674257278,0.306613743305206,0.183354198932648,0.104970246553421,1.66819095611572 "Ivory Coast",128,4.17999982833862,4.27518256321549,4.08481709346175,0.603048920631409,0.904780030250549,0.0486421696841717,0.447706192731857,0.201237469911575,0.130061775445938,1.84496426582336 "Cambodia",129,4.16800022125244,4.27851781353354,4.05748262897134,0.601765096187592,1.00623834133148,0.429783403873444,0.633375823497772,0.385922968387604,0.0681059509515762,1.04294109344482 "Sudan",130,4.13899993896484,4.34574716508389,3.9322527128458,0.65951669216156,1.21400856971741,0.290920823812485,0.0149958552792668,0.182317450642586,0.089847519993782,1.68706583976746 "Ghana",131,4.11999988555908,4.22270720854402,4.01729256257415,0.667224824428558,0.873664736747742,0.295637726783752,0.423026293516159,0.256923943758011,0.0253363698720932,1.57786750793457 "Ukraine",132,4.09600019454956,4.18541010454297,4.00659028455615,0.89465194940567,1.39453756809235,0.575903952121735,0.122974775731564,0.270061463117599,0.0230294708162546,0.814382314682007 "Uganda",133,4.08099985122681,4.19579996705055,3.96619973540306,0.381430715322495,1.12982773780823,0.217632606625557,0.443185955286026,0.325766056776047,0.057069718837738,1.526362657547 "Burkina Faso",134,4.03200006484985,4.12405906438828,3.93994106531143,0.3502277135849,1.04328000545502,0.215844258666039,0.324367851018906,0.250864684581757,0.120328105986118,1.72721290588379 "Niger",135,4.02799987792969,4.11194681972265,3.94405293613672,0.161925330758095,0.993025004863739,0.26850500702858,0.36365869641304,0.228673845529556,0.138572946190834,1.87398338317871 "Malawi",136,3.97000002861023,4.07747881740332,3.86252123981714,0.233442038297653,0.512568831443787,0.315089583396912,0.466914653778076,0.287170469760895,0.0727116540074348,2.08178615570068 "Chad",137,3.93600010871887,4.0347115239501,3.83728869348764,0.438012987375259,0.953855872154236,0.0411347150802612,0.16234202682972,0.216113850474358,0.0535818822681904,2.07123804092407 "Zimbabwe",138,3.875,3.97869964271784,3.77130035728216,0.375846534967422,1.08309590816498,0.196763753890991,0.336384207010269,0.189143493771553,0.0953753814101219,1.59797024726868 "Lesotho",139,3.80800008773804,4.04434397548437,3.5716561999917,0.521021246910095,1.19009518623352,0,0.390661299228668,0.157497271895409,0.119094640016556,1.42983531951904 "Angola",140,3.79500007629395,3.95164193540812,3.63835821717978,0.858428180217743,1.10441195964813,0.0498686656355858,0,0.097926490008831,0.0697203353047371,1.61448240280151 "Afghanistan",141,3.79399991035461,3.87366141527891,3.71433840543032,0.401477217674255,0.581543326377869,0.180746778845787,0.106179520487785,0.311870932579041,0.0611578300595284,2.15080118179321 "Botswana",142,3.76600003242493,3.87412266626954,3.65787739858031,1.12209415435791,1.22155499458313,0.341755509376526,0.505196332931519,0.0993484482169151,0.0985831990838051,0.3779137134552 "Benin",143,3.65700006484985,3.74578355133533,3.56821657836437,0.431085407733917,0.435299843549728,0.209930211305618,0.425962775945663,0.207948461174965,0.0609290152788162,1.88563096523285 "Madagascar",144,3.64400005340576,3.71431910589337,3.57368100091815,0.305808693170547,0.913020372390747,0.375223308801651,0.189196765422821,0.208732530474663,0.0672319754958153,1.58461260795593 "Haiti",145,3.6029999256134,3.73471479773521,3.47128505349159,0.368610262870789,0.640449821949005,0.277321130037308,0.0303698573261499,0.489203780889511,0.0998721495270729,1.69716763496399 "Yemen",146,3.59299993515015,3.69275031983852,3.49324955046177,0.591683447360992,0.93538224697113,0.310080915689468,0.249463722109795,0.104125209152699,0.0567674227058887,1.34560060501099 "South Sudan",147,3.59100008010864,3.72553858578205,3.45646157443523,0.39724862575531,0.601323127746582,0.163486003875732,0.147062435746193,0.285670816898346,0.116793513298035,1.87956738471985 "Liberia",148,3.53299999237061,3.65375626087189,3.41224372386932,0.119041793048382,0.872117936611176,0.229918196797371,0.332881182432175,0.26654988527298,0.0389482490718365,1.67328596115112 "Guinea",149,3.50699996948242,3.58442812889814,3.4295718100667,0.244549930095673,0.791244685649872,0.194129139184952,0.348587512969971,0.264815092086792,0.110937617719173,1.55231189727783 "Togo",150,3.49499988555908,3.59403811171651,3.39596165940166,0.305444717407227,0.431882530450821,0.247105568647385,0.38042613863945,0.196896150708199,0.0956650152802467,1.83722925186157 "Rwanda",151,3.47099995613098,3.54303023353219,3.39896967872977,0.368745893239975,0.945707023143768,0.326424807310104,0.581843852996826,0.252756029367447,0.455220013856888,0.540061235427856 "Syria",152,3.46199989318848,3.66366855680943,3.26033122956753,0.777153134346008,0.396102607250214,0.50053334236145,0.0815394446253777,0.493663728237152,0.151347130537033,1.06157350540161 "Tanzania",153,3.34899997711182,3.46142975538969,3.23657019883394,0.511135876178741,1.04198980331421,0.364509284496307,0.390017777681351,0.354256361722946,0.0660351067781448,0.621130466461182 "Burundi",154,2.90499997138977,3.07469033300877,2.73530960977077,0.091622568666935,0.629793584346771,0.151610791683197,0.0599007532000542,0.204435184597969,0.0841479450464249,1.68302416801453 "Central African Republic",155,2.69300007820129,2.86488426923752,2.52111588716507,0,0,0.0187726859003305,0.270842045545578,0.280876487493515,0.0565650761127472,2.06600475311279 ================================================ FILE: homemade/__init__.py ================================================ ================================================ FILE: homemade/anomaly_detection/README.md ================================================ # Anomaly Detection Using Gaussian Distribution ## Jupyter Demos ▶️ [Demo | Anomaly Detection](https://nbviewer.jupyter.org/github/trekhleb/homemade-machine-learning/blob/master/notebooks/anomaly_detection/anomaly_detection_gaussian_demo.ipynb) - find anomalies in server operational parameters like `latency` and `threshold` ## Gaussian (Normal) Distribution The **normal** (or **Gaussian**) **distribution** is a very common continuous probability distribution. Normal distributions are important in statistics and are often used in the natural and social sciences to represent real-valued random variables whose distributions are not known. A random variable with a Gaussian distribution is said to be normally distributed and is called a normal deviate. Let's say: ![x-in-R](../../images/anomaly_detection/x-in-R.svg) If _x_ is normally distributed then it may be displayed as follows. ![Gaussian Distribution](https://upload.wikimedia.org/wikipedia/commons/7/74/Normal_Distribution_PDF.svg) ![mu](../../images/anomaly_detection/mu.svg) - mean value, ![sigma-2](../../images/anomaly_detection/sigma-2.svg) - variance. ![x-normal](../../images/anomaly_detection/x-normal.svg) - "~" means that _"x is distributed as ..."_ Then Gaussian distribution (probability that some _x_ may be a part of distribution with certain mean and variance) is given by: ![Gaussian Distribution](../../images/anomaly_detection/p.svg) ## Estimating Parameters for a Gaussian We may use the following formulas to estimate Gaussian parameters (mean and variation) for _ith_ feature: ![mu-i](../../images/anomaly_detection/mu-i.svg) ![sigma-i](../../images/anomaly_detection/sigma-i.svg) ![i](../../images/anomaly_detection/i.svg) ![m](../../images/anomaly_detection/m.svg) - number of training examples. ![n](../../images/anomaly_detection/n.svg) - number of features. ## Density Estimation So we have a training set: ![Training Set](../../images/anomaly_detection/training-set.svg) ![x-in-R](../../images/anomaly_detection/x-in-R.svg) We assume that each feature of the training set is normally distributed: ![x-1](../../images/anomaly_detection/x-1.svg) ![x-2](../../images/anomaly_detection/x-2.svg) ![x-n](../../images/anomaly_detection/x-n.svg) Then: ![p-x](../../images/anomaly_detection/p-x.svg) ![p-x-2](../../images/anomaly_detection/p-x-2.svg) ## Anomaly Detection Algorithm 1. Choose features ![x-i](../../images/anomaly_detection/x-i.svg) that might be indicative of anomalous examples (![Training Set](../../images/anomaly_detection/training-set.svg)). 2. Fit parameters ![params](../../images/anomaly_detection/params.svg) using formulas: ![mu-i](../../images/anomaly_detection/mu-i.svg) ![sigma-i](../../images/anomaly_detection/sigma-i.svg) 3. Given new example _x_, compute _p(x)_: ![p-x-2](../../images/anomaly_detection/p-x-2.svg) Anomaly if ![anomaly](../../images/anomaly_detection/anomaly.svg) ![epsilon](../../images/anomaly_detection/epsilon.svg) - probability threshold. ## Algorithm Evaluation The algorithm may be evaluated using _F1_ score. The F1 score is the harmonic average of the precision and recall, where an F1 score reaches its best value at _1_ (perfect precision and recall) and worst at _0_. ![F1 Score](https://upload.wikimedia.org/wikipedia/commons/2/26/Precisionrecall.svg) ![f1](../../images/anomaly_detection/f1.svg) Where: ![precision](../../images/anomaly_detection/precision.svg) ![recall](../../images/anomaly_detection/recall.svg) _tp_ - number of true positives. _fp_ - number of false positives. _fn_ - number of false negatives. ## References - [Machine Learning on Coursera](https://www.coursera.org/learn/machine-learning) - [Normal Distribution on Wikipedia](https://en.wikipedia.org/wiki/Normal_distribution) - [F1 Score on Wikipedia](https://en.wikipedia.org/wiki/F1_score) - [Precision and Recall on Wikipedia](https://en.wikipedia.org/wiki/Precision_and_recall) ================================================ FILE: homemade/anomaly_detection/__init__.py ================================================ """Anomaly Detection Module""" from .gaussian_anomaly_detection import GaussianAnomalyDetection ================================================ FILE: homemade/anomaly_detection/gaussian_anomaly_detection.py ================================================ """Anomaly Detection Module""" import math import numpy as np class GaussianAnomalyDetection: """GaussianAnomalyDetection Class""" def __init__(self, data): """GaussianAnomalyDetection constructor""" # Estimate Gaussian distribution. (self.mu_param, self.sigma_squared) = GaussianAnomalyDetection.estimate_gaussian(data) # Save training data. self.data = data def multivariate_gaussian(self, data): """Computes the probability density function of the multivariate gaussian distribution""" mu_param = self.mu_param sigma_squared = self.sigma_squared # Get number of training sets and features. (num_examples, num_features) = data.shape # nit probabilities matrix. probabilities = np.ones((num_examples, 1)) # Go through all training examples and through all features. for example_index in range(num_examples): for feature_index in range(num_features): # Calculate the power of e. power_dividend = (data[example_index, feature_index] - mu_param[feature_index]) ** 2 power_divider = 2 * sigma_squared[feature_index] e_power = -1 * power_dividend / power_divider # Calculate the prefix multiplier. probability_prefix = 1 / math.sqrt(2 * math.pi * sigma_squared[feature_index]) # Calculate the probability for the current feature of current example. probability = probability_prefix * (math.e ** e_power) probabilities[example_index] *= probability # Return probabilities for all training examples. return probabilities @staticmethod def estimate_gaussian(data): """This function estimates the parameters of a Gaussian distribution using the data in X.""" # Get number of features and number of examples. num_examples = data.shape[0] # Estimate Gaussian parameters mu and sigma_squared for every feature. mu_param = (1 / num_examples) * np.sum(data, axis=0) sigma_squared = (1 / num_examples) * np.sum((data - mu_param) ** 2, axis=0) # Return Gaussian parameters. return mu_param, sigma_squared @staticmethod def select_threshold(labels, probabilities): # pylint: disable=R0914 """Finds the best threshold (epsilon) to use for selecting outliers""" best_epsilon = 0 best_f1 = 0 # History data to build the plots. precision_history = [] recall_history = [] f1_history = [] # Calculate the epsilon steps. min_probability = np.min(probabilities) max_probability = np.max(probabilities) step_size = (max_probability - min_probability) / 1000 # Go through all possible epsilons and pick the one with the highest f1 score. for epsilon in np.arange(min_probability, max_probability, step_size): predictions = probabilities < epsilon # The number of false positives: the ground truth label says it’s not # an anomaly, but our algorithm incorrectly classified it as an anomaly. false_positives = np.sum((predictions == 1) & (labels == 0)) # The number of false negatives: the ground truth label says it’s an anomaly, # but our algorithm incorrectly classified it as not being anomalous. false_negatives = np.sum((predictions == 0) & (labels == 1)) # The number of true positives: the ground truth label says it’s an # anomaly and our algorithm correctly classified it as an anomaly. true_positives = np.sum((predictions == 1) & (labels == 1)) # Prevent division by zero. if (true_positives + false_positives) == 0 or (true_positives + false_negatives) == 0: continue # Precision. precision = true_positives / (true_positives + false_positives) # Recall. recall = true_positives / (true_positives + false_negatives) # F1. f1_score = 2 * precision * recall / (precision + recall) # Save history data. precision_history.append(precision) recall_history.append(recall) f1_history.append(f1_score) if f1_score > best_f1: best_epsilon = epsilon best_f1 = f1_score return best_epsilon, best_f1, precision_history, recall_history, f1_history ================================================ FILE: homemade/k_means/README.md ================================================ # K-Means Algorithm ## Jupyter Demos ▶️ [Demo | K-means Algorithm](https://nbviewer.jupyter.org/github/trekhleb/homemade-machine-learning/blob/master/notebooks/k_means/k_means_demo.ipynb) - split Iris flowers into clusters based on `petal_length` and `petal_width` ## Definition **K-means clustering** aims to partition n observations into _K_ clusters in which each observation belongs to the cluster with the nearest mean, serving as a prototype of the cluster. The result of a cluster analysis shown below as the coloring of the squares into three clusters. ![Clustering](https://upload.wikimedia.org/wikipedia/commons/c/c8/Cluster-2.svg) ## Description Given a training set of observations: ![Training set](../../images/k_means/training-set.svg) ![x-i](../../images/k_means/x-i.svg) Where each observation is a _d_-dimensional real vector, k-means clustering aims to partition the _m_ observations into _K_ (_≤ m_) clusters: ![Clusters](../../images/k_means/clasters.svg) ... so as to minimize the within-cluster sum of squares (i.e. variance). Below you may find an example of 4 random cluster centroids initialization and further clusters convergence: ![Clustering](http://shabal.in/visuals/kmeans/random.gif) [Picture Source](http://shabal.in/visuals/kmeans/6.html) Another illustration of k-means convergence: ![Clustering](https://upload.wikimedia.org/wikipedia/commons/e/ea/K-means_convergence.gif) ## Cost Function (Distortion) ![c-i](../../images/k_means/c-i.svg) - index of cluster _(1, 2, ..., K)_ to which example _x(i)_ is currently assigned. ![mu-k](../../images/k_means/mu-k.svg) - cluster centroid _k_ (![mu-k-2](../../images/k_means/mu-k-2.svg)) and ![k](../../images/k_means/k.svg). ![mu-c-i](../../images/k_means/mu-c-i.svg) - cluster centroid of a cluster to which the example _x(i)_ has been assigned. For example: ![Cluster example](../../images/k_means/cluster-example.svg) In this case optimization objective will look like the following: ![Cost Function](../../images/k_means/cost-function.svg) ![Clustering](https://upload.wikimedia.org/wikipedia/commons/d/d1/KMeans-density-data.svg) ## The Algorithm Randomly initialize _K_ cluster centroids (randomly pick _K_ training examples and set _K_ cluster centroids to that examples). ![Centroids](../../images/k_means/centroids.svg) ![k-means-algorithm](../../images/k_means/k-means-algorithm.svg) ## References - [Machine Learning on Coursera](https://www.coursera.org/learn/machine-learning) - [K-means on Wikipedia](https://en.wikipedia.org/wiki/K-means_clustering) ================================================ FILE: homemade/k_means/__init__.py ================================================ """KMeans Module""" from .k_means import KMeans ================================================ FILE: homemade/k_means/k_means.py ================================================ """KMeans Module""" import numpy as np class KMeans: """K-Means Class""" def __init__(self, data, num_clusters): """K-Means class constructor. :param data: training dataset. :param num_clusters: number of cluster into which we want to break the dataset. """ self.data = data self.num_clusters = num_clusters def train(self, max_iterations): """Function performs data clustering using K-Means algorithm :param max_iterations: maximum number of training iterations. """ # Generate random centroids based on training set. centroids = KMeans.centroids_init(self.data, self.num_clusters) # Init default array of closest centroid IDs. num_examples = self.data.shape[0] closest_centroids_ids = np.empty((num_examples, 1)) # Run K-Means. for _ in range(max_iterations): # Find the closest centroids for training examples. closest_centroids_ids = KMeans.centroids_find_closest(self.data, centroids) # Compute means based on the closest centroids found in the previous part. centroids = KMeans.centroids_compute( self.data, closest_centroids_ids, self.num_clusters ) return centroids, closest_centroids_ids @staticmethod def centroids_init(data, num_clusters): """Initializes num_clusters centroids that are to be used in K-Means on the dataset X :param data: training dataset. :param num_clusters: number of cluster into which we want to break the dataset. """ # Get number of training examples. num_examples = data.shape[0] # Randomly reorder indices of training examples. random_ids = np.random.permutation(num_examples) # Take the first K examples as centroids. centroids = data[random_ids[:num_clusters], :] # Return generated centroids. return centroids @staticmethod def centroids_find_closest(data, centroids): """Computes the centroid memberships for every example. Returns the closest centroids in closest_centroids_ids for a dataset X where each row is a single example. closest_centroids_ids = m x 1 vector of centroid assignments (i.e. each entry in range [1..K]). :param data: training dataset. :param centroids: list of centroid points. """ # Get number of training examples. num_examples = data.shape[0] # Get number of centroids. num_centroids = centroids.shape[0] # We need to return the following variables correctly. closest_centroids_ids = np.zeros((num_examples, 1)) # Go over every example, find its closest centroid, and store # the index inside closest_centroids_ids at the appropriate location. # Concretely, closest_centroids_ids(i) should contain the index of the centroid # closest to example i. Hence, it should be a value in the range 1...num_centroids. for example_index in range(num_examples): distances = np.zeros((num_centroids, 1)) for centroid_index in range(num_centroids): distance_difference = data[example_index, :] - centroids[centroid_index, :] distances[centroid_index] = np.sum(distance_difference ** 2) closest_centroids_ids[example_index] = np.argmin(distances) return closest_centroids_ids @staticmethod def centroids_compute(data, closest_centroids_ids, num_clusters): """Compute new centroids. Returns the new centroids by computing the means of the data points assigned to each centroid. :param data: training dataset. :param closest_centroids_ids: list of closest centroid ids per each training example. :param num_clusters: number of clusters. """ # Get number of features. num_features = data.shape[1] # We need to return the following variables correctly. centroids = np.zeros((num_clusters, num_features)) # Go over every centroid and compute mean of all points that # belong to it. Concretely, the row vector centroids(i, :) # should contain the mean of the data points assigned to # centroid i. for centroid_id in range(num_clusters): closest_ids = closest_centroids_ids == centroid_id centroids[centroid_id] = np.mean(data[closest_ids.flatten(), :], axis=0) return centroids ================================================ FILE: homemade/linear_regression/README.md ================================================ # Linear Regression ## Jupyter Demos ▶️ [Demo | Univariate Linear Regression](https://nbviewer.jupyter.org/github/trekhleb/homemade-machine-learning/blob/master/notebooks/linear_regression/univariate_linear_regression_demo.ipynb) - predict `country happiness` score by `economy GDP` ▶️ [Demo | Multivariate Linear Regression](https://nbviewer.jupyter.org/github/trekhleb/homemade-machine-learning/blob/master/notebooks/linear_regression/multivariate_linear_regression_demo.ipynb) - predict `country happiness` score by `economy GDP` and `freedom index` ▶️ [Demo | Non-linear Regression](https://nbviewer.jupyter.org/github/trekhleb/homemade-machine-learning/blob/master/notebooks/linear_regression/non_linear_regression_demo.ipynb) - use linear regression with _polynomial_ and _sinusoid_ features to predict non-linear dependencies. ## Definition **Linear regression** is a linear model, e.g. a model that assumes a linear relationship between the input variables (_x_) and the single output variable (_y_). More specifically, that output variable (_y_) can be calculated from a linear combination of the input variables (_x_). ![Linear Regression](https://upload.wikimedia.org/wikipedia/commons/3/3a/Linear_regression.svg) On the image above there is an example of dependency between input variable _x_ and output variable _y_. The red line in the above graph is referred to as the best fit straight line. Based on the given data points (training examples), we try to plot a line that models the points the best. In the real world scenario we normally have more than one input variable. ## Features (variables) Each training example consists of features (variables) that describe this example (i.e. number of rooms, the square of the apartment etc.) ![Features](../../images/linear_regression/features.svg) _n_ - number of features _Rn+1_ - vector of _n+1_ real numbers ## Parameters Parameters of the hypothesis we want our algorithm to learn in order to be able to do predictions (i.e. predict the price of the apartment). ![Parameters](../../images/linear_regression/parameters.svg) ## Hypothesis The equation that gets features and parameters as an input and predicts the value as an output (i.e. predict the price of the apartment based on its size and number of rooms). ![Hypothesis](../../images/linear_regression/hypothesis.svg) For convenience of notation, define _X0 = 1_ ## Cost Function Function that shows how accurate the predictions of the hypothesis are with current set of parameters. ![Cost Function](../../images/linear_regression/cost-function.svg) _xi_ - input (features) of _ith_ training example _yi_ - output of _ith_ training example _m_ - number of training examples ## Batch Gradient Descent Gradient descent is an iterative optimization algorithm for finding the minimum of a cost function described above. To find a local minimum of a function using gradient descent, one takes steps proportional to the negative of the gradient (or approximate gradient) of the function at the current point. Picture below illustrates the steps we take going down of the hill to find local minimum. ![Gradient Descent](https://cdn-images-1.medium.com/max/1600/1*f9a162GhpMbiTVTAua_lLQ.png) The direction of the step is defined by derivative of the cost function in current point. ![Gradient Descent](https://cdn-images-1.medium.com/max/1600/0*rBQI7uBhBKE8KT-X.png) Once we decided what direction we need to go we need to decide what the size of the step we need to take. ![Gradient Descent](https://cdn-images-1.medium.com/max/1600/0*QwE8M4MupSdqA3M4.png) We need to simultaneously update ![Theta](../../images/linear_regression/theta-j.svg) for _j = 0, 1, ..., n_ ![Gradient Descent](../../images/linear_regression/gradient-descent-1.svg) ![Gradient Descent](../../images/linear_regression/gradient-descent-2.svg) ![alpha](../../images/linear_regression/alpha.svg) - the learning rate, the constant that defines the size of the gradient descent step ![x-i-j](../../images/linear_regression/x-i-j.svg) - _jth_ feature value of the _ith_ training example ![x-i](../../images/linear_regression/x-i.svg) - input (features) of _ith_ training example _yi_ - output of _ith_ training example _m_ - number of training examples _n_ - number of features > When we use term "batch" for gradient descent it means that each step of gradient descent uses **all** the training examples (as you might see from the formula above). ## Feature Scaling To make linear regression and gradient descent algorithm work correctly we need to make sure that features are on a similar scale. ![Feature Scaling](../../images/linear_regression/feature-scaling.svg) For example "apartment size" feature (e.g. 120 m2) is much bigger than the "number of rooms" feature (e.g. 2). In order to scale the features we need to do **mean normalization** ![Mean Normalization](../../images/linear_regression/mean-normalization.svg) ![x-i-j](../../images/linear_regression/x-i-j.svg) - _jth_ feature value of the _ith_ training example ![mu-j](../../images/linear_regression/mu-j.svg) - average value of _jth_ feature in training set ![s-j](../../images/linear_regression/s-j.svg) - the range (_max - min_) of _jth_ feature in training set. ## Polynomial Regression Polynomial regression is a form of regression analysis in which the relationship between the independent variable _x_ and the dependent variable _y_ is modelled as an _nth_ degree polynomial in _x_. Although polynomial regression fits a nonlinear model to the data, as a statistical estimation problem it is linear, in the sense that the hypothesis function is linear in the unknown parameters that are estimated from the data. For this reason, polynomial regression is considered to be a special case of multiple linear regression. ![Polynomial Regression](https://upload.wikimedia.org/wikipedia/commons/thumb/8/8b/Polyreg_scheffe.svg/650px-Polyreg_scheffe.svg.png) Example of a cubic polynomial regression, which is a type of linear regression. You may form polynomial regression by adding new polynomial features. For example if the price of the apartment is in non-linear dependency of its size then you might add several new size-related features. ![Polynomial Regression](../../images/linear_regression/polynomial-regression.svg) ## Normal Equation There is a closed-form solution to linear regression exists and it looks like the following: ![Normal Equation](../../images/linear_regression/normal-equation.svg) Using this formula does not require any feature scaling, and you will get an exact solution in one calculation: there is no “loop until convergence” like in gradient descent. ## Regularization ### Overfitting Problem If we have too many features, the learned hypothesis may fit the **training** set very well: ![overfitting](../../images/linear_regression/overfitting-1.svg) **But** it may fail to generalize to **new** examples (let's say predict prices on new example of detecting if new messages are spam). ![overfitting](https://cdncontribute.geeksforgeeks.org/wp-content/uploads/t0zit.png) ### Solution to Overfitting Here are couple of options that may be addressed: - Reduce the number of features - Manually select which features to keep - Model selection algorithm - Regularization - Keep all the features, but reduce magnitude/values of model parameters (thetas). - Works well when we have a lot of features, each of which contributes a bit to predicting _y_. Regularization works by adding regularization parameter to the **cost function**: ![Cost Function](../../images/linear_regression/cost-function-with-regularization.svg) > Note that you should not regularize the parameter ![theta zero](../../images/linear_regression/theta-0.svg). ![regularization parameter](../../images/linear_regression/lambda.svg) - regularization parameter In this case the **gradient descent** formula will look like the following: ![Gradient Descent](../../images/linear_regression/gradient-descent-3.svg) ## References - [Machine Learning on Coursera](https://www.coursera.org/learn/machine-learning) - [Linear Regression on Wikipedia](https://en.wikipedia.org/wiki/Linear_regression) - [Gradient Descent on Wikipedia](https://en.wikipedia.org/wiki/Gradient_descent) - [Gradient Descent by Suryansh S.](https://hackernoon.com/gradient-descent-aynk-7cbe95a778da) - [Gradient Descent by Niklas Donges](https://towardsdatascience.com/gradient-descent-in-a-nutshell-eaf8c18212f0) - [Overfitting on GeeksForGeeks](https://www.geeksforgeeks.org/underfitting-and-overfitting-in-machine-learning/) ================================================ FILE: homemade/linear_regression/__init__.py ================================================ """Linear Regression Module""" from .linear_regression import LinearRegression ================================================ FILE: homemade/linear_regression/linear_regression.py ================================================ """Linear Regression Module""" # Import dependencies. import numpy as np from ..utils.features import prepare_for_training class LinearRegression: # pylint: disable=too-many-instance-attributes """Linear Regression Class""" def __init__(self, data, labels, polynomial_degree=0, sinusoid_degree=0, normalize_data=True): # pylint: disable=too-many-arguments """Linear regression constructor. :param data: training set. :param labels: training set outputs (correct values). :param polynomial_degree: degree of additional polynomial features. :param sinusoid_degree: multipliers for sinusoidal features. :param normalize_data: flag that indicates that features should be normalized. """ # Normalize features and add ones column. ( data_processed, features_mean, features_deviation ) = prepare_for_training(data, polynomial_degree, sinusoid_degree, normalize_data) self.data = data_processed self.labels = labels self.features_mean = features_mean self.features_deviation = features_deviation self.polynomial_degree = polynomial_degree self.sinusoid_degree = sinusoid_degree self.normalize_data = normalize_data # Initialize model parameters. num_features = self.data.shape[1] self.theta = np.zeros((num_features, 1)) def train(self, alpha, lambda_param=0, num_iterations=500): """Trains linear regression. :param alpha: learning rate (the size of the step for gradient descent) :param lambda_param: regularization parameter :param num_iterations: number of gradient descent iterations. """ # Run gradient descent. cost_history = self.gradient_descent(alpha, lambda_param, num_iterations) return self.theta, cost_history def gradient_descent(self, alpha, lambda_param, num_iterations): """Gradient descent. It calculates what steps (deltas) should be taken for each theta parameter in order to minimize the cost function. :param alpha: learning rate (the size of the step for gradient descent) :param lambda_param: regularization parameter :param num_iterations: number of gradient descent iterations. """ # Initialize J_history with zeros. cost_history = [] for _ in range(num_iterations): # Perform a single gradient step on the parameter vector theta. self.gradient_step(alpha, lambda_param) # Save the cost J in every iteration. cost_history.append(self.cost_function(self.data, self.labels, lambda_param)) return cost_history def gradient_step(self, alpha, lambda_param): """Gradient step. Function performs one step of gradient descent for theta parameters. :param alpha: learning rate (the size of the step for gradient descent) :param lambda_param: regularization parameter """ # Calculate the number of training examples. num_examples = self.data.shape[0] # Predictions of hypothesis on all m examples. predictions = LinearRegression.hypothesis(self.data, self.theta) # The difference between predictions and actual values for all m examples. delta = predictions - self.labels # Calculate regularization parameter. reg_param = 1 - alpha * lambda_param / num_examples # Create theta shortcut. theta = self.theta # Vectorized version of gradient descent. theta = theta * reg_param - alpha * (1 / num_examples) * (delta.T @ self.data).T # We should NOT regularize the parameter theta_zero. theta[0] = theta[0] - alpha * (1 / num_examples) * (self.data[:, 0].T @ delta).T self.theta = theta def get_cost(self, data, labels, lambda_param): """Get the cost value for specific data set. :param data: the set of training or test data. :param labels: training set outputs (correct values). :param lambda_param: regularization parameter """ data_processed = prepare_for_training( data, self.polynomial_degree, self.sinusoid_degree, self.normalize_data, )[0] return self.cost_function(data_processed, labels, lambda_param) def cost_function(self, data, labels, lambda_param): """Cost function. It shows how accurate our model is based on current model parameters. :param data: the set of training or test data. :param labels: training set outputs (correct values). :param lambda_param: regularization parameter """ # Calculate the number of training examples and features. num_examples = data.shape[0] # Get the difference between predictions and correct output values. delta = LinearRegression.hypothesis(data, self.theta) - labels # Calculate regularization parameter. # Remember that we should not regularize the parameter theta_zero. theta_cut = self.theta[1:, 0] reg_param = lambda_param * (theta_cut.T @ theta_cut) # Calculate current predictions cost. cost = (1 / 2 * num_examples) * (delta.T @ delta + reg_param) # Let's extract cost value from the one and only cost numpy matrix cell. return cost[0][0] def predict(self, data): """Predict the output for data_set input based on trained theta values :param data: training set of features. """ # Normalize features and add ones column. data_processed = prepare_for_training( data, self.polynomial_degree, self.sinusoid_degree, self.normalize_data, )[0] # Do predictions using model hypothesis. predictions = LinearRegression.hypothesis(data_processed, self.theta) return predictions @staticmethod def hypothesis(data, theta): """Hypothesis function. It predicts the output values y based on the input values X and model parameters. :param data: data set for what the predictions will be calculated. :param theta: model params. :return: predictions made by model based on provided theta. """ predictions = data @ theta return predictions ================================================ FILE: homemade/logistic_regression/README.md ================================================ # Logistic Regression ## Jupyter Demos ▶️ [Demo | Logistic Regression With Linear Boundary](https://nbviewer.jupyter.org/github/trekhleb/homemade-machine-learning/blob/master/notebooks/logistic_regression/logistic_regression_with_linear_boundary_demo.ipynb) - predict Iris flower `class` based on `petal_length` and `petal_width` ▶️ [Demo | Logistic Regression With Non-Linear Boundary](https://nbviewer.jupyter.org/github/trekhleb/homemade-machine-learning/blob/master/notebooks/logistic_regression/logistic_regression_with_non_linear_boundary_demo.ipynb) - predict microchip `validity` based on `param_1` and `param_2` ▶️ [Demo | Multivariate Logistic Regression | MNIST](https://nbviewer.jupyter.org/github/trekhleb/homemade-machine-learning/blob/master/notebooks/logistic_regression/multivariate_logistic_regression_demo.ipynb) - recognize handwritten digits from `28x28` pixel images. ▶️ [Demo | Multivariate Logistic Regression | Fashion MNIST](https://nbviewer.jupyter.org/github/trekhleb/homemade-machine-learning/blob/master/notebooks/logistic_regression/multivariate_logistic_regression_fashion_demo.ipynb) - recognize clothes types from `28x28` pixel images. ## Definition **Logistic regression** is the appropriate regression analysis to conduct when the dependent variable is dichotomous (binary). Like all regression analyses, the logistic regression is a predictive analysis. Logistic regression is used to describe data and to explain the relationship between one dependent binary variable and one or more nominal, ordinal, interval or ratio-level independent variables. Logistic Regression is used when the dependent variable (target) is categorical. For example: - To predict whether an email is spam (1) or (0). - Whether online transaction is fraudulent (1) or not (0). - Whether the tumor is malignant (1) or not (0). In other words the dependant variable (output) for logistic regression model may be described as: ![Logistic Regression Output](../../images/logistic_regression/output.svg) ![Logistic Regression](https://cdn-images-1.medium.com/max/1600/1*4G0gsu92rPhN-co9pv1P5A@2x.png) ![Logistic Regression](https://cdn-images-1.medium.com/max/1200/1*KRhpHnucyX9Y5PMdjGvVFA.png) ## Training Set Training set is an input data where for every predefined set of features _x_ we have a correct classification _y_. ![Training Set](../../images/logistic_regression/training-set-1.svg) _m_ - number of training set examples. ![Training Set](../../images/logistic_regression/training-set-2.svg) For convenience of notation, define: ![x-zero](../../images/logistic_regression/x-0.svg) ![Logistic Regression Output](../../images/logistic_regression/output.svg) ## Hypothesis (the Model) The equation that gets features and parameters as an input and predicts the value as an output (i.e. predict if the email is spam or not based on some email characteristics). ![Hypothesis](../../images/logistic_regression/hypothesis-1.svg) Where _g()_ is a **sigmoid function**. ![Sigmoid](../../images/logistic_regression/sigmoid.svg) ![Sigmoid](https://upload.wikimedia.org/wikipedia/commons/8/88/Logistic-curve.svg) Now we my write down the hypothesis as follows: ![Hypothesis](../../images/logistic_regression/hypothesis-2.svg) ![Predict 0](../../images/logistic_regression/predict-0.svg) ![Predict 1](../../images/logistic_regression/predict-1.svg) ## Cost Function Function that shows how accurate the predictions of the hypothesis are with current set of parameters. ![Cost Function](../../images/logistic_regression/cost-function-1.svg) ![Cost Function](../../images/logistic_regression/cost-function-4.svg) ![Cost Function](../../images/logistic_regression/cost-function-2.svg) Cost function may be simplified to the following one-liner: ![Cost Function](../../images/logistic_regression/cost-function-3.svg) ## Batch Gradient Descent Gradient descent is an iterative optimization algorithm for finding the minimum of a cost function described above. To find a local minimum of a function using gradient descent, one takes steps proportional to the negative of the gradient (or approximate gradient) of the function at the current point. Picture below illustrates the steps we take going down of the hill to find local minimum. ![Gradient Descent](https://cdn-images-1.medium.com/max/1600/1*f9a162GhpMbiTVTAua_lLQ.png) The direction of the step is defined by derivative of the cost function in current point. ![Gradient Descent](https://cdn-images-1.medium.com/max/1600/0*rBQI7uBhBKE8KT-X.png) Once we decided what direction we need to go we need to decide what the size of the step we need to take. ![Gradient Descent](https://cdn-images-1.medium.com/max/1600/0*QwE8M4MupSdqA3M4.png) We need to simultaneously update ![Theta](../../images/logistic_regression/theta-j.svg) for _j = 0, 1, ..., n_ ![Gradient Descent](../../images/logistic_regression/gradient-descent-1.svg) ![Gradient Descent](../../images/logistic_regression/gradient-descent-2.svg) ![alpha](../../images/logistic_regression/alpha.svg) - the learning rate, the constant that defines the size of the gradient descent step ![x-i-j](../../images/logistic_regression/x-i-j.svg) - _jth_ feature value of the _ith_ training example ![x-i](../../images/logistic_regression/x-i.svg) - input (features) of _ith_ training example _yi_ - output of _ith_ training example _m_ - number of training examples _n_ - number of features > When we use term "batch" for gradient descent it means that each step of gradient descent uses **all** the training examples (as you might see from the formula above). ## Multi-class Classification (One-vs-All) Very often we need to do not just binary (0/1) classification but rather multi-class ones, like: - Weather: Sunny, Cloudy, Rain, Snow - Email tagging: Work, Friends, Family To handle these type of issues we may train a logistic regression classifier ![Multi-class classifier](../../images/logistic_regression/multi-class-classifier.svg) several times for each class _i_ to predict the probability that _y = i_. ![One-vs-All](https://i.stack.imgur.com/zKpJy.jpg) ## Regularization ### Overfitting Problem If we have too many features, the learned hypothesis may fit the **training** set very well: ![overfitting](../../images/logistic_regression/overfitting-1.svg) **But** it may fail to generalize to **new** examples (let's say predict prices on new example of detecting if new messages are spam). ![overfitting](https://cdncontribute.geeksforgeeks.org/wp-content/uploads/fittings.jpg) ### Solution to Overfitting Here are couple of options that may be addressed: - Reduce the number of features - Manually select which features to keep - Model selection algorithm - Regularization - Keep all the features, but reduce magnitude/values of model parameters (thetas). - Works well when we have a lot of features, each of which contributes a bit to predicting _y_. Regularization works by adding regularization parameter to the **cost function**: ![Cost Function](../../images/logistic_regression/cost-function-with-regularization.svg) ![regularization parameter](../../images/logistic_regression/lambda.svg) - regularization parameter > Note that you should not regularize the parameter ![theta zero](../../images/logistic_regression/theta-0.svg). In this case the **gradient descent** formula will look like the following: ![Gradient Descent](../../images/logistic_regression/gradient-descent-3.svg) ## References - [Machine Learning on Coursera](https://www.coursera.org/learn/machine-learning) - [Sigmoid Function on Wikipedia](https://en.wikipedia.org/wiki/Sigmoid_function) - [Gradient Descent on Wikipedia](https://en.wikipedia.org/wiki/Gradient_descent) - [Gradient Descent by Suryansh S.](https://hackernoon.com/gradient-descent-aynk-7cbe95a778da) - [Gradient Descent by Niklas Donges](https://towardsdatascience.com/gradient-descent-in-a-nutshell-eaf8c18212f0) - [One vs All on Stackexchange](https://stats.stackexchange.com/questions/318520/many-binary-classifiers-vs-single-multiclass-classifier) - [Logistic Regression by Rohan Kapur](https://ayearofai.com/rohan-1-when-would-i-even-use-a-quadratic-equation-in-the-real-world-13f379edab3b) - [Overfitting on GeeksForGeeks](https://www.geeksforgeeks.org/underfitting-and-overfitting-in-machine-learning/) ================================================ FILE: homemade/logistic_regression/__init__.py ================================================ """Logistic Regression Module""" from .logistic_regression import LogisticRegression ================================================ FILE: homemade/logistic_regression/logistic_regression.py ================================================ """Logistic Regression Module""" import numpy as np from scipy.optimize import minimize from ..utils.features import prepare_for_training from ..utils.hypothesis import sigmoid class LogisticRegression: # pylint: disable=too-many-instance-attributes """Logistic Regression Class""" def __init__(self, data, labels, polynomial_degree=0, sinusoid_degree=0, normalize_data=False): # pylint: disable=too-many-arguments """Logistic regression constructor. :param data: training set. :param labels: training set outputs (correct values). :param polynomial_degree: degree of additional polynomial features. :param sinusoid_degree: multipliers for sinusoidal features. :param normalize_data: flag that indicates that features should be normalized. """ # Normalize features and add ones column. ( data_processed, mean, deviation ) = prepare_for_training(data, polynomial_degree, sinusoid_degree, normalize_data) self.data = data_processed self.labels = labels self.unique_labels = np.unique(labels) self.features_mean = mean self.features_deviation = deviation self.polynomial_degree = polynomial_degree self.sinusoid_degree = sinusoid_degree self.normalize_data = normalize_data # Initialize model parameters. num_features = self.data.shape[1] num_unique_labels = np.unique(labels).shape[0] self.thetas = np.zeros((num_unique_labels, num_features)) def train(self, lambda_param=0, max_iterations=1000): """Trains logistic regression. :param lambda_param: regularization parameter :param max_iterations: maximum number of gradient descent iterations. """ # Init cost history array. cost_histories = [] # Use One-vs-All approach and train the model several times for each label class. num_features = self.data.shape[1] # Train the model to distinguish each label particularly. for label_index, unique_label in enumerate(self.unique_labels): current_initial_theta = np.copy(self.thetas[label_index]).reshape((num_features, 1)) # Convert labels to array of 0s and 1s for current label class. current_labels = (self.labels == unique_label).astype(float) # Run gradient descent. (current_theta, cost_history) = LogisticRegression.gradient_descent( self.data, current_labels, current_initial_theta, lambda_param, max_iterations, ) self.thetas[label_index] = current_theta.T cost_histories.append(cost_history) # return self.theta, cost_history return self.thetas, cost_histories def predict(self, data): """Prediction function""" num_examples = data.shape[0] data_processed = prepare_for_training( data, self.polynomial_degree, self.sinusoid_degree, self.normalize_data )[0] probability_predictions = LogisticRegression.hypothesis(data_processed, self.thetas.T) max_probability_indices = np.argmax(probability_predictions, axis=1) class_predictions = np.empty(max_probability_indices.shape, dtype=object) for index, label in enumerate(self.unique_labels): class_predictions[max_probability_indices == index] = label return class_predictions.reshape((num_examples, 1)) @staticmethod def gradient_descent(data, labels, initial_theta, lambda_param, max_iteration): """Gradient descent function. Iteratively optimizes theta model parameters. :param data: the set of training or test data. :param labels: training set outputs (0 or 1 that defines the class of an example). :param initial_theta: initial model parameters. :param lambda_param: regularization parameter. :param max_iteration: maximum number of gradient descent steps. """ # Initialize cost history list. cost_history = [] # Calculate the number of features. num_features = data.shape[1] # Launch gradient descent. minification_result = minimize( # Function that we're going to minimize. lambda current_theta: LogisticRegression.cost_function( data, labels, current_theta.reshape((num_features, 1)), lambda_param ), # Initial values of model parameter. initial_theta, # We will use conjugate gradient algorithm. method='CG', # Function that will help to calculate gradient direction on each step. jac=lambda current_theta: LogisticRegression.gradient_step( data, labels, current_theta.reshape((num_features, 1)), lambda_param ), # Record gradient descent progress for debugging. callback=lambda current_theta: cost_history.append(LogisticRegression.cost_function( data, labels, current_theta.reshape((num_features, 1)), lambda_param )), options={'maxiter': max_iteration} ) # Throw an error in case if gradient descent ended up with error. if not minification_result.success: raise ArithmeticError('Can not minimize cost function: ' + minification_result.message) # Reshape the final version of model parameters. optimized_theta = minification_result.x.reshape((num_features, 1)) return optimized_theta, cost_history @staticmethod def gradient_step(data, labels, theta, lambda_param): """GRADIENT STEP function. It performs one step of gradient descent for theta parameters. :param data: the set of training or test data. :param labels: training set outputs (0 or 1 that defines the class of an example). :param theta: model parameters. :param lambda_param: regularization parameter. """ # Initialize number of training examples. num_examples = labels.shape[0] # Calculate hypothesis predictions and difference with labels. predictions = LogisticRegression.hypothesis(data, theta) label_diff = predictions - labels # Calculate regularization parameter. regularization_param = (lambda_param / num_examples) * theta # Calculate gradient steps. gradients = (1 / num_examples) * (data.T @ label_diff) regularized_gradients = gradients + regularization_param # We should NOT regularize the parameter theta_zero. regularized_gradients[0] = (1 / num_examples) * (data[:, [0]].T @ label_diff) return regularized_gradients.T.flatten() @staticmethod def cost_function(data, labels, theta, lambda_param): """Cost function. It shows how accurate our model is based on current model parameters. :param data: the set of training or test data. :param labels: training set outputs (0 or 1 that defines the class of an example). :param theta: model parameters. :param lambda_param: regularization parameter. """ # Calculate the number of training examples and features. num_examples = data.shape[0] # Calculate hypothesis. predictions = LogisticRegression.hypothesis(data, theta) # Calculate regularization parameter # Remember that we should not regularize the parameter theta_zero. theta_cut = theta[1:, [0]] reg_param = (lambda_param / (2 * num_examples)) * (theta_cut.T @ theta_cut) # Calculate current predictions cost. y_is_set_cost = labels[labels == 1].T @ np.log(predictions[labels == 1]) y_is_not_set_cost = (1 - labels[labels == 0]).T @ np.log(1 - predictions[labels == 0]) cost = (-1 / num_examples) * (y_is_set_cost + y_is_not_set_cost) + reg_param # Let's extract cost value from the one and only cost numpy matrix cell. return cost[0][0] @staticmethod def hypothesis(data, theta): """Hypothesis function. It predicts the output values y based on the input values X and model parameters. :param data: data set for what the predictions will be calculated. :param theta: model params. :return: predictions made by model based on provided theta. """ predictions = sigmoid(data @ theta) return predictions ================================================ FILE: homemade/neural_network/README.md ================================================ # Neural Network ## Jupyter Demos ▶️ [Demo | Multilayer Perceptron | MNIST](https://nbviewer.jupyter.org/github/trekhleb/homemade-machine-learning/blob/master/notebooks/neural_network/multilayer_perceptron_demo.ipynb) - recognize handwritten digits from `28x28` pixel images. ▶️ [Demo | Multilayer Perceptron | Fashion MNIST](https://nbviewer.jupyter.org/github/trekhleb/homemade-machine-learning/blob/master/notebooks/neural_network/multilayer_perceptron_fashion_demo.ipynb) - recognize the type of clothes (Dress, Coat, Sandal, etc.) from `28x28` pixel images. ## Definition **Artificial neural networks** (ANN) or connectionist systems are computing systems vaguely inspired by the biological neural networks that constitute animal brains. The neural network itself isn't an algorithm, but rather a framework for many different machine learning algorithms to work together and process complex data inputs. Such systems "learn" to perform tasks by considering examples, generally without being programmed with any task-specific rules. ![Neuron](https://upload.wikimedia.org/wikipedia/commons/1/10/Blausen_0657_MultipolarNeuron.png) For example, in **image recognition**, they might learn to identify images that contain cats by analyzing example images that have been manually labeled as "cat" or "no cat" and using the results to identify cats in other images. They do this without any prior knowledge about cats, e.g., that they have fur, tails, whiskers and cat-like faces. Instead, they automatically generate identifying characteristics from the learning material that they process. An ANN is based on a collection of connected units or nodes called **artificial neurons**, which loosely model the neurons in a biological brain. Each connection, like the synapses in a biological brain, can transmit a signal from one artificial neuron to another. An artificial neuron that receives a signal can process it and then signal additional artificial neurons connected to it. ![Artificial Neuron](https://insights.sei.cmu.edu/sei_blog/sestilli_deeplearning_artificialneuron3.png) In common ANN implementations, the signal at a connection between artificial neurons is a real number, and the output of each artificial neuron is computed by some non-linear function of the sum of its inputs. The connections between artificial neurons are called **edges**. Artificial neurons and edges typically have a **weight** that adjusts as learning proceeds. The weight increases or decreases the strength of the signal at a connection. Artificial neurons may have a threshold such that the signal is only sent if the aggregate signal crosses that threshold. Typically, artificial neurons are aggregated into layers. Different layers may perform different kinds of transformations on their inputs. Signals travel from the first layer (the **input layer**), to the last layer (the **output layer**), possibly after traversing the **inner layers** multiple times. ![Neural Network](https://upload.wikimedia.org/wikipedia/commons/4/46/Colored_neural_network.svg) A **multilayer perceptron (MLP)** is a class of feedforward artificial neural network. An MLP consists of, at least, three layers of nodes: an input layer, a hidden layer and an output layer. Except for the input nodes, each node is a neuron that uses a nonlinear activation function. MLP utilizes a supervised learning technique called backpropagation for training. Its multiple layers and non-linear activation distinguish MLP from a linear perceptron. It can distinguish data that is not linearly separable. ## Neuron Model (Logistic Unit) Here is a model of one neuron unit. ![neuron](../../images/neural_network/neuron.drawio.svg) ![x-0](../../images/neural_network/x-0.svg) ![neuron x](../../images/neural_network/neuron-x.svg) Weights: ![neuron weights](../../images/neural_network/neuron-weights.svg) ## Network Model (Set of Neurons) Neural network consists of the neuron units described in the section above. Let's take a look at simple example model with one hidden layer. ![network model](../../images/neural_network/neuron-network.drawio.svg) ![a-i-j](../../images/neural_network/a-i-j.svg) - "activation" of unit _i_ in layer _j_. ![Theta-j](../../images/neural_network/big-theta-j.svg) - matrix of weights controlling function mapping from layer _j_ to layer _j + 1_. For example for the first layer: ![Theta-1](../../images/neural_network/big-theta-1.svg). ![Theta-j](../../images/neural_network/L.svg) - total number of layers in network (3 in our example). ![s-l](../../images/neural_network/s-l.svg) - number of units (not counting bias unit) in layer _l_. ![K](../../images/neural_network/K.svg) - number of output units (1 in our example but could be any real number for multi-class classification). ## Multi-class Classification In order to make neural network to work with multi-class notification we may use **One-vs-All** approach. Let's say we want our network to distinguish if there is a _pedestrian_ or _car_ of _motorcycle_ or _truck_ is on the image. In this case the output layer of our network will have 4 units (input layer will be much bigger and it will have all the pixel from the image. Let's say if all our images will be 20x20 pixels then the input layer will have 400 units each of which will contain the black-white color of the corresponding picture). ![multi-class-network](../../images/neural_network/multi-class-network.drawio.svg) ![h-Theta-multi-class](../../images/neural_network/multi-class-h.svg) In this case we would expect our final hypothesis to have following values: ![h-pedestrian](../../images/neural_network/h-pedestrian.svg) ![h-car](../../images/neural_network/h-car.svg) ![h-motorcycle](../../images/neural_network/h-motorcycle.svg) In this case for the training set: ![training-set](../../images/neural_network/training-set.svg) We would have: ![y-i-multi](../../images/neural_network/y-i-multi.svg) ## Forward (or Feedforward) Propagation Forward propagation is an interactive process of calculating activations for each layer starting from the input layer and going to the output layer. For the simple network mentioned in a previous section above we're able to calculate activations for second layer based on the input layer and our network parameters: ![a-1-2](../../images/neural_network/a-1-2.svg) ![a-2-2](../../images/neural_network/a-2-2.svg) ![a-3-2](../../images/neural_network/a-3-2.svg) The output layer activation will be calculated based on the hidden layer activations: ![h-Theta-example](../../images/neural_network/h-Theta-example.svg) Where _g()_ function may be a sigmoid: ![sigmoid](../../images/neural_network/sigmoid.svg) ![Sigmoid](https://upload.wikimedia.org/wikipedia/commons/8/88/Logistic-curve.svg) ### Vectorized Implementation of Forward Propagation Now let's convert previous calculations into more concise vectorized form. ![neuron x](../../images/neural_network/neuron-x.svg) To simplify previous activation equations let's introduce a _z_ variable: ![z-1](../../images/neural_network/z-1.svg) ![z-2](../../images/neural_network/z-2.svg) ![z-3](../../images/neural_network/z-3.svg) ![z-matrix](../../images/neural_network/z-matrix.svg) > Don't forget to add bias units (activations) before propagating to the next layer. > ![a-bias](../../images/neural_network/a-bias.svg) ![z-3-vectorize](../../images/neural_network/z-3-vectorized.svg) ![h-Theta-vectorized](../../images/neural_network/h-Theta-vectorized.svg) ### Forward Propagation Example Let's take the following network architecture with 4 layers (input layer, 2 hidden layers and output layer) as an example: ![multi-class-network](../../images/neural_network/multi-class-network.drawio.svg) In this case the forward propagation steps would look like the following: ![forward-propagation-example](../../images/neural_network/forward-propagation-example.svg) ## Cost Function The cost function for the neuron network is quite similar to the logistic regression cost function. ![cost-function](../../images/neural_network/cost-function.svg) ![h-Theta](../../images/neural_network/h-Theta.svg) ![h-Theta-i](../../images/neural_network/h-Theta-i.svg) ## Backpropagation ### Gradient Computation Backpropagation algorithm has the same purpose as gradient descent for linear or logistic regression - it corrects the values of thetas to minimize a cost function. In other words we need to be able to calculate partial derivative of cost function for each theta. ![J-partial](../../images/neural_network/J-partial.svg) ![multi-class-network](../../images/neural_network/multi-class-network.drawio.svg) Let's assume that: ![delta-j-l](../../images/neural_network/delta-j-l.svg) - "error" of node _j_ in layer _l_. For each output unit (layer _L = 4_): ![delta-4](../../images/neural_network/delta-4.svg) Or in vectorized form: ![delta-4-vectorized](../../images/neural_network/delta-4-vectorized.svg) ![delta-3-2](../../images/neural_network/delta-3-2.svg) ![sigmoid-gradient](../../images/neural_network/sigmoid-gradient.svg) - sigmoid gradient. ![sigmoid-gradient-2](../../images/neural_network/sigmoid-gradient-2.svg) Now we may calculate the gradient step: ![J-partial-detailed](../../images/neural_network/J-partial-detailed.svg) ### Backpropagation Algorithm For training set ![training-set](../../images/neural_network/training-set.svg) We need to set: ![Delta](../../images/neural_network/Delta.svg) ![backpropagation](../../images/neural_network/backpropagation.svg) ## Random Initialization Before starting forward propagation we need to initialize Theta parameters. We can not assign zero to all thetas since this would make our network useless because every neuron of the layer will learn the same as its siblings. In other word we need to **break the symmetry**. In order to do so we need to initialize thetas to some small random initial values: ![theta-init](../../images/neural_network/theta-init.svg) ## References - [Machine Learning on Coursera](https://www.coursera.org/learn/machine-learning) - [But what is a Neural Network? By 3Blue1Brown](https://www.youtube.com/watch?v=aircAruvnKk) - [Neural Network on Wikipedia](https://en.wikipedia.org/wiki/Artificial_neural_network) - [TensorFlow Neural Network Playground](https://playground.tensorflow.org/) - [Deep Learning by Carnegie Mellon University](https://insights.sei.cmu.edu/sei_blog/2018/02/deep-learning-going-deeper-toward-meaningful-patterns-in-complex-data.html) ================================================ FILE: homemade/neural_network/__init__.py ================================================ """Neural Network Module""" from .multilayer_perceptron import MultilayerPerceptron ================================================ FILE: homemade/neural_network/multilayer_perceptron.py ================================================ """Neural Network Module""" import numpy as np from ..utils.features import prepare_for_training from ..utils.hypothesis import sigmoid, sigmoid_gradient class MultilayerPerceptron: """Multilayer Perceptron Class""" # pylint: disable=too-many-arguments def __init__(self, data, labels, layers, epsilon, normalize_data=False): """Multilayer perceptron constructor. :param data: training set. :param labels: training set outputs (correct values). :param layers: network layers configuration. :param epsilon: Defines the range for initial theta values. :param normalize_data: flag that indicates that features should be normalized. """ # Normalize features and add ones column. data_processed = prepare_for_training(data, normalize_data=normalize_data)[0] self.data = data_processed self.labels = labels self.layers = layers self.epsilon = epsilon self.normalize_data = normalize_data # Randomly initialize the weights for each neural network layer. self.thetas = MultilayerPerceptron.thetas_init(layers, epsilon) def train(self, regularization_param=0, max_iterations=1000, alpha=1): """Train the model""" # Flatten model thetas for gradient descent. unrolled_thetas = MultilayerPerceptron.thetas_unroll(self.thetas) # Run gradient descent. (optimized_thetas, cost_history) = MultilayerPerceptron.gradient_descent( self.data, self.labels, unrolled_thetas, self.layers, regularization_param, max_iterations, alpha ) # Memorize optimized theta parameters. self.thetas = MultilayerPerceptron.thetas_roll(optimized_thetas, self.layers) return self.thetas, cost_history def predict(self, data): """Predictions function that does classification using trained model""" data_processed = prepare_for_training(data, normalize_data=self.normalize_data)[0] num_examples = data_processed.shape[0] # Do feedforward propagation with trained neural network params. predictions = MultilayerPerceptron.feedforward_propagation( data_processed, self.thetas, self.layers ) # Return the index of the output neuron with the highest probability. return np.argmax(predictions, axis=1).reshape((num_examples, 1)) @staticmethod def gradient_descent( data, labels, unrolled_theta, layers, regularization_param, max_iteration, alpha ): # pylint: disable=too-many-arguments """Gradient descent function. Iteratively optimizes theta model parameters. :param data: the set of training or test data. :param labels: training set outputs (0 or 1 that defines the class of an example). :param unrolled_theta: initial model parameters. :param layers: model layers configuration. :param regularization_param: regularization parameter. :param max_iteration: maximum number of gradient descent steps. :param alpha: gradient descent step size. """ optimized_theta = unrolled_theta # Initialize cost history list. cost_history = [] for _ in range(max_iteration): # Get current cost. cost = MultilayerPerceptron.cost_function( data, labels, MultilayerPerceptron.thetas_roll(optimized_theta, layers), layers, regularization_param ) # Save current cost value to build plots later. cost_history.append(cost) # Get the next gradient step directions. theta_gradient = MultilayerPerceptron.gradient_step( data, labels, optimized_theta, layers, regularization_param ) # Adjust theta values according to the next gradient step. optimized_theta = optimized_theta - alpha * theta_gradient return optimized_theta, cost_history @staticmethod def gradient_step(data, labels, unrolled_thetas, layers, regularization_param): """Gradient step function. Computes the cost and gradient of the neural network for unrolled theta parameters. :param data: training set. :param labels: training set labels. :param unrolled_thetas: model parameters. :param layers: model layers configuration. :param regularization_param: parameters that fights with model over-fitting. """ # Reshape nn_params back into the matrix parameters. thetas = MultilayerPerceptron.thetas_roll(unrolled_thetas, layers) # Do backpropagation. thetas_rolled_gradients = MultilayerPerceptron.back_propagation( data, labels, thetas, layers, regularization_param ) # Unroll thetas gradients. thetas_unrolled_gradients = MultilayerPerceptron.thetas_unroll(thetas_rolled_gradients) return thetas_unrolled_gradients # pylint: disable=R0914 @staticmethod def cost_function(data, labels, thetas, layers, regularization_param): """Cost function. It shows how accurate our model is based on current model parameters. :param data: the set of training or test data. :param labels: training set outputs (0 or 1 that defines the class of an example). :param thetas: model parameters. :param layers: layers configuration. :param regularization_param: regularization parameter. """ # Get total number of layers. num_layers = len(layers) # Get total number of training examples. num_examples = data.shape[0] # Get the size of output layer (number of labels). num_labels = layers[-1] # Feedforward the neural network. predictions = MultilayerPerceptron.feedforward_propagation(data, thetas, layers) # Compute the cost. # For now the labels vector is just an expected number for each input example. # We need to convert every result from number to vector that will illustrate # the output we're expecting. For example instead of having just number 5 # we want to expect [0 0 0 0 1 0 0 0 0 0]. The bit is set for 5th position. bitwise_labels = np.zeros((num_examples, num_labels)) for example_index in range(num_examples): bitwise_labels[example_index][labels[example_index][0]] = 1 # Calculate regularization parameter. theta_square_sum = 0 for layer_index in range(num_layers - 1): theta = thetas[layer_index] # Don't try to regularize bias thetas. theta_square_sum = theta_square_sum + np.sum(theta[:, 1:] ** 2) regularization = (regularization_param / (2 * num_examples)) * theta_square_sum # Calculate the cost with regularization. bit_set_cost = np.sum(np.log(predictions[bitwise_labels == 1])) bit_not_set_cost = np.sum(np.log(1 - predictions[bitwise_labels == 0])) cost = (-1 / num_examples) * (bit_set_cost + bit_not_set_cost) + regularization return cost @staticmethod def feedforward_propagation(data, thetas, layers): """Feedforward propagation function""" # Calculate the total number of layers. num_layers = len(layers) # Calculate the number of training examples. num_examples = data.shape[0] # Input layer (l=1) in_layer_activation = data # Propagate to hidden layers. for layer_index in range(num_layers - 1): theta = thetas[layer_index] out_layer_activation = sigmoid(in_layer_activation @ theta.T) # Add bias units. out_layer_activation = np.hstack((np.ones((num_examples, 1)), out_layer_activation)) in_layer_activation = out_layer_activation # Output layer should not contain bias units. return in_layer_activation[:, 1:] # pylint: disable=R0914 @staticmethod def back_propagation(data, labels, thetas, layers, regularization_param): """Backpropagation function""" # Get total number of layers. num_layers = len(layers) # Get total number of training examples and features. (num_examples, num_features) = data.shape # Get the number of possible output labels. num_label_types = layers[-1] # Initialize big delta - aggregated delta values for all training examples that will # indicate how exact theta need to be changed. deltas = {} for layer_index in range(num_layers - 1): in_count = layers[layer_index] out_count = layers[layer_index + 1] deltas[layer_index] = np.zeros((out_count, in_count + 1)) # Let's go through all examples. for example_index in range(num_examples): # We will store layers inputs and activations in order to re-use it later. layers_inputs = {} layers_activations = {} # Setup input layer activations. layer_activation = data[example_index, :].reshape((num_features, 1)) layers_activations[0] = layer_activation # Perform a feedforward pass for current training example. for layer_index in range(num_layers - 1): layer_theta = thetas[layer_index] layer_input = layer_theta @ layer_activation layer_activation = np.vstack((np.array([[1]]), sigmoid(layer_input))) layers_inputs[layer_index + 1] = layer_input layers_activations[layer_index + 1] = layer_activation # Remove bias units from the output activations. output_layer_activation = layer_activation[1:, :] # Calculate deltas. # For input layer we don't calculate delta because we do not # associate error with the input. delta = {} # Convert the output from number to vector (i.e. 5 to [0; 0; 0; 0; 1; 0; 0; 0; 0; 0]) bitwise_label = np.zeros((num_label_types, 1)) bitwise_label[labels[example_index][0]] = 1 # Calculate deltas for the output layer for current training example. delta[num_layers - 1] = output_layer_activation - bitwise_label # Calculate small deltas for hidden layers for current training example. # The loops should go for the layers L, L-1, ..., 1. for layer_index in range(num_layers - 2, 0, -1): layer_theta = thetas[layer_index] next_delta = delta[layer_index + 1] layer_input = layers_inputs[layer_index] # Add bias row to the layer input. layer_input = np.vstack((np.array([[1]]), layer_input)) # Calculate row delta and take off the bias row from it. delta[layer_index] = (layer_theta.T @ next_delta) * sigmoid_gradient(layer_input) delta[layer_index] = delta[layer_index][1:, :] # Accumulate the gradient (update big deltas). for layer_index in range(num_layers - 1): layer_delta = delta[layer_index + 1] @ layers_activations[layer_index].T deltas[layer_index] = deltas[layer_index] + layer_delta # Obtain un-regularized gradient for the neural network cost function. for layer_index in range(num_layers - 1): # Remember that we should NOT be regularizing the first column of theta. current_delta = deltas[layer_index] current_delta = np.hstack((np.zeros((current_delta.shape[0], 1)), current_delta[:, 1:])) # Calculate regularization. regularization = (regularization_param / num_examples) * current_delta # Regularize deltas. deltas[layer_index] = (1 / num_examples) * deltas[layer_index] + regularization return deltas @staticmethod def thetas_init(layers, epsilon): """Randomly initialize the weights for each neural network layer Each layer will have its own theta matrix W with L_in incoming connections and L_out outgoing connections. Note that W will be set to a matrix of size(L_out, 1 + L_in) as the first column of W handles the "bias" terms. :param layers: :param epsilon: :return: """ # Get total number of layers. num_layers = len(layers) # Generate initial thetas for each layer. thetas = {} # Generate Thetas only for input and hidden layers. # There is no need to generate Thetas for the output layer. for layer_index in range(num_layers - 1): in_count = layers[layer_index] out_count = layers[layer_index + 1] thetas[layer_index] = np.random.rand(out_count, in_count + 1) * 2 * epsilon - epsilon return thetas @staticmethod def thetas_unroll(thetas): """Unrolls cells of theta matrices into one long vector.""" unrolled_thetas = np.array([]) num_theta_layers = len(thetas) for theta_layer_index in range(num_theta_layers): # Unroll cells into vector form. unrolled_thetas = np.hstack((unrolled_thetas, thetas[theta_layer_index].flatten())) return unrolled_thetas @staticmethod def thetas_roll(unrolled_thetas, layers): """Rolls NN params vector into the matrix""" # Get total numbers of layers. num_layers = len(layers) # Init rolled thetas dictionary. thetas = {} unrolled_shift = 0 for layer_index in range(num_layers - 1): in_count = layers[layer_index] out_count = layers[layer_index + 1] thetas_width = in_count + 1 # We need to remember about bias unit. thetas_height = out_count thetas_volume = thetas_width * thetas_height # We need to remember about bias units when rolling up params. start_index = unrolled_shift end_index = unrolled_shift + thetas_volume layer_thetas_unrolled = unrolled_thetas[start_index:end_index] thetas[layer_index] = layer_thetas_unrolled.reshape((thetas_height, thetas_width)) # Shift frame to the right. unrolled_shift = unrolled_shift + thetas_volume return thetas ================================================ FILE: homemade/utils/__init__.py ================================================ ================================================ FILE: homemade/utils/features/__init__.py ================================================ """Dataset Features Related Utils""" from .normalize import normalize from .generate_polynomials import generate_polynomials from .generate_sinusoids import generate_sinusoids from .prepare_for_training import prepare_for_training ================================================ FILE: homemade/utils/features/generate_polynomials.py ================================================ """Add polynomial features to the features set""" import numpy as np from .normalize import normalize def generate_polynomials(dataset, polynomial_degree, normalize_data=False): """Extends data set with polynomial features of certain degree. Returns a new feature array with more features, comprising of x1, x2, x1^2, x2^2, x1*x2, x1*x2^2, etc. :param dataset: dataset that we want to generate polynomials for. :param polynomial_degree: the max power of new features. :param normalize_data: flag that indicates whether polynomials need to normalized or not. """ # Split features on two halves. features_split = np.array_split(dataset, 2, axis=1) dataset_1 = features_split[0] dataset_2 = features_split[1] # Extract sets parameters. (num_examples_1, num_features_1) = dataset_1.shape (num_examples_2, num_features_2) = dataset_2.shape # Check if two sets have equal amount of rows. if num_examples_1 != num_examples_2: raise ValueError('Can not generate polynomials for two sets with different number of rows') # Check if at list one set has features. if num_features_1 == 0 and num_features_2 == 0: raise ValueError('Can not generate polynomials for two sets with no columns') # Replace empty set with non-empty one. if num_features_1 == 0: dataset_1 = dataset_2 elif num_features_2 == 0: dataset_2 = dataset_1 # Make sure that sets have the same number of features in order to be able to multiply them. num_features = num_features_1 if num_features_1 < num_examples_2 else num_features_2 dataset_1 = dataset_1[:, :num_features] dataset_2 = dataset_2[:, :num_features] # Create polynomials matrix. polynomials = np.empty((num_examples_1, 0)) # Generate polynomial features of specified degree. for i in range(1, polynomial_degree + 1): for j in range(i + 1): polynomial_feature = (dataset_1 ** (i - j)) * (dataset_2 ** j) polynomials = np.concatenate((polynomials, polynomial_feature), axis=1) # Normalize polynomials if needed. if normalize_data: polynomials = normalize(polynomials)[0] # Return generated polynomial features. return polynomials ================================================ FILE: homemade/utils/features/generate_sinusoids.py ================================================ """Add sinusoid features to the features set""" import numpy as np def generate_sinusoids(dataset, sinusoid_degree): """Extends data set with sinusoid features. Returns a new feature array with more features, comprising of sin(x). :param dataset: data set. :param sinusoid_degree: multiplier for sinusoid parameter multiplications """ # Create sinusoids matrix. num_examples = dataset.shape[0] sinusoids = np.empty((num_examples, 0)) # Generate sinusoid features of specified degree. for degree in range(1, sinusoid_degree + 1): sinusoid_features = np.sin(degree * dataset) sinusoids = np.concatenate((sinusoids, sinusoid_features), axis=1) # Return generated sinusoidal features. return sinusoids ================================================ FILE: homemade/utils/features/normalize.py ================================================ """Normalize features""" import numpy as np def normalize(features): """Normalize features. Normalizes input features X. Returns a normalized version of X where the mean value of each feature is 0 and deviation is close to 1. :param features: set of features. :return: normalized set of features. """ # Copy original array to prevent it from changes. features_normalized = np.copy(features).astype(float) # Get average values for each feature (column) in X. features_mean = np.mean(features, 0) # Calculate the standard deviation for each feature. features_deviation = np.std(features, 0) # Subtract mean values from each feature (column) of every example (row) # to make all features be spread around zero. if features.shape[0] > 1: features_normalized -= features_mean # Normalize each feature values so that all features are close to [-1:1] boundaries. # Also prevent division by zero error. features_deviation[features_deviation == 0] = 1 features_normalized /= features_deviation return features_normalized, features_mean, features_deviation ================================================ FILE: homemade/utils/features/prepare_for_training.py ================================================ """Prepares the dataset for training""" import numpy as np from .normalize import normalize from .generate_sinusoids import generate_sinusoids from .generate_polynomials import generate_polynomials def prepare_for_training(data, polynomial_degree=0, sinusoid_degree=0, normalize_data=True): """Prepares data set for training on prediction""" # Calculate the number of examples. num_examples = data.shape[0] # Prevent original data from being modified. data_processed = np.copy(data) # Normalize data set. features_mean = 0 features_deviation = 0 data_normalized = data_processed if normalize_data: ( data_normalized, features_mean, features_deviation ) = normalize(data_processed) # Replace processed data with normalized processed data. # We need to have normalized data below while we will adding polynomials and sinusoids. data_processed = data_normalized # Add sinusoidal features to the dataset. if sinusoid_degree > 0: sinusoids = generate_sinusoids(data_normalized, sinusoid_degree) data_processed = np.concatenate((data_processed, sinusoids), axis=1) # Add polynomial features to data set. if polynomial_degree > 0: polynomials = generate_polynomials(data_normalized, polynomial_degree, normalize_data) data_processed = np.concatenate((data_processed, polynomials), axis=1) # Add a column of ones to X. data_processed = np.hstack((np.ones((num_examples, 1)), data_processed)) return data_processed, features_mean, features_deviation ================================================ FILE: homemade/utils/hypothesis/__init__.py ================================================ """Dataset Hypothesis Related Utils""" from .sigmoid import sigmoid from .sigmoid_gradient import sigmoid_gradient ================================================ FILE: homemade/utils/hypothesis/sigmoid.py ================================================ """Sigmoid function""" import numpy as np def sigmoid(matrix): """Applies sigmoid function to NumPy matrix""" return 1 / (1 + np.exp(-matrix)) ================================================ FILE: homemade/utils/hypothesis/sigmoid_gradient.py ================================================ """Sigmoid gradient function""" from .sigmoid import sigmoid def sigmoid_gradient(matrix): """Computes the gradient of the sigmoid function evaluated at z.""" return sigmoid(matrix) * (1 - sigmoid(matrix)) ================================================ FILE: images/machine-learning-map.xml ================================================ 7V1Zc6M4EP41qdp9SAoQ56PjHFu1Tipr7zH7SIxss4ORF3CO+fUrDNggyYmTQQ1oZ6pmxojLfN10f31IPkPj9ctt4m9WdyTA0ZmhBS9n6OrMMCzDseh/+chrMYJMzyhGlkkYFGP6YWAWfsPloFaObsMAp40DM0KiLNw0B+ckjvE8a4z5SUKem4ctSNS868ZfYm5gNvcjfvSvMMhW5WMgTTvs+AWHy1V5a7rLK/Y8+vOvy4Rs4/KGZwZa7P4Uu9d+dbHySunKD8hzbQhdn6FxQkhWfFq/jHGUo1vhVpx3c2Tv/osnOM5OOaGUVJq9Vs+OAwpFuUmSbEWWJPaj68Po5e7xcH4BjW6tsnVEP+r0I34Jsy+1z3/nh1xY+VacJa9fmpt/l0f+g7PstdQBf5sROnS474SQTXncgsRZeZi+u0j0uEPuCSdZSGVHh+bb5Gn3xfLjiyfLH+coNuVQSrbJvDyqVNTMT5a4PMrcy4VqPCZrTL88PSTBkZ+FT82r+6XmLffHHcCnH0r8xbKwPyGLxhO/KxiNE8xnwW8NXAQE7qc0/YPoXhhWDWC9rvd6Xet7Ar3uQmEPoNkXR6FnTI7WB+jh1N4BgN45jn0P1b7mZyVjX1ziyY+25UXv/PkqjDEdnGA/icN4yUnnAHcOwvMqzPBs4+8e55myraYIFmEUjUlEkt25COuBhR06nmYJ+YprezzbQb7NoOpW2+Xdy0fO/Sl+eRtkHr2XPUcqTimpn1tuPh9olF5xn1WNQdna9+PtdeA/ZRCbz2k64jXdAVL0irZLRB6GUraGPJRnRZyJmW03OHkKUwqmJCuzWGB7PhdZmcDxHjWNwdWUYGV0vWllzi1AM6MbwGwGnrGYArJ4RCLtGxOzU2PSNWERQQ9FFnUInu6wqt1v7C0g7E3Okv8Rp/8HW27ZXdpyHXVJGgVZARwHozyDSQdiEuNi5CbMn+DTjsD49BvhiByBAWWOdIk5mzfY4wBEABXC6iAuwTjuEoYoHc0Dko7D+YwpXiY4TUMSt+wmFsYRN2E/2habWDjA+V2eYe8JKs+wdwPvuQazFZoPwPMH7BpckV0CyzgY8qOEpnAMBaQDlZXQ4Yst2uClc8wYSpBOx2Fe3336974m5akPJKQ3OWTGPe2CGkjbdDTLdQ1kMr7N0S7M2n4TNW9Q6Ep5TUbY+y95ovwhakIDFz9rOqEonctRunHkU0K3COf0RkrQOsOyuqR1VafOj4hGrP561XDVcE5Q+q+b8mtJH6viDUA6CKpDSTchah8f6qIZgnjA8vdVPrbuPbZphpP288ZdeA4uVUxJE6DnsHpXHumZ8gsK4boFlqq05NPaZuHQeK9yOATxgEWdlnze9bG67hCkA1ZqsXVg6TgqiAeuMA/Bu95o4+RbaIcgHjBazLdhXYVrHOd1GD8Ks/ymUxxs54pE8I7D8DATlIZxYI/SlMzDMj+iTbeRtA7bjvDmeO+pPRJtAO66ALZnwKZHkC90oSyP12m2pP/huEg2UJyqmvP4I81+umyggkUPoO1ryAVKoXCgQkUPurbvvJUDHojHAQtF+ArVFIfxgtCvt8a7gqeqnapmk4WdnHxso1HVhOiokN2Z/XmVr2BtTMuGskemzam8NGH0AFYofmRCFGJlz0xtGXuwacEap9LXcYrXjzJD584NuK13aMERQDjAhWrAKi3IwiEoK40AWOMbpemWVhloGXwoe4KgW8oGgD3UzDEEkZ/7UG2gB+DbUCSmT1Pfe4I9VK+YYPb7Pd4mfn7MPc6eSfI1zW8RB/TfK4w3ClMbdt0NA5LaVMXjPgdI76VwPqf/SNDvZUMlMREP+5jETyTaZrvC4+414N+Hn8b39z+3rP9dVMWYohiC7AWz+fjpisLaNqr5uoECVLXdHzmoMnbEFJR2XQGoRhugdrtEW+/zvkjgbG2obI0tsfmxAwkcjypalM33Rl/lqcxEIoPJYpgu8+4V36uNqUJ2x6vHDfKNhKr9I57+TjEFPymqMELXP1XD9evO+15Kmu9HfAPSLY5xUkjX0EYBfbbUT0IO/duREuizsQYs+nwxZkTfcxzPSUBhVwDevT3vBF6Pg/cBU3u3oQjEKqBreR2GDSYfsc0yf/5VkTZFZr0ODxBZT34S9PQ8XP+arap5e3Wi4kEt1lHdvKb1l/5yqYbSu0ZT6fVTV7xtpRdagyh6DZefm6JpARpYq5QGkdAYcPgkFg/YjDRN/nzOQc95EosHbD6n9mM+54fF40HV3kw++XBJSJqp4dRZJntyNa2V2gJPlyazu7ZR7aC0oDN5A0uw7ou02gKvr5PZ70qgygS0lmBumDRU+VWLb6d/KACqYXWnqg5gNb1fHs32eI8G1slj85mvFP+b/1VAny2N0WcNTp+r69aA/e1c1uzcDrBl0rX736aAgJY3FVe/qdCFwC79qwO2Ibg8/5qNprORCrAydTNdkKKVBivPwPKyWRbO6eAoWpIkzFZrBUHeNwvVgwddFso8IxvlZw0eVft9UGVpridYZ92PA0KVVbshCU4zBfD12NmNSKC1miyEee715XaXT1ABWaZfxwAM0PYSq8e9+S1uL1WIfT2m+IIAuVeZqG623/qZKlrrsu21gAa3LNE0vVjgqwItm11EoAaBN7WTMKbR2JlhR/RGl4/5p2X+Sd6PiXTByvbVuGoRJUMQAzsC2Fsp1Oq8HX4g0WtM1rs2MaWhZ3+sUQS8SN/bAZ6P5qZhnpcybiZ+mhLFsT/XubXDTkxltoM+T51/PVdinoTOrWIPyT0Eq7Dc+0X76aX/iltv1OsCYIMFGJKB6LybnP2pAmWm7IOxxoCptb3tqScs8TwsjC1riH9PsBKajEwWcoGpqCY/tf8zZnyYMiHLMN0l3pT2fZyJNiBdn8FbkF/P77Dffhd1F/UkjtMJ0kXSrEjvVpvoVxl1n7rr5ve7kcDGX87GIxVYn+Wyei/oDJKn9x2vxOv0XvEF0/EBFZ/3tKPlMqJXquaGDV7/bfYnWUV235Om/3xa8Gb77Vv+/cbKuFaTXVxdFFjKg5ivH+bA0pHZKlyokH01OVYoSEdJwxdi0cMzdHyeUu9NuLDpHGopLV3Q1ny9ndO7KKD4nsbablDF5zNW8t6Enqm02alKCzpCNklIklAFnTZYZynIZsnTaT67/b/RaatTneaXYLh5oNu3FCAq9eHrtcNlaQWpK2l6bfERfHY+u79WAFiXDeAFHZDycOUDxIexCn2lHmLUVVCqkYeqwaE6UaJb12MjFchY2+KZ8OzPKxVQZRsdIUHludjkSgVVdfWmqsrTVLqZEJLV9t1SSFZ3JMD5Ef8B ================================================ FILE: images/neural_network/multi-class-network.xml ================================================ 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 ================================================ FILE: images/neural_network/neuron-network.xml ================================================ 7Vxtc6M2EP41nsl9OA9IIMPHJM29zFynncl02n5UQLbpYeSCnNj99RUgGWRhx2fESy62Z+5gJQTss7vPriRnAu9X288pXi9/pSGJJ8AKtxP4ywSAmW/xf3PBrhQ4yCkFizQKS5FdCR6j/4gQiusWmygkmdKRURqzaK0KA5okJGCKDKcpfVG7zWms3nWNF0QTPAY41qV/RiFbllIILatq+EKixVLcmjf5ZcsTDr4vUrpJxA0nAM6LT9m8wnIwMVK2xCF9qYngwwTep5Sy8mi1vSdxrlupt/K6T0da9w+ekoSddYF47ozt5MuTkOtCnNKULemCJjh+qKR3xfuRfASLny3ZKuaHNj8k24j9JcT58d/58dTlZ/8QxnYCaLxhlIuqsb9RuhYjzGnCRDebK+MuYzhltzmkXBLEOMuiQIo/RfH+xkkoOyU0IaVEtOcPU75k/mZH9SREGd2kgegF9oBwQyd0RVi6411SEmMWPatDYWFyi32//aW/04jfBFjCOyAS2AvnEPephuDvtiBMXFVhxw9qj1GJCkSb0QWehu6r2NkadlxF6W4Pa35StSn4CNXXwbFUcCoEK3zsC82jJa48pBR6liC0xFpB6RQkpx1OqPCKUjNKsC+UyiGecbwhMpCjmIl3U+BD/26obPiYFW99yzvYaL0tXl2286NF/v9WjpRtnloNZMuB+MsUY5XimrR8Vik+tLo45nSaW8LLMmLkcY0Lxb9wQldNDmfrkmPn0TY3SQVelJ9zC7mnMU2LgXO+A0EZpFP6ndRaQvSEXLR/mAb8n0nKyLYm0rGWUdRXo6jte1MP+tVnVja/VPztoKnr1L5u2WNZI/IjXVqZkqWrvguGNcSUlxL1ZT7e1p/PZFi/M4aFp9G9hnMV6oFIF8KOUHq7SBh3OheqTrd3wg6c7g2wM7iycz0CI2+KZjV2dsfCzrau+is7i15OL+wMUXfsfBrdKzurUA9UbEFwRelylPrKoZweSFdjRUM3MEXq8Erq9cANvakLRkLkzsx4ELGHDRMVaj8aJtxeEnzgd5bgO/q8tQkwR8oHLYEeiLVdjQ+M1U7WsTDbVzwNMfHmjfEUBR55mncTT225NjB4MLVtDdyOUrRLC5pTrnyW66AjHlf3Jcdqxq9lIEXIn4JZ9YUHYdWe+qiryIrMZHGay2LF98ezQMHDoe7dLvFCp8m7PfAEkaFsyQX+FMHaV/V1f6QTInoaZbjwusDjCxDP8mqgO3Gzo/dAkOZzmIGV2zCDP5hyh1hF71S5DaX9YMq1zS9qvZZ+d6rbhjR5ON0CjYGXe+5c46RxykKI7h8mvvcqqdZHudl+0KDk/MVUwFQeFPDWSVOIcBwtEn4acGUTLr/L2TAKcHwrGlZRGMbHGFu1l3pC58lz8ZDAAP161kG16iGNYV1Lp1TbMYCxvkB1F/EBgfVHErGsA0RiMmfm8ACnHOt8CJB9UN/k6YoOgtcAAjAAgl6gSicJo+fGTDfH4aNQaZ7qCjs/Pp1Y87RveJd3tewjnlgTF7dXpV080c3XZL3JU/ri0T784HO9DxOFnmqijowaNQP1GqIEtNobqExWu6vF2k6nwynkn6ZbNLATmLzxak+zmgbburDaG+/yt6GtFCOxwTGsz4zVBvPVmnHaoE7UN6CLtNUsA1mGQHM8mRTJYGE5GjKyPKxDAUxwkD4f+K507x/qXk7G9qB7p4s59dmI9z1cvs4lZyWNTs6f7SOzq48oROL0F5/g8fWKLos4JZcdtoj7wtEnyU9fxbWzUVtdQmus4ma6hZqo4hzXeBT/KbcqQG/AEC5vXgsj6oLlu9is0LK4OFjAHM1mBfnT65ObFbR91SHOloVD2qr2L7V2XXGvTDRLmeHd1LZ3sHegdEJt74C+K8F7ZSCD27scIzFzVLvsL4+MjqVHxtKE+9jF1dXv194kSXW04Wd2+GuY7n6PKI3pynQXMx1C6HBWAHkNC1cD7XNu2prXfUUEx1MR/bZh72Fdq50NO4c23GtNpGdk72rG5FD3PFduiB+G5kz4afXngkrGqP4mE3z4Hw== ================================================ FILE: images/neural_network/neuron.xml ================================================ 5VnRjps6EP2aSO3DRWADgcdNdu9tpVaqtKraPjrggG8JpsQ0Sb++NrYTOybbdJd0U22QEjy2h/GcM54xmcD5avtfi5ryPc1xNQF+vp3A2wkA09Tn30Kwk4IwDqWgaEkuRcFBcE9+YCVU84qO5HhtDWSUVow0tjCjdY0zZslQ29KNPWxJK/upDSqwI7jPUOVKP5GclVIKoe8fOt5gUpTq0bwrlT0LlH0tWtrV6oETAJf9R3avkFamNK1LlNONIYJ3EzhvKWXybrWd40r4VvtNzvv3RO/e8BbX7KwJsZzxHVUd1ib3hrGd9oZYT6OG4Zbh7RAGaKGH+64NwX5lnDGYrjBrd3yIUgQ1XRRbAqCcuTF8r9WWpttTjbnCu9jrPiyZ36hVD3sADDggrvgTZkvK7Tc9EX/rqO74Z92z9oYPCOKGr2R26Od3hfjdak3rbvEkRYFWxBfT65JiQypt1eIjAPmCeeTwxmxTEobvG5SJng2PXS4r2Yr75jbgt2jdyHBaki3OlYEqPDlTeJtU1ZxWtO0VC2qDLBMLZC39io2ePF7EUbw3xiJDfIJLLkEUIeLUS2BqfBx6hLEXhcYVuWQ5MeQp1IF/AXXAy6ZOAFMvnhrUSa6EO+Ef4I4D7kgPGIub8GVzE/ipFwVXyM1oHG7+YlOTMv8KOMA3cocDOcLJcpADcZbgxfKpHHh2kINgCGW0En6rF2vxQzvWdOxY6mKQ8+JZNWtaCzD6Cli4+da3YcBbwj4b91/EEC/irf8xYzsFCOoYFc9vWUkLWqPqHaWNmmXGLngQhTXt2kzZqETC1AdhaXGFGPlunwOG3KymfqCkjwgFNj/6eGBqXJFd2cbASyM34vUDGGoLzJTOIyj3Rp6F7lBZP0YIo4EQvobqdDCEI5zk4VAIJ2AB4ydv47pXlBjQvGzMr7UCmTpIPCJqud/a3Wc1o298UY1HxHMP4nnxrE5tMmAuFOLnOjK50I54wreP3S1/w7vwiryb/lHvBhf3bXhFvtXv20Z0bvCMm0J0Ta513yuV+9zZoPqsFAxGOoCd1DO/m8ySX6Zvaa8Uv9q+djjDEyWzmWFnXMUjMz0rEapIUfNmxnHFXD4TaZdkqLpRHSuS59Wp2sAm5nFh2LeVkWCMRA+SyPNT45raiT6aekHoJHcYeuYc/crSTO5BwAsI8/1WOgL/3JdTM8IVAv9jTdgFIKzwko0L4BiYRcCzSrPYhmzqhWY5nk4d+AKd3i8OmHvqflv3x68esfWLgUyUuhZKIIq8xIQpfkaUEgelm4wnDp48qNjTu78ruAb+z3HBe/DkcwSVD58LKt48/G0mT8yH/ybh3U8= ================================================ FILE: notebooks/anomaly_detection/anomaly_detection_gaussian_demo.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Anomaly Detection Using Gaussian Distribution\n", "\n", "_Source: 🤖[Homemade Machine Learning](https://github.com/trekhleb/homemade-machine-learning) repository_\n", "\n", "> ☝Before moving on with this demo you might want to take a look at:\n", "> - 📗[Math behind the Anomaly Detection](https://github.com/trekhleb/homemade-machine-learning/tree/master/homemade/anomaly_detection)\n", "> - ⚙️[Gaussian Anomaly Detection Source Code](https://github.com/trekhleb/homemade-machine-learning/blob/master/homemade/anomaly_detection/gaussian_anomaly_detection.py)\n", "\n", "**Anomaly detection** (also **outlier detection**) is the identification of rare items, events or observations which raise suspicions by differing significantly from the majority of the data.\n", "\n", "The **normal** (or **Gaussian**) distribution is a very common continuous probability distribution. Normal distributions are important in statistics and are often used in the natural and social sciences to represent real-valued random variables whose distributions are not known. A random variable with a Gaussian distribution is said to be normally distributed and is called a normal deviate.\n", "\n", "> **Demo Project:** In this demo we will build a model that will find anomalies in server operational parameters such as `Latency` and `Throughput`." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# To make debugging of logistic_regression module easier we enable imported modules autoreloading feature.\n", "# By doing this you may change the code of logistic_regression library and all these changes will be available here.\n", "%load_ext autoreload\n", "%autoreload 2\n", "\n", "# Add project root folder to module loading paths.\n", "import sys\n", "sys.path.append('../..')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Import Dependencies\n", "\n", "- [pandas](https://pandas.pydata.org/) - library that we will use for loading and displaying the data in a table\n", "- [numpy](http://www.numpy.org/) - library that we will use for linear algebra operations\n", "- [matplotlib](https://matplotlib.org/) - library that we will use for plotting the data\n", "- [anomaly_detection](https://github.com/trekhleb/homemade-machine-learning/blob/master/homemade/anomaly_detection/gaussian_anomaly_detection.py) - custom implementation of anomaly detection using Gaussian distribution." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# Import 3rd party dependencies.\n", "import numpy as np\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "\n", "# Import custom Gaussian anomaly detection implementation.\n", "from homemade.anomaly_detection import GaussianAnomalyDetection" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Load the Data\n", "\n", "In this demo we will use the dataset with server operational parameters such as `Latency` and `Throughput` and will try to find anomalies in them." ] }, { "cell_type": "code", "execution_count": 3, "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", "
Latency (ms)Throughput (mb/s)Anomaly
013.04681514.7411520
113.40852013.7632700
214.19591515.8531810
314.91470116.1742600
413.57670014.0428490
513.92240313.4064690
612.82213214.2231880
715.67636615.8916910
816.16287516.2029980
912.66645114.8990841
\n", "
" ], "text/plain": [ " Latency (ms) Throughput (mb/s) Anomaly\n", "0 13.046815 14.741152 0\n", "1 13.408520 13.763270 0\n", "2 14.195915 15.853181 0\n", "3 14.914701 16.174260 0\n", "4 13.576700 14.042849 0\n", "5 13.922403 13.406469 0\n", "6 12.822132 14.223188 0\n", "7 15.676366 15.891691 0\n", "8 16.162875 16.202998 0\n", "9 12.666451 14.899084 1" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Load the data.\n", "pd_data = pd.read_csv('../../data/server-operational-params.csv')\n", "\n", "# Print the data table.\n", "pd_data.head(10)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Print histograms for each feature to see how they vary.\n", "histohrams = pd_data[['Latency (ms)', 'Throughput (mb/s)']].hist(grid=False, figsize=(10,4))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Plot the Data\n", "\n", "Let's plot `Throughput(Latency)` dependency and see if the distribution is similar to Gaussian one." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Extract first two column from the dataset.\n", "data = pd_data[['Latency (ms)', 'Throughput (mb/s)']].values\n", "\n", "# Plot the data.\n", "plt.scatter(data[:, 0], data[:, 1], alpha=0.6)\n", "plt.xlabel('Latency (ms)')\n", "plt.ylabel('Throughput (mb/s)')\n", "plt.title('Server Operational Params')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Find Anomalies Using Gaussian Distribution\n", "\n", "Let's try to use our custom anomaly detection implementation using Gaussian distribution." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "mu\n", "[14.11222578 14.99771051]\n", "\n", "\n", "sigma^2\n", "[1.83263141 1.70974533]\n" ] } ], "source": [ "# Init Gaussian anomaly instance.\n", "gaussian_anomaly = GaussianAnomalyDetection(data)\n", "\n", "# Let's see Gaussian estimation parameters.\n", "print('mu')\n", "print(gaussian_anomaly.mu_param)\n", "\n", "print('\\n')\n", "\n", "print('sigma^2')\n", "print(gaussian_anomaly.sigma_squared)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Visualize the Fit\n", "\n", "Let's draw a contour plots that will represent our Gaussian distribution for the dataset." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Create a 3D grid to build a contour plots.\n", "\n", "# Create ranges along X and Y axes.\n", "latency_from = 0\n", "latency_to = 35\n", "\n", "throughput_from = 0\n", "throughput_to = 35\n", "\n", "step = 0.5\n", "\n", "latency_range = np.arange(latency_from, latency_to, step)\n", "throughput_range = np.arange(throughput_from, throughput_to, step)\n", "\n", "# Create X and Y grids.\n", "(latency_grid, throughput_grid) = np.meshgrid(latency_range, throughput_range)\n", "\n", "# Flatten latency and throughput grids.\n", "flat_latency_grid = latency_grid.flatten().reshape((latency_grid.size, 1))\n", "flat_throughput_grid = throughput_grid.flatten().reshape((throughput_grid.size, 1))\n", "\n", "# Joing latency and throughput flatten grids together to form all combinations of latency and throughput.\n", "combinations = np.hstack((flat_latency_grid, flat_throughput_grid))\n", "\n", "# Now let's calculate the probabilities for every combination of latency and throughput.\n", "flat_probabilities = gaussian_anomaly.multivariate_gaussian(combinations)\n", "\n", "# Resghape probabilities back to matrix in order to build contours.\n", "probabilities = flat_probabilities.reshape(latency_grid.shape)\n", "\n", "# Let's build plot our original dataset.\n", "plt.scatter(data[:, 0], data[:, 1], alpha=0.6)\n", "plt.xlabel('Latency (ms)')\n", "plt.ylabel('Throughput (mb/s)')\n", "plt.title('Server Operational Params')\n", "\n", "# On top of our original dataset let's plot probability contours.\n", "plt.contour(latency_grid, throughput_grid, probabilities, levels=10)\n", "\n", "# Display the plot.\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Select best threshold\n", "\n", "Now, in order to decide which examples should be counted as an anomaly we need to decide which probability threshold to choose. We could do it intuitively but since we have all data examples labeled in our dataset let's use that data to calculate the best threshold." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Best epsilon:\n", "8.986095083415364e-05\n", "\n", "\n", "Best F1 score:\n", "0.8\n" ] } ], "source": [ "# Extract the information about which example is anomaly and which is not.\n", "num_examples = data.shape[0]\n", "labels = pd_data['Anomaly'].values.reshape((num_examples, 1))\n", "\n", "# Returns the density of the multivariate normal at each data point (row) of X dataset.\n", "probabilities = gaussian_anomaly.multivariate_gaussian(data)\n", "\n", "# Let's go through many possible thresholds and pick the one with the highest F1 score.\n", "(epsilon, f1, precision_history, recall_history, f1_history) = gaussian_anomaly.select_threshold(\n", " labels, probabilities\n", ")\n", "\n", "print('Best epsilon:')\n", "print(epsilon)\n", "\n", "print('\\n')\n", "\n", "print('Best F1 score:')\n", "print(f1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Plot Precision/Recall Progress\n", "\n", "Let's now plot precision, reacall and F1 score changes for every iteration." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Make the plot a little bit bigger than default one.\n", "plt.figure(figsize=(15, 5))\n", "\n", "# Plot precission history.\n", "plt.subplot(1, 3, 1)\n", "plt.xlabel('Iteration')\n", "plt.ylabel('Value')\n", "plt.title('Precission Progress')\n", "plt.plot(precision_history)\n", "\n", "# Plot recall history.\n", "plt.subplot(1, 3, 2)\n", "plt.xlabel('Iteration')\n", "plt.ylabel('Value')\n", "plt.title('Recall Progress')\n", "plt.plot(recall_history)\n", "\n", "# Plot F1 history.\n", "plt.subplot(1, 3, 3)\n", "plt.xlabel('Iteration')\n", "plt.ylabel('Value')\n", "plt.title('F1 Progress')\n", "plt.plot(f1_history)\n", "\n", "# Display all plots.\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Fing Outliers\n", "\n", "Since now we have calculated best `epsilon` we may find outliers." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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bNy4kba2Nm644YaM+/VNBEmTJ0/m97//fdbnj8ViA280BCwRGGPGjueeg899Ds45x/187rlDOtxf/vIXwuEwl1xyCeAmqrnrrru49957+eEPf8hVV13Vs+0HP/hBVq5cyXXXXddzR/LHP/7xXsfbsmULxx57LADxeJxrr72WE044geOOO47//M//BNwdx6eddhqLFi1izpw5tLe384EPfIDjjz+eY489lt/85jeH9Dv1x24oM8aMDc89BzfdBFVVMGUK7N3rXn/jG3Diwc2Iu379et7+9rf3WlZZWcn06dPTflv/1re+xd13383atWszHvsnP/kJVVVVPP/883R1dXHqqafyvve9D4A1a9awbt06Zs6cybJly5g8eTKPPPII4MYuGmpWIjDGjA0/+5lLAtXV4HnuZ1WVWz4CPfbYYyxdupR58+Zx0kknsW/fPjZt2gTAiSeeyMyZboykuXPnsmLFCr761a/y1FNPUVVVlemwB8USgTFmbNi8GSorey+rrHTLD9KcOXNYvXp1r2UtLS1s3bqV6urqXvMXRyKRQR1bVfnBD37A2rVrWbt2LZs3b+4pESQHpgOYNWsWa9asYe7cudx444184xvfOOjfJx1LBMaYsWHmTGhp6b2spcUtP0jvec976OjoYOnSpYCr17/mmmu4+OKLOeKII1i7di2JRIJt27bxXEp7RCgUIhqNZjz2+9//fpYsWdKz3caNG2lvb3/Tdjt27KC0tJRPfOITXHvttaxZs+agf590rI3AGDM2XHSRaxMAVxJoaYHmZrjmmoM+pIjwwAMP8NnPfpZbb72VRCLBOeecw+23305RUREzZ85kzpw5HH300cyfP79nv8svv5zjjjuO+fPnc//99/d77MWLF7Nlyxbmz5+PqjJhwgQefPDBN2330ksvce211+J5HqFQiCVLlhz075P297RhqI0xI9Vgh6Hmuedcm8Dmza4kcNFFB91QPNrYMNTGGAPuol8gF/6hZG0ExhhT4CwRGGNGtNFQfZ1vh/oeWSIwxoxY4XCYffv2WTLIQFXZt28f4XD4oI9hbQTGmBFr6tSp1NfXs2fPnnyHMqKFw2GmTp160PtbIjDGjFihUKjnDluTO1Y1ZIwxBc4SgTHGFDhLBMYYU+AsERhjTIGzRGCMMQXOEoExxhQ4SwTGGFPgLBEYY0yBs0RgjDEFzhKBMcYUOEsExhhT4HKWCERkmoj8VUReFpH1IvJFf3mtiKwQkU3+z5pcxWCMMWZguSwRxIBrVHUOcDLwORGZA1wH/FlVjwL+7L82xhiTJzlLBKraoKpr/OetwCvAFOBc4Gf+Zj8DzstVDMYYYwY2LG0EIjIDeBvwLFCnqg3+qp1AXZp9LheRVSKyysYiN8aY3Ml5IhCRcmAZ8CVVbUldp27aoX6nHlLVH6vqAlVdMGHChFyHaYwxBSuniUBEQrgkcL+q/sFfvEtEJvnrJwG7cxmDMcaYzHLZa0iAnwCvqOqdKauWAxf5zy8CHspVDMYYYwaWy6kqTwU+CbwkImv9ZdcD3wJ+KyKfBt4APprDGIwxxgwgZ4lAVZ8GJM3q9+TqvMYYYwbH7iw2xpgCZ4nAGGMKnCUCY4wpcJYIjDGmwFkiMMaYApex15CIhIEPAqcBk4FOYB3wiKquz314xhhjci1tIhCRW3BJYCVujKDdQBiYBXzLTxLXqOqLwxCnMcaYHMlUInhOVb+eZt2dIjIRmJ6DmIwxxgyjtIlAVR/pu0xEPKBcVVtUdTc2TpAxxox6AzYWi8gvRaRSRMpw7QMvi8i1uQ/NGGPMcMim19Acf/jo84BHgZm4MYSMMcaMAdkkgpA/nPR5wHJVjZJmDgFjTGHasPxxnj37Y7ww9x08e/bH2LD88XyHZAYhm0Hn/hPYArwAPCkihwMtGfcwpoCs3drEsjXb2dbYwbTaUi6YP4V502vyHdaw2bD8cbquv5FgeSWRwyYRbGqk6/ob2QDMXrQw3+GZLKQtEYjIKSIiqvp9VZ2iquf4M4ptBc4cvhCNGbnWbm3izhUbaWzvpq4qTGN7N3eu2MjarU35Dm3Y7F9yD9HySmKVVSAescoqouWV7F9yT75DM1nKVDX0KWC1iPxaRC4WkcPATS+pqrHhCc+YkW3Zmu1UhENUloTwRKgsCVERDrFszfZ8hzZswvVbiVVU9FoWq6ggXL81TxGZwcrUffRKABF5K3A2cJ+IVAF/Bf4b+JuqxoclSmNGqG2NHdRVhXstKw8H2dbYkaeIhl9k6nSCTY2uROALtrYSmWq3GY0WAzYWq+o/VfUuVT0LeDfwNPAR3N3GxhS0abWltEV6F5DbIjGm1ZbmKaLhV33lYkJtLQRbmkETBFuaCbW1UH3l4nyHZrKU1aBzIjJfRL4ALAZ2qurnVXVBbkMzZuS7YP4UWiNRWjqjJFRp6YzSGolywfwp+Q5t2MxetJDi228jVlNLeGcDsZpaim+/zRqKR5EBew2JyE24EsAf/EU/FZHfqeptOY3MmBEu2VuoNRJlZ0uE8uIgx0yu4rLTZmbda2is9DiavWgh2IV/1MqmRPBx4ARV/bo/9tDJ2A1lpsCl9haadVglR02soLw4OKgLufU4MiNFNolgB27U0aRioHC6RBjTj6HoLWQ9jsxIkWkY6h/g7iBuBtaLyAr/9XuB54YnPGNy62CrZoait5D1ODIjRaY2glX+z9XAAynLV+YsGmOG0EAX+WTVTEU41Ktq5ur3zhowGUSiMR55sYHueIJwyGP2xHImVpYQDnl87cF1WSWWabWlNLZ3U1kS6lmW7HE0VtoOzOgg7mbhkW3BggW6atWqgTc0xpd6kS8PB2mLxGiNRHtd5L/24Lo3XYhbOqPUlhVx63nHpj32b5/fyq0Pv0xXLEHQExSIJZS68iLGV4aZUl2a9px9Y7x5+XqaOqJ0xRIUBz1qSkP8n5Om8/CLDRljNyYbIrI6mx6e2QxD/UER+YeINIpIi4i0ioiNNWRGtGzq37c1dlAe7l0ozqZq5p6nN1MeDjGxIoyIEI0r8biys7WbsqLggHX+a7c28bUH13HLH9dT39RJJBYHlEg0zramTv79fzbwxr4OovGEtR2YYZHNoHPfA84HXtLRUHwwhuzq3zNVzST99vmt3PP0ZhqaI3gCdRXFvNHYybiyEAokFIqDAUSU9q44r+5uo6w4yLjy4p5zrt/R3FNdFA557GyOMKWmlJZIjFDQQxWm15awtbGToqDQ3NGNBzy1aS9FQSGWUKKxOCIee1ojXPGuI61kYIZUNolgG7DOkoAZTbK5yF8wfwp3rtgIQHcszsZdbbREopw0s5a1W5vYuKuVf3v0n3gC0VgcRNiyrwMR2NvWTTDg4YkQ8CAWh1BA8Dxh8952AF5uaGF3S4RYQtm+v5O5U6r4x9b9NHdG2dbUSWc0TnVJkFAwwIZdrVSGiwgFhcY2pTkSA5SWTkX8eENB5f+9upfntzRx+LhSjplc1XPjmrUnmEMxYBuBiJwA3Ao8AXQll6vqnbkN7QBrIzCDlU0bwdqtTfzoiddYtaWJlq4YtaUhjp1SRXEwQGskyua9bcQS0N4VI57Av+ArcU2QSEA8oZQWB0gkIJZIMKmqmN2t3T1VOqpKLHEgpqDnvt17/pVdBESECeVF7G2PMrW6hPbuGPvauoj7+yngiSt5iP88GBDGlxcT9FwJIZ5QSoqCjC8voq4yTMATa08YpTYsf5z9S+4hXL+VyNTpVF+5+JDu0B6yNgLgm0AH7l6CipSHMSPWvOk1XP3eWdSWFbGrOUJtWdGbksCdKzYS8DyqSkOMKysChNZIjI27WnmloYXt+yMI6i7enrvwd8fjdMcUT5QE0NEVJ6FKScijobmLRMJ9sYollLi6C3nAcxfwaEJRIK7ukVCXWPa1RwkHPfa1dbOn1SUBTw7M/pRQepIHQHdM2dXSRSQWJxJLEFOlKxanNRLjtT3txBNq7QmjUM+8Dk2Nved1GIZJfrKpGpqsqum7UBgzQs2bXpP2W3FqY3JHd5ySUID27hgvbW9mfHkx5eEgje3d7G3rJhTwiMUTdMeVhP9NXTyPoCYAoSuWIBp3F3xFiCfct/cDZW1xiSSeugQ8EWKqdMcS1FUUsbUp0pMAEn0K6snXyUPEE+oGu/Nfe+K5qqbSIna1RAgFshpGzIwg+5fcQzA5rwP0/Oxcck/Oh+/I5tPyJxF5X06jMGaYpfYYKisOEo0rnd1xEgn1L/xQW1aE4toPOqMJ4v43eg9IJBQRIZHyLb877i7QAb9LafJaHk8o/dXAJlR7qnvau92I7kLfJNI/BTqj8Z7qJc9zpZBgQGjujBbU6KdjRT7ndcimRHAl8C8i0gVE8T+nqlqZ08iMGSL93ZyVbEzujsXp7I6xp7WLWFwpDgndsQTReIJ506qpb2xnw27X+Ju8QMfp/e0+VVwh0OcynrzPIFWy3l8Bz4OO7jgBf1nAExLqkkemhCC47UN+20XQg87uOMGAV1Cjn44V+ZzXIZv5CCpU1VPVElWt9F9bEjCjQurAbqGA8OTGPVxy3/Ns2tXCxl0t/GPbfkSE6pIQ4kE0DqpKTUmAZ7c0smFXO54IVeEAxUGPgAx8zngWF3BSjlNXWYKIW5BMGok+x5Deu/RsqyQTQoKA5/6dv7zwKGsoHoXyOa9DprGGZqjqlgzrBZiiqvW5CMyYwUg3JMOPnniNN/Z10N4do6M7TkVxkLLiIA3NXbR1xQgGhHhCKQp6jCsrprG9m/r9nb2OHQBaIvEBq2uypdDTK0iAyVVhumMJOrozT/jX9/zJQkZClZDncfIRtXaPwSg2e9FCNuDaBJK9hsqv/8qwzOuQqWroOyLiAQ/hxhvag+s59Bbc5PXvAb4OWCIwedV3zKDXdrdx5f1rqAwH2bKvg6pwkG6/H2dLJEZNaZA4gidQURxk5vgy1mzdT0d37E1VOOB6++SKAs9vaTroJBP0oKasuKe3kiWB0S1f8zpkmrP4IyIyBzcfwaXAJFw30leAPwHfVNXIsERpTAapPYD2tkZ4fW87ItDQ3ElAxN2cpUpRyPX5b+6MMam6BFVlT2uEhpYIHV1D941/sLI5b7IKqG91USwB+9q7qSjyeLG+OSfxmbEvY2Oxqr4M3DBMsRhzUFKHk9i8r4NQwHN36LZ3M768iL1t3a7fvv+tORpPMHNcKTubI3RGXbfQkS4c9ECgOOjR3OnmSE4mB1Rp6YoTsC6j5iBl02vImBEtdTiJ9q4YJaGA34tGaO6Moaok/P76oaBHVTjExl1t7GyJUBz06I5nrpvPt4DA+PJi2rtjqPYuGSS7jyYSSmnRgX9nG8baDIZ9hTB5lxyN8+J7n+NrD64b9FSNyQnk39jbTntXjPqmDna1RAClOxYnnnD99UWEeDxBU0c3u1pdrWZ/bQIjTTgUoCsWZ3ZdOd3xRK91CfUbiwPChAo30J1NgWkGK2eJQETuFZHdIrIuZdnNIrJdRNb6j3NydX4zOgzFRWve9Bo+eNwkNu9rR3AlAZcEEq4/Pu6uXxGlO65UlYaYXF1CKOARiSbe1C1zJPDEjU1UEvKIJpRgwKO6tIh5U6sJhwIUB4WQ5xq8PRHeelglx0x2/c9tCkwzWNnMR/DnbJb14z7grH6W36Wq8/zHn7I4jhnDhuqi9dL2FuZPr+Gc46Zw6lvGE/C8nv784aBHMBDo6ZsfjSuC4KG97gAeLkFPBrwfobokRGlRgHjCJbYvLzyKSDTBtHGlHDu5goB4BAJCWVGA8uIg1aWhnpvIDnaeBVO4Mt1HEAZKgfEiUsOB+1kqgQFvW1TVJ0VkxhDEaMawoZi3d+3WJh5d10B7VwwRobasiNqyIna3RIjGFS/kIQKRqLvkt3fFaIm0DenvkS1P6BmqIp1QQIglEhQHAxQFPN4ysYw/vbSTHc2dROMJ3lJXSXVpEZv3ddDc0U1NnwH1shmC25hUmUoEn8HdP/BWYI3/fDXuvoK7D+GcV4nIi37VUdrWKxG5XERWiciqPXv2HMLpzEg2rbbUDZ6WYjAXrbVbm7j5j+t7jpFQpWF/Jw37O3t6A4lAIuGqUIQDA7cNp+SYQql3DKcrFFSHQ4AQDgWIxOI0NHcRCgjjy4p5uaGFrfvckBfRWIJYQjlifFmv/ZNtJi2dURKqtHRGaY1EbdgJk1Y28xF8XlV/cFAHdyWCh5Ojl4pIHbAX979wKzBJVS8d6Dg2H8HYlc28Acntlq3Zzrrt+2nvjlNeHOSYyVXsaY3wSkMrndE4zZ1RovEDdf5xv4dNMCB+9ZBHU0c0L79nkgckcD2B+ktIRQEBEYKeUFEcJBR0k990xxIcN7VS4CbFAAAX9UlEQVSKtkiMbU0dtHXFqAyHOKquvGf+hL7DbFuvIZPtfATZdB9tFpFP9V2oqksHG5Sq7ko+F5H/Ah4e7DHM6JXu4nT1e2f1Wn7ZaTPflATuXLGRWFzZ0RzBE6G5I0pJKMDLDS0ISnVZMW2RKHFxQ0aASwJFQY+AB+XhEAGRvCeCpP6SgCduwLmuWIKK4hBNHe4+iOIiV8WzeW878w+vYcu+dt5x5PheVT/g2luS71umIbiN6SubRHBCyvMwbmiJNcCgE4GITFLVBv/lh4B1mbY3Y0ffYSCSvYOS32IzXbSSDcobdrVSFAhQFPSIxhPsbu2iMhxid2uE7pYuIrEDpQHPv/kqrko0DsdMrmTTruFvFxD8mc38Xp+JDNsGPfftPxTwqCotIhJN0ByJU1IUIhgQ2rpiPVVg1hhshtKAiUBVP5/6WkSqgV8PtJ+I/Ao4A9fYXI8bl+gMEZmHqxragmuHMAUgtXcQ0PMz9VtsOskG5eTNYkDPhXFaTQn1TR0EPO1V/++JUFNWRCzh6sifeW0f0Ximy3BuuNFEB95OgOrSIG2ROKiyu6WLcEhojST8cZKUooBHayTaU0VkjcFmqBzMncXtwMyBNlLVC/tZ/JODOJ8ZAw6ld1CyF0xZcZCuaIKioBCLK+XFQXa1dDGhophgwGNvaxdxv1SgKPvaulGgOCh44rk7jP0pJEeS5J3CydnQKsJBWrvclJhV4RCeuMHyTprpRhcFuHPFRoBe7SqXnTbgv6Ux/RowEYjIHznQ0SEAHA38NpdBmbHnULo0XjB/Cneu2MjE8mJe29tGLJEgkVCm1ZTwckMLbz+8hgkVLsn8+ZVd7G3rIqH0VCF1dsVRSfSaB3gk0ZQnitLeHae0yKMzmkCB02dNeFNj70DtKsYMRjYlgu+mPI8Bb9gcBGawkhdzGPy32NQG5c5orKfX0BETyqkIB3smZAHX6ybouXr28eXFbGvqIKaAKuHiAF5CiUSHv4ook5AnJEhOkamouIlpTnvLeKJx5dbz3jxluDUGm6GUTRvBEyJyGHAi7svLazmPyow52fQOGmj//rZNNkKDSzBdsQRlxQHKikJ0Rt1gcp7n7iPo7I7jeSNvQImAJxR5HiLujmNP3AByRcEAh1UV5Ts8UwCyqRpaDNwE/AVXnfkDEfmGqt6b6+DM2JKLb7F9E0xNWRHjy4o53L/J6pEXd9AaieHPBEligPtm+pPs+58LnkBlSZCiQIB97d14At3xAw3DVu9vhkM2VUPXAm9T1X0AIjIOeAawRGBGhNQEkywhtHRGKQ8HSSgEBYpCAWIJRVXxPCWWSN9ekHqzV/KGtKGcsyDZtRWgMhxCRNzQGKUhd5+DKkdPqrBpJ82wySYR7ANaU163+suMGbRc3/Hat4RQHBSKgyFKi0KEAkI0rnTH41SFg+xrj7K/w/UsQt23/t5dUN2QEJmSQHL0z9ThrAOeO57gjqkpw0qUhDxqy4rwRNjfGWVSVZjSoiC7WiO0dCaoKg3x5YVH8dETpg/Ze2LMQLJJBK8Cz4rIQ7jP87nAiyJyNYCq3pnD+MwYMtBNZUMltYTwtQfX8druNna3ddHeFaOsOMi0mhKOnFjO+h3NhEMee9q6KQp4dEXjPfMTB3AX8FSeQCjgEY0leqqKtGeasAOCnseRE8p4fU8b3XEl4AmVJUGOmlhBY3s3bV0xgp5w6pHjuOJdR7JszXaKgh7TjrShIEx+ZJMIXqN3A/FD/s+KoQ/HjGWHclNZX9mWLJK9lWbXVfTqrZQcgG1SVQnReIKXG1rYsT9l8Du/NJBKBLpjiV5VSm4Ya6UoIMTVDRldGQ7y+p524gqTq0qoKQ1Rv7+ToCfMP7ymJ4Zk1Y9d+E2+ZdNr6JbhCMSMfUMx5DQMrmTRt6ooEo2xfX+ES+97nrLiACVF7pt6OOhR49fR99xv0CcRpLsxOZGAcRUhumOKojS1d1MUDFBb5ur/97R1M7W6hD1tXYQCnvX7NyNONr2GZgH/AsxI3V5V3527sMxYNFTj5CdLFtF4gjVvNNHWFaMo4PGjJ17jR59880CLyW/dv31+K//26D8JhwJUlYaIRBPs2N/JuLIiGtvduP51lWG27OsgFk+AZHcXsgItnTHOmD0BgNVvNFFREkJS6ow6onGm1ZRy36UnDup3NWY4ZDNV5e+AfwA34noQJR/GDMpQjZO/rbGD7licF+ub6YolKCkKkFDl2c2NGae4vOfpzYRDAUqLgnjiUVoUpCIcYl97Nx84bjJvPayS46fV8M63jOfwcWXUlhVREvTc0ND9EP8R9huAf/TJBUSiCapKQsRSMkgoILR0Rm0sIDNiZZMIYqq6RFWfU9XVyUfOIzNjTrKaprasiF3NEWr7zKyVrWm1pWzc1UZR0CMU8Pxv3kLlAFNc7m3tIhzq/ZEPh9wYRalJqqasiFl1FRw9qZK3Tqrg9FkTqCoJpk0I8bj2TCo/rbaUusow3bEE0XgCRemMxgkGPJsYxoxYaROBiNSKSC3wRxH5rIhMSi7zlxszaPOm13Drecdy36Uncut5xx5UPfkF86fQEnGlClXtuegeVVeesb1hfEXxm4aXiEQTjK8oTpukjp1STXEwwEkzx1FbVkzfG5NDAUGEnlFRL5g/hYAnHDmhjKKA0Nrp5j/48sKjrE3AjFiZ2ghW46o/kx/91OogBY7IVVDGZDJveg0nzazllYZWNytZIkHIEzbtauPoSek7sy1+50y+8fDLNHdGUVVEBE/cRTp53P4u1smG6blTKlm5sYtEXPFwN5qFAh7FIY/x5UU9x0g2TocCHqdYl1AzCqRNBKpq97abEeuKdx3JzcvX097tpmwU3KT0O1sirN3a1O+Fd1ZdBZOrS9jhz2dcFBQmV5cwqy598ujb62jm+DKKAx6dsUTPfQkTy4s5cmJ5r33swm9Gk2x6DZ3fz+Jm4CVV3T30IRkzsHnTazisKkxTR5TueILy4iBHT6okFPDS3pewbM12jppYwYxxZWze205bV4yuaCJtb6PUc/UdwmJ6nzmWrf7fjGbZ3FD2aeAU4K/+6zNw1UYz/cHnfp6j2IzJKBJNcPKR4/DkQMV9QjVtO8G2xg5CAeGl7S0UBT1KigJEY4me3kbZfIs/1FFUjRmJskkEQeDo5MTzIlKHm6/4JOBJwBKByYvB3pcwrbaUJzfu6elt5BzobdT3Yp7u7mWr+jFjTTbdR6clk4Bvt7+sEYjmJixjBjbY+xIG09soWQXU2N7d6+7lTPcpGDNaZZMIVorIwyJykYhchBtraKWIlAH7cxueMekN9r6EZG+jgAid0TjFIY+5UyopDgbeVIpIHRfJE6GyJETFAPcpGDNaZVM19DngAuBU//VSYJmqKnBmrgIzJhuDraa54l1H9nQHzTRl5lCNi2TMaJDNoHMK/N5/GDOqZdvYO1TjIhkzGmTTfbSVA+MwFgEhoF1VK3MZmDG5kk0pIjl8NZCx5GDMWDBgG4GqVqhqpX/hL8FVE/0w55EZk0dDNS6SMaNBNm0EPfxqogdF5OvAdbkJyZiRwbqJmkIx2DuLPWABEMlZRMYYY4ZVNiWC/5XyPAZswc1bbIwxZgzIptfQJcMRiDHGmPwYsLFYRKaKyAMistt/LBORqcMRnDHGmNzL5s7inwLLgcn+44/+MmOMMWNANolggqr+VFVj/uM+YEKO4zLGGDNMskkE+0TkEyIS8B+fAPblOjBjjDHDI5tEcCnwUWAn0AB8GLAGZGOMGSMy9hoSkQBwvqouGqZ4jDHGDLOMJQJVjQMXDlMsxhjTY8Pyx3n27I/xwtx38OzZH2PD8sfzHdKYlc0NZX8TkbuB3wDtyYWquiZnURljCtqG5Y/Tdf2NBMsriRw2iWBTI13X38gGYPaihfkOb8zJJhHM839+I2WZAu8e+nCMMQb2L7mHYHklscoqgJ6fnUvuAUsEQy6bO4tt8hljzLAK128lctikXstiFRWE67fmKaKxLZtB54pxQ0/PSN1eVb+Rbh9/v3uBDwK7VfVYf1ktroppBm7Moo+qqk0Ca4zpJTJ1OsGmxp6SAECwtZXI1Ol5jGrsyqb76EO4QeZiuDaC5GMg9wFn9Vl2HfBnVT0K+DM2lLUxph/VVy4m1NZCsKUZNEGwpZlQWwvVVy7Od2hjUjZtBFNVte8FfUCq+qSIzOiz+FzgDP/5z4CVwFcHe2xjzNg2e9FCNuDaBML1W4lMnU759V+xhuIcySYRPCMic1X1pSE4X52qNvjPdwJ16TYUkcuBywGmT7fioDGFZvaihdYwPEzSJgIRWQck/G0uEZHXgS5AcJOVHXcoJ1ZVFRHNsP7HwI8BFixYkHY7Y4wxhyZTiWAKB7qODpVdIjJJVRtEZBKwe4iPb4wxZpAyJYLNqvrGEJ9vOXAR8C3/50NDfHxjsrZh+ePsT6mDrr5ysdVBm4KUKRFMFJGr061U1TszHVhEfoVrGB4vIvXA13EJ4Lci8mngDdxgdsYMO7tz1ZgDMiWCAFCOaxMYNFVNN0bRew7meMYMJbtz1ZgDMiWChoFuGjNmtLI7V405INMNZQdVEjBmNIhMnU6wtbXXMrtz1RSqTInAqnDMmGV3rhpzQNqqIVVtHM5AjBlOdueqMQdkc2exMWOS3blqjJPNoHPGGGPGMEsExhhT4CwRGGNMgbNEYIwxBc4SgTHGFDhLBMYYU+AsERhjTIGzRGCMMQXOEoExxhQ4SwTGGFPgLBEYY0yBs0RgjDEFzhKBMcYUOEsExhhT4CwRGGNMgbNEYIwxBc4SgTHGFDhLBMYYU+AsERhjTIGzRGCMMQXOEoExxhQ4SwTGGFPgLBEYY0yBs0RgjDEFzhKBMcYUOEsExhhT4CwRGGNMgbNEYIwxBc4SgTHGFDhLBMYYU+AsERhjTIGzRGCMMQXOEoExxhQ4SwTGGFPggvk4qYhsAVqBOBBT1QX5iMMYY0yeEoHvTFXdm8fzG2OMwaqGjDGm4OUrESjwmIisFpHL+9tARC4XkVUismrPnj3DHJ4xxhSOfCWCd6rqfOBs4HMicnrfDVT1x6q6QFUXTJgwYfgjNMaYApGXRKCq2/2fu4EHgBPzEYcxxpg8JAIRKRORiuRz4H3AuuGOwxhjjJOPXkN1wAMikjz/L1X1v/MQhzHGGPKQCFT1deD44T6vMcYcrA3LH2f/knsI128lMnU61VcuZvaihfkOa8hY91FjjMlgw/LH6br+RoJNjUQOm0SwqZGu629kw/LH8x3akLFEYIwxGexfcg/R8kpilVUgHrHKKqLllexfck++QxsylgiMMSaDcP1WYhUVvZbFKioI12/NU0RDzxKBMcZkEJk6nWBra69lwdZWIlOn5ymioWeJwBhjMqi+cjGhthaCLc2gCYItzYTaWqi+cnG+Qxsy+Rx0zhhjRrzZixayAehM6TVUfv1XxlSvIUsExhgzgNmLFsIYuvD3ZVVDxhhT4CwRGGNMgbNEYIwxBc4SgTHGFDhLBMYYU+AsERhjTIGzRGCMMQXOEoExxhQ4UdV8xzAgEdkDvJGDQ48H9ubguEPF4jt0Iz1Gi+/QWHyZHa6qA076PioSQa6IyCpVXZDvONKx+A7dSI/R4js0Ft/QsKohY4wpcJYIjDGmwBV6IvhxvgMYgMV36EZ6jBbfobH4hkBBtxEYY4yxEoExxhQ8SwTGGFPgCiIRiMgWEXlJRNaKyKp+1ouIfF9EXhWRF0Vk/jDGNtuPK/loEZEv9dnmDBFpTtnmphzHdK+I7BaRdSnLakVkhYhs8n/WpNn3In+bTSJy0TDG9x0R+af/93tARKrT7Jvxs5DjGG8Wke0pf8dz0ux7lohs8D+P1w1jfL9JiW2LiKxNs2/O30MRmSYifxWRl0VkvYh80V8+Ij6HGeIbUZ/DrKnqmH8AW4DxGdafAzwKCHAy8Gye4gwAO3E3gaQuPwN4eBjjOB2YD6xLWfbvwHX+8+uAb/ezXy3wuv+zxn9eM0zxvQ8I+s+/3V982XwWchzjzcC/ZPEZeA04AigCXgDmDEd8fdbfAdyUr/cQmATM959XABuBOSPlc5ghvhH1Ocz2URAlgiycCyxV5+9AtYhMykMc7wFeU9Vc3EWdNVV9Emjss/hc4Gf+858B5/Wz6/uBFaraqKpNwArgrOGIT1UfU9WY//LvwNShPu9gpHkPs3Ei8Kqqvq6q3cCvce/9kMoUn4gI8FHgV0N93mypaoOqrvGftwKvAFMYIZ/DdPGNtM9htgolESjwmIisFpHL+1k/BdiW8rreXzbcPkb6f75TROQFEXlURI4ZzqB8dara4D/fCdT1s81IeR8vxZXw+jPQZyHXrvKrDe5NU60xEt7D04BdqropzfphfQ9FZAbwNuBZRuDnsE98qUby57CXQpm8/p2qul1EJgIrROSf/jeiEUNEioBFwL/2s3oNrrqoza9XfhA4ajjjS6WqKiIjst+xiNwAxID702ySz8/CEuBW3EXgVlz1y6XDdO7BuJDMpYFhew9FpBxYBnxJVVtcYcUZCZ/DvvGlLB/Jn8M3KYgSgapu93/uBh7AFb9TbQempbye6i8bTmcDa1R1V98Vqtqiqm3+8z8BIREZP8zx7UpWl/k/d/ezTV7fRxG5GPgg8HH1K2L7yuKzkDOquktV46qaAP4rzbnz/R4GgfOB36TbZrjeQxEJ4S6y96vqH/zFI+ZzmCa+Ef857M+YTwQiUiYiFcnnuMacdX02Ww58SpyTgeaU4udwSfstTEQO8+ttEZETcX+3fcMYG7j3KNn74iLgoX62+R/gfSJS41d7vM9flnMichbwFWCRqnak2Sabz0IuY0xtd/pQmnM/DxwlIjP9UuLHcO/9cFkI/FNV6/tbOVzvof95/wnwiqrembJqRHwO08U3Gj6H/cp3a3WuH7jeFy/4j/XADf7yK4Ar/OcC/F9cb42XgAXDHGMZ7sJelbIsNb6r/NhfwDVAvSPH8fwKaACiuPrVTwPjgD8Dm4DHgVp/2wXAPSn7Xgq86j8uGcb4XsXVC6/1Hz/yt50M/CnTZ2EYY/y5//l6EXdBm9Q3Rv/1ObheKK/lKsb+4vOX35f83KVsO+zvIfBOXBXaiyl/03NGyucwQ3wj6nOY7cOGmDDGmAI35quGjDHGZGaJwBhjCpwlAmOMKXCWCIwxpsBZIjDGmAJnicCMeiLSNohtzxCRd+QyngHO/yUR+dQQHOfXIpK3u8vN2GKJwBSaM4C8JAL/rt1LgV8OweGW4G5cMuaQWSIwY5KI/C8ReVZE/iEij4tInT842BXAl/1x4E8TkQkiskxEnvcfp/r73+wPDLdSRF4XkS+kHPtT/sBxL4jIz0WkQkQ2+0MOICKVqa9TvBs3jEjM326liNwlIqtE5BUROUFE/iBuDP3b/G3KROQR/1zrROR/+8d6CljoJxdjDol9iMxY9TRwsqqqiCwGvqKq14jIj4A2Vf0ugIj8ErhLVZ8Wkem4oQiO9o/xVuBM3HjzG0RkCTALuBF3d/deEalV1VYRWQl8ADcg4MeAP6hqtE9MpwKr+yzrVtUF4iY2eQh4O2546NdE5C5cCWaHqn7Aj7cKQFUTIvIqcHw/xzRmUCwRmLFqKvAbf3yfImBzmu0WAnNSRrWs9EeUBHhEVbuALhHZjRvy+N3A71R1L4CqJsf0vwdXVfMgcAlwWT/nmoQbtz5Vchyhl4D16o9xJSKv4wZOewm4Q0S+jZuc6KmUfXfjhi6wRGAOiVUNmbHqB8DdqjoX+AwQTrOdhys5zPMfU9Qf6RXoStkuToYvTqr6N2CGiJwBBFS1v0HEOvuJI3mORJ/zJXAzXW3EzST2EnCb9J6mNOwf05hDYonAjFVVHBh6OHXO2lZcVU/SY8Dnky9EZN4Ax/0L8BERGedvX5uybimuIfinafZ9BXjLgJGnEJHJQIeq/gL4Di4pJM0i36NWmjHBEoEZC0pFpD7lcTVufuDfichqYG/Ktn8EPpRsLAa+ACzwG39fxjUmp6Wq64FvAk+IyAtA6hDJ9+PmyE03qcujuLmCB2Mu8Jy4ieS/DiQbkeuATlXdOcjjGfMmNvqoMUNERD4MnKuqn8ywzQO4hut000Bme64vAy2q+pNDOY4xYI3FxgwJEfkBbpa5cwbY9Dpco/EhJQJgP25+A2MOmZUIjDGmwFkbgTHGFDhLBMYYU+AsERhjTIGzRGCMMQXOEoExxhS4/w/VL6PaBFPhtAAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Find indices of data examples with probabilities less than the best epsilon.\n", "outliers_indices = np.where(probabilities < epsilon)[0]\n", "\n", "# Plot original data.\n", "plt.scatter(data[:, 0], data[:, 1], alpha=0.6, label='Dataset')\n", "plt.xlabel('Latency (ms)')\n", "plt.ylabel('Throughput (mb/s)')\n", "plt.title('Server Operational Params')\n", "\n", "# Plot the outliers.\n", "plt.scatter(data[outliers_indices, 0], data[outliers_indices, 1], alpha=0.6, c='red', label='Outliers')\n", "\n", "# Display plots.\n", "plt.legend()\n", "plt.plot()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.0" } }, "nbformat": 4, "nbformat_minor": 2 } ================================================ FILE: notebooks/k_means/k_means_demo.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# K-Means Algorithm Demo\n", "\n", "_Source: 🤖[Homemade Machine Learning](https://github.com/trekhleb/homemade-machine-learning) repository_\n", "\n", "> ☝Before moving on with this demo you might want to take a look at:\n", "> - 📗[Math behind the K-Means Algorithm](https://github.com/trekhleb/homemade-machine-learning/tree/master/homemade/k_means)\n", "> - ⚙️[K-Means Algorithm Source Code](https://github.com/trekhleb/homemade-machine-learning/blob/master/homemade/k_means/k_means.py)\n", "\n", "**K-means clustering** aims to partition _n_ observations into _K_ clusters in which each observation belongs to the cluster with the nearest mean, serving as a prototype of the cluster.\n", "\n", "> **Demo Project:** In this example we will try to cluster Iris flowers into tree categories that we don't know in advance based on `petal_length` and `petal_width` parameters using K-Means unsupervised learning algorithm." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# To make debugging of logistic_regression module easier we enable imported modules autoreloading feature.\n", "# By doing this you may change the code of logistic_regression library and all these changes will be available here.\n", "%load_ext autoreload\n", "%autoreload 2\n", "\n", "# Add project root folder to module loading paths.\n", "import sys\n", "sys.path.append('../..')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Import Dependencies\n", "\n", "- [pandas](https://pandas.pydata.org/) - library that we will use for loading and displaying the data in a table\n", "- [numpy](http://www.numpy.org/) - library that we will use for linear algebra operations\n", "- [matplotlib](https://matplotlib.org/) - library that we will use for plotting the data\n", "- [k_means](https://github.com/trekhleb/homemade-machine-learning/blob/master/homemade/k_means/k_means.py) - custom implementation of K-Means algorithm" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# Import 3rd party dependencies.\n", "import numpy as np\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "\n", "# Import custom k-means implementation.\n", "from homemade.k_means import KMeans" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Load the Data\n", "\n", "In this demo we will use [Iris data set](http://archive.ics.uci.edu/ml/datasets/Iris).\n", "\n", "The data set consists of several samples from each of three species of Iris (`Iris setosa`, `Iris virginica` and `Iris versicolor`). Four features were measured from each sample: the length and the width of the sepals and petals, in centimeters. Based on the combination of these four features, [Ronald Fisher](https://en.wikipedia.org/wiki/Iris_flower_data_set) developed a linear discriminant model to distinguish the species from each other." ] }, { "cell_type": "code", "execution_count": 3, "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", "
sepal_lengthsepal_widthpetal_lengthpetal_widthclass
05.13.51.40.2SETOSA
14.93.01.40.2SETOSA
24.73.21.30.2SETOSA
34.63.11.50.2SETOSA
45.03.61.40.2SETOSA
55.43.91.70.4SETOSA
64.63.41.40.3SETOSA
75.03.41.50.2SETOSA
84.42.91.40.2SETOSA
94.93.11.50.1SETOSA
\n", "
" ], "text/plain": [ " sepal_length sepal_width petal_length petal_width class\n", "0 5.1 3.5 1.4 0.2 SETOSA\n", "1 4.9 3.0 1.4 0.2 SETOSA\n", "2 4.7 3.2 1.3 0.2 SETOSA\n", "3 4.6 3.1 1.5 0.2 SETOSA\n", "4 5.0 3.6 1.4 0.2 SETOSA\n", "5 5.4 3.9 1.7 0.4 SETOSA\n", "6 4.6 3.4 1.4 0.3 SETOSA\n", "7 5.0 3.4 1.5 0.2 SETOSA\n", "8 4.4 2.9 1.4 0.2 SETOSA\n", "9 4.9 3.1 1.5 0.1 SETOSA" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Load the data.\n", "data = pd.read_csv('../../data/iris.csv')\n", "\n", "# Print the data table.\n", "data.head(10)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Plot the Data\n", "\n", "Let's take two parameters `petal_length` and `petal_width` for each flower into consideration and plot the dependency of the Iris class on these two parameters.\n", "\n", "Since we have an advantage of knowing the actual flower labels (classes) let's illustrate the real-world classification on the plot. But K-Means algorithm is an example of unsuervised learning algorithm which means that this algorithm doesn't need to know about labels. Thus below in this demo we will try to split Iris flowers into unknown clusters and compare the result of such split with the actual flower classification." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# List of suppported Iris classes.\n", "iris_types = ['SETOSA', 'VERSICOLOR', 'VIRGINICA']\n", "\n", "# Pick the Iris parameters for consideration.\n", "x_axis = 'petal_length'\n", "y_axis = 'petal_width'\n", "\n", "# Make the plot a little bit bigger than default one.\n", "plt.figure(figsize=(12, 5))\n", "\n", "# Plot the scatter for every type of Iris.\n", "# This is the case when we know flower labels in advance.\n", "plt.subplot(1, 2, 1)\n", "for iris_type in iris_types:\n", " plt.scatter(\n", " data[x_axis][data['class'] == iris_type],\n", " data[y_axis][data['class'] == iris_type],\n", " label=iris_type\n", " )\n", " \n", "plt.xlabel(x_axis + ' (cm)')\n", "plt.ylabel(y_axis + ' (cm)')\n", "plt.title('Iris Types (labels are known)')\n", "plt.legend()\n", "\n", "# Plot non-classified scatter of Iris flowers.\n", "# This is the case when we don't know flower labels in advance.\n", "# This is how K-Means sees the dataset.\n", "plt.subplot(1, 2, 2)\n", "plt.scatter(\n", " data[x_axis][:],\n", " data[y_axis][:],\n", ")\n", "plt.xlabel(x_axis + ' (cm)')\n", "plt.ylabel(y_axis + ' (cm)')\n", "plt.title('Iris Types (labels are NOT known)')\n", "\n", "# Plot all subplots.\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Prepara the Data for Training\n", "\n", "Let's extract `petal_length` and `petal_width` data and form a training feature set." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "# Get total number of Iris examples.\n", "num_examples = data.shape[0]\n", "\n", "# Get features.\n", "x_train = data[[x_axis, y_axis]].values.reshape((num_examples, 2))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Init and Train Logistic Regression Model\n", "\n", "> ☝🏻This is the place where you might want to play with model configuration.\n", "\n", "- `num_clusters` - number of clusters into which we want to split our training dataset.\n", "- `max_iterations` - maximum number of training iterations." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "# Set K-Means parameters.\n", "num_clusters = 3 # Number of clusters into which we want to split our training dataset.\n", "max_iterations = 50 # maximum number of training iterations.\n", "\n", "# Init K-Means instance.\n", "k_means = KMeans(x_train, num_clusters)\n", "\n", "# Train K-Means instance.\n", "(centroids, closest_centroids_ids) = k_means.train(max_iterations)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Plot the Clustering Results\n", "\n", "Now let's plot the original Iris flow classification along with our unsupervised K-Means clusters to see how the algorithm performed." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "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eXk5ixcvZvfu3VG8axGRzOSc44ILLqCgoICPPvqIZcuWMWXKFD7//POYxp05cyZbt26t1zk1Vab98MMP6dq1K845tm7dStu2bQGvCu8f//hH1qxZw7vvvssDDzzAmjVrYopbRGLXaCfVCzYsYNDcQfR+vDeD5g5iwYYFMY138cUXs2DBAvbt2wd4JcO3bt1Khw4dIvZv3rw5eXl5bNmyBYC77rqLX//61yEf051//vmcccYZEc+fOHEid955Z60x3X333dx6662cdNJJAGRlZXHddddVHa+shjho0CDmzZvn/82KiCRZvHP2woULyc7OZsyYMVVtubm59O/fP6TfzJkzufHGG6teDxkyhEWLFlFeXs7IkSPp2bMnvXr1Ytq0acydO5eioiIuv/xy8vLy2Lt3L8uWLWPAgAH07duXc845h7KyMgAKCgq4+eabyc/PZ/r00G0Z9+7dS15eHgMHDmTRokV0796d9evXk5eXR0lJCW3btq2q7Hj44YfTvXv3qt8lInV5fvkWTv/D63T+1QJO/8PrPL+8+n87fvqkg3SLs1GWKQ8v4lC2u4zCdwoBol632apVK0455RRefPFFhg4dyuzZs7n00ksjlvgG+Pe//8369eurJs2rV6/m5z//ue/rnXrqqTz33HMsXLiQww8/PGKfVatWMWHChBrHmDNnDq+++irvv/8+999/Pz/96U99X18kk9dGh8uUOBurROTsVatW0bdv36hjKikpYcuWLaxatQqAnTt30rJlS2bMmME999xDfn4++/fvZ+zYscybN482bdowZ84cbr31Vh599FEA9u3bR/hac/BuupSUlHDDDTcwevRoVq1axa5du7jhhhuq9d24cSPLly/nBz/4QdTvRRqP8AqDW3buZdKzpQA1VkaM1CcdpGOcjfJOdaKKOAQvAZk9ezYjRoyo1mfx4sXk5ubSrl07zjnnHI45pvp2XNu3bycvL48TTzyRe+65p8br3XbbbUyePDmqWIuKimjdujUdO3bkrLPOYvny5ezYsSOqsaTxqZzklO0uw+GqJjnBdw/99EkHmRJnY5aOhXeOP/54NmzYwNixY3nppZc44ogjqvVZt24dq1at4uyzzyYvL4/JkyezefPmquPDhw+v9RqlpaXk5OSwcuVKcnNzqx3ftWsXF110Effee2/E64uEm/ryumrlz/fuL2fqy+vq1ScdpGOcjXJSnagiDkOHDuW1116juLiYPXv2RLwL0r9/f1asWMHq1av5y1/+QklJCQA5OTkUFxcDcPTRR1NSUsK1117Lrl27arzewIED2bt3L++++27E4zk5OSxbtizisVmzZvH+++/TqVMnunTpwtdff80zzzxT37csjVQmV0YMlylxNmaJyNm15cdgTZs2paKiour1t996/60cddRRrFixgoKCAh588EGuueaaauc658jJyaGkpISSkhJKS0t55ZVXqo4fdthhEa95xx13kJubS3FxMf369ePhhx/muuuuY+LEiVV99u/fz0UXXcTll1/OhRde6Pt9S+OWqZURI0nHOBvlpDpRRRxatGjBmWeeyejRoyPepQ7WuXNnfvWrX3HXXXcB8Itf/II777yTtWvXVvXZs2dPnde87bbbuPvuuyMemzhxIr///e/54IMPAKioqODBBx+koqKCp556itLSUjZu3MjGjRuZN28es2bN8vtWpZHL5MqI4TIlzsYsETl74MCBfPfddzz00ENVbStXrmTx4sUh/Tp16kRJSQkVFRVs2rSJ9957D4Bt27ZRUVHBRRddxOTJk6tuihx++OF88803AHTr1o0vv/ySJUuWAN5EePXq1XXGdvvtt/PII48watQoli5dSm5uLqWlpUydOhXwJutXX3013bt355Zbbon6ayCNT6ZWRowkHeNslJPqRBZxGDFiBCtWrKhzUg0wZswY3nzzTTZu3EivXr2YPn06V155Jd26deP0009n7dq1da5zPvfcc2nTpk3EY7179+bee+9lxIgRdO/enZ49e7JhwwYWL15Mu3btOPbYY6v6nnHGGaxZs6bqIRqR2mRyZcRwmRJnY5aInG1mPPfcc/zzn/+kS5cu5OTkMGnSpGpL8k4//XQ6d+5Mjx49uOmmm6oeENyyZQsFBQXk5eVxxRVXMGXKFABGjhzJmDFjyMvLo7y8nLlz5/LLX/6S3Nxc8vLyeOedd3zF98Ybb9C/f3/ee+89+vXrF3Ls7bff5q9//Suvv/46eXl55OXl8cILL0T9tZDGI1MrI0aSjnE22uIvejApsVRwoGELf3AMvElO4WmFVT9Hfvqkg2THqeIvHuXs5FAulnDPL9/C1JfXsXXnXo5t2ZyJ53Sr9mCfnz7pIFlx+s3bjXL3D/CeGFdCFolO5c9ObZMcP33SQabE2dgp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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# List of suppported Iris classes.\n", "iris_types = ['SETOSA', 'VERSICOLOR', 'VIRGINICA']\n", "\n", "# Pick the Iris parameters for consideration.\n", "x_axis = 'petal_length'\n", "y_axis = 'petal_width'\n", "\n", "# Make the plot a little bit bigger than default one.\n", "plt.figure(figsize=(12, 5))\n", "\n", "# Plot ACTUAL Iris flower classification.\n", "plt.subplot(1, 2, 1)\n", "for iris_type in iris_types:\n", " plt.scatter(\n", " data[x_axis][data['class'] == iris_type],\n", " data[y_axis][data['class'] == iris_type],\n", " label=iris_type\n", " )\n", "\n", "plt.xlabel(x_axis + ' (cm)')\n", "plt.ylabel(y_axis + ' (cm)')\n", "plt.title('Iris Real-World Clusters')\n", "plt.legend()\n", "\n", "# Plot UNSUPERWISED Iris flower classification.\n", "plt.subplot(1, 2, 2)\n", "for centroid_id, centroid in enumerate(centroids):\n", " current_examples_indices = (closest_centroids_ids == centroid_id).flatten()\n", " plt.scatter(\n", " data[x_axis][current_examples_indices],\n", " data[y_axis][current_examples_indices],\n", " label='Cluster #' + str(centroid_id)\n", " )\n", "\n", "# Plot clusters centroids.\n", "for centroid_id, centroid in enumerate(centroids):\n", " plt.scatter(centroid[0], centroid[1], c='black', marker='x')\n", " \n", "plt.xlabel(x_axis + ' (cm)')\n", "plt.ylabel(y_axis + ' (cm)')\n", "plt.title('Iris K-Means Clusters')\n", "plt.legend()\n", "\n", "# Show all subplots.\n", "plt.show()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.0" } }, "nbformat": 4, "nbformat_minor": 2 } ================================================ FILE: notebooks/linear_regression/multivariate_linear_regression_demo.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Multivariate Linear Regression Demo\n", "\n", "_Source: 🤖[Homemade Machine Learning](https://github.com/trekhleb/homemade-machine-learning) repository_\n", "\n", "> ☝Before moving on with this demo you might want to take a look at:\n", "> - 📗[Math behind the Linear Regression](https://github.com/trekhleb/homemade-machine-learning/tree/master/homemade/linear_regression)\n", "> - ⚙️[Linear Regression Source Code](https://github.com/trekhleb/homemade-machine-learning/blob/master/homemade/linear_regression/linear_regression.py)\n", "\n", "**Linear regression** is a linear model, e.g. a model that assumes a linear relationship between the input variables `(x)` and the single output variable `(y)`. More specifically, that output variable `(y)` can be calculated from a linear combination of the input variables `(x)`.\n", "\n", "**Multivariate Linear Regression** is a linear regression that has _more than one_ input parameter and one output label.\n", "\n", "> **Demo Project:** In this demo we will build a model that will predict `Happiness.Score` for the countries based on `Economy.GDP.per.Capita` and `Freedom` parameters." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# To make debugging of linear_regression module easier we enable imported modules autoreloading feature.\n", "# By doing this you may change the code of linear_regression library and all these changes will be available here.\n", "%load_ext autoreload\n", "%autoreload 2\n", "\n", "# Add project root folder to module loading paths.\n", "import sys\n", "sys.path.append('../..')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Import Dependencies\n", "\n", "- [pandas](https://pandas.pydata.org/) - library that we will use for loading and displaying the data in a table\n", "- [numpy](http://www.numpy.org/) - library that we will use for linear algebra operations\n", "- [matplotlib](https://matplotlib.org/) - library that we will use for plotting the data\n", "- [plotly](https://plot.ly/python/) - library that we will use for plotting interactive 3D scatters\n", "- [linear_regression](https://github.com/trekhleb/homemade-machine-learning/blob/master/src/linear_regression/linear_regression.py) - custom implementation of linear regression" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/vnd.plotly.v1+html": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Import 3rd party dependencies.\n", "import numpy as np\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "import plotly\n", "import plotly.graph_objs as go\n", "\n", "# Configure Plotly to be rendered inline in the notebook.\n", "plotly.offline.init_notebook_mode()\n", "\n", "# Import custom linear regression implementation.\n", "from homemade.linear_regression import LinearRegression" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Load the Data\n", "\n", "In this demo we will use [World Happindes Dataset](https://www.kaggle.com/unsdsn/world-happiness#2017.csv) for 2017." ] }, { "cell_type": "code", "execution_count": 3, "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", "
CountryHappiness.RankHappiness.ScoreWhisker.highWhisker.lowEconomy..GDP.per.Capita.FamilyHealth..Life.Expectancy.FreedomGenerosityTrust..Government.Corruption.Dystopia.Residual
0Norway17.5377.5944457.4795561.6164631.5335240.7966670.6354230.3620120.3159642.277027
1Denmark27.5227.5817287.4622721.4823831.5511220.7925660.6260070.3552800.4007702.313707
2Iceland37.5047.6220307.3859701.4806331.6105740.8335520.6271630.4755400.1535272.322715
3Switzerland47.4947.5617727.4262271.5649801.5169120.8581310.6200710.2905490.3670072.276716
4Finland57.4697.5275427.4104581.4435721.5402470.8091580.6179510.2454830.3826122.430182
5Netherlands67.3777.4274267.3265741.5039451.4289390.8106960.5853840.4704900.2826622.294804
6Canada77.3167.3844037.2475971.4792041.4813490.8345580.6111010.4355400.2873722.187264
7New Zealand87.3147.3795107.2484901.4057061.5481950.8167600.6140620.5000050.3828172.046456
8Sweden97.2847.3440957.2239051.4943871.4781620.8308750.6129240.3853990.3843992.097538
9Australia107.2847.3566517.2113491.4844151.5100420.8438870.6016070.4776990.3011842.065211
\n", "
" ], "text/plain": [ " Country Happiness.Rank Happiness.Score Whisker.high Whisker.low \\\n", "0 Norway 1 7.537 7.594445 7.479556 \n", "1 Denmark 2 7.522 7.581728 7.462272 \n", "2 Iceland 3 7.504 7.622030 7.385970 \n", "3 Switzerland 4 7.494 7.561772 7.426227 \n", "4 Finland 5 7.469 7.527542 7.410458 \n", "5 Netherlands 6 7.377 7.427426 7.326574 \n", "6 Canada 7 7.316 7.384403 7.247597 \n", "7 New Zealand 8 7.314 7.379510 7.248490 \n", "8 Sweden 9 7.284 7.344095 7.223905 \n", "9 Australia 10 7.284 7.356651 7.211349 \n", "\n", " Economy..GDP.per.Capita. Family Health..Life.Expectancy. Freedom \\\n", "0 1.616463 1.533524 0.796667 0.635423 \n", "1 1.482383 1.551122 0.792566 0.626007 \n", "2 1.480633 1.610574 0.833552 0.627163 \n", "3 1.564980 1.516912 0.858131 0.620071 \n", "4 1.443572 1.540247 0.809158 0.617951 \n", "5 1.503945 1.428939 0.810696 0.585384 \n", "6 1.479204 1.481349 0.834558 0.611101 \n", "7 1.405706 1.548195 0.816760 0.614062 \n", "8 1.494387 1.478162 0.830875 0.612924 \n", "9 1.484415 1.510042 0.843887 0.601607 \n", "\n", " Generosity Trust..Government.Corruption. Dystopia.Residual \n", "0 0.362012 0.315964 2.277027 \n", "1 0.355280 0.400770 2.313707 \n", "2 0.475540 0.153527 2.322715 \n", "3 0.290549 0.367007 2.276716 \n", "4 0.245483 0.382612 2.430182 \n", "5 0.470490 0.282662 2.294804 \n", "6 0.435540 0.287372 2.187264 \n", "7 0.500005 0.382817 2.046456 \n", "8 0.385399 0.384399 2.097538 \n", "9 0.477699 0.301184 2.065211 " ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Load the data.\n", "data = pd.read_csv('../../data/world-happiness-report-2017.csv')\n", "\n", "# Print the data table.\n", "data.head(10)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Print histograms for each feature to see how they vary.\n", "histohrams = data.hist(grid=False, figsize=(10, 10))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Split the Data Into Training and Test Sets\n", "\n", "In this step we will split our dataset into _training_ and _testing_ subsets (in proportion 80/20%).\n", "\n", "Training data set will be used for training of our linear model. Testing dataset will be used for validating of the model. All data from testing dataset will be new to model and we may check how accurate are model predictions." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "# Split data set on training and test sets with proportions 80/20.\n", "# Function sample() returns a random sample of items.\n", "train_data = data.sample(frac=0.8)\n", "test_data = data.drop(train_data.index)\n", "\n", "# Decide what fields we want to process.\n", "input_param_name_1 = 'Economy..GDP.per.Capita.'\n", "input_param_name_2 = 'Freedom'\n", "output_param_name = 'Happiness.Score'\n", "\n", "# Split training set input and output.\n", "x_train = train_data[[input_param_name_1, input_param_name_2]].values\n", "y_train = train_data[[output_param_name]].values\n", "\n", "# Split test set input and output.\n", "x_test = test_data[[input_param_name_1, input_param_name_2]].values\n", "y_test = test_data[[output_param_name]].values" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's visualize the training and test datasets to see the shape of the data." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "data": [ { "marker": { "line": { "color": "rgb(255, 255, 255)", "width": 1 }, "opacity": 1, "size": 10 }, "mode": "markers", "name": "Training Set", "type": "scatter3d", "uid": "b2ccc8e3-f5b5-4efb-af5c-e982a479b71b", "x": [ 1.1027104854583702, 1.3208793401718102, 0.7922212481498722, 0.39724862575531, 0.9097844958305359, 1.1893955469131499, 0.401477217674255, 1.06457793712616, 0.479820191860199, 0.368745893239975, 1.00985014438629, 0.381430715322495, 1.07062232494354, 1.12786877155304, 0.6364067792892459, 0.564305365085602, 0.932537317276001, 1.28948748111725, 1.29178786277771, 1.00726580619812, 0.8584281802177429, 0.30544471740722695, 1.1018030643463101, 1.63295245170593, 0.7288706302642819, 1.49438726902008, 1.8707656860351598, 1.3469113111496, 0, 1.05469870567322, 0.951484382152557, 0.5916834473609921, 0.982409417629242, 1.15687310695648, 1.4637807607650801, 1.48238301277161, 1.69227766990662, 0.43108540773391707, 1.3753824234008798, 0.0921023488044739, 1.12112903594971, 0.786441087722778, 1.00082039833069, 0.24454993009567302, 0.36711055040359497, 0.511135876178741, 1.41691517829895, 1.4870972633361799, 1.1531838178634601, 0.7268835306167599, 1.1073532104492199, 0.11904179304838199, 1.2860119342803997, 1.15655755996704, 0.716249227523804, 1.22255623340607, 0.667224824428558, 0.368610262870789, 1.0352252721786501, 0.995538592338562, 1.74194359779358, 1.6263433694839498, 1.12209415435791, 0.6595166921615601, 1.5649795532226598, 1.4844149351120002, 0.925579309463501, 1.2175596952438401, 1.36135590076447, 1.23374843597412, 1.12843120098114, 1.28177809715271, 1.29121541976929, 1.07498753070831, 0.85769921541214, 1.480633020401, 1.1536017656326298, 0.6484572887420649, 0.89465194940567, 0.872001945972443, 0.950612664222717, 1.43092346191406, 1.1614590883255, 1.10970628261566, 1.21768391132355, 0.8089642524719242, 0.9910123944282528, 0.305808693170547, 1.3412059545516999, 0.37584653496742204, 0.339233845472336, 1.40570604801178, 1.0272358655929599, 0.900596737861633, 1.1982743740081798, 1.40167844295502, 1.3559380769729599, 0.560479462146759, 1.07937383651733, 1.48792338371277, 1.3145823478698702, 0.996192753314972, 1.3950666189193701, 0.964434325695038, 1.25278460979462, 1.55167484283447, 1.50394463539124, 1.44163393974304, 1.18529546260834, 1.54625928401947, 1.5357066392898602, 1.1307767629623402, 0.6017650961875921, 0.524713635444641, 0.7885475754737851, 0.0226431842893362, 1.44357192516327, 1.53062355518341, 0.730573117733002, 1.1982102394104, 0.737299203872681, 1.08116579055786, 1.2845562696456898, 0.233442038297653 ], "y": [ 0.288555532693863, 0.479131430387497, 0.469987004995346, 0.147062435746193, 0.432452529668808, 0.491247326135635, 0.106179520487785, 0.325905978679657, 0.44030594825744607, 0.5818438529968261, 0.561213254928589, 0.443185955286026, 0.47748741507530196, 0.580200731754303, 0.461603492498398, 0.430388748645782, 0.473507791757584, 0.0957312509417534, 0.520342111587524, 0.289680689573288, 0, 0.38042613863945, 0.465733230113983, 0.49633759260177596, 0.24072904884815197, 0.612924098968506, 0.604130983352661, 0.47120362520217896, 0.270842045545578, 0.479246735572815, 0.260287940502167, 0.24946372210979503, 0.204403176903725, 0.24932260811328896, 0.5397707223892211, 0.626006722450256, 0.549840569496155, 0.42596277594566295, 0.40598860383033797, 0.235961347818375, 0.194989055395126, 0.6582486629486078, 0.4551981985569, 0.348587512969971, 0.514492034912109, 0.390017777681351, 0.505625545978546, 0.567766189575195, 0.412730008363724, 0.23521526157856, 0.437453746795654, 0.33288118243217496, 0.17586351931095098, 0.295400261878967, 0.25471106171608, 0.255772292613983, 0.423026293516159, 0.0303698573261499, 0.45000287890434293, 0.443323463201523, 0.59662789106369, 0.60834527015686, 0.505196332931519, 0.0149958552792668, 0.620070576667786, 0.601607382297516, 0.474307239055634, 0.5793922543525699, 0.518630743026733, 0.550026834011078, 0.15399712324142498, 0.373783111572266, 0.40226498246192893, 0.28851598501205394, 0.585214674472809, 0.6271626353263849, 0.39815583825111406, 0.0960980430245399, 0.12297477573156401, 0.5313106179237371, 0.309410035610199, 0.470222115516663, 0.28923171758651695, 0.580131649971008, 0.457003742456436, 0.4350258708000179, 0.418421149253845, 0.18919676542282102, 0.572575807571411, 0.336384207010269, 0.408842742443085, 0.6140621304512021, 0.39414396882057207, 0.198303267359734, 0.300740599632263, 0.257921665906906, 0.35511153936386103, 0.45276376605033897, 0.55258983373642, 0.562511384487152, 0.234231784939766, 0.381498634815216, 0.256450712680817, 0.520303547382355, 0.376895278692245, 0.490968644618988, 0.5853844881057739, 0.508190035820007, 0.49451920390129106, 0.505740523338318, 0.5731103420257571, 0.41827192902565, 0.633375823497772, 0.47156670689582797, 0.571055591106415, 0.602126955986023, 0.6179508566856379, 0.449750572443008, 0.348079860210419, 0.31232857704162603, 0.447551846504211, 0.47278770804405196, 0.43745428323745705, 0.466914653778076 ], "z": [ 4.49700021743774, 5.61100006103516, 4.31500005722046, 3.5910000801086404, 6.002999782562259, 5.62900018692017, 3.7939999103546103, 5.175000190734861, 4.961999893188481, 3.47099995613098, 4.44000005722046, 4.08099985122681, 6.35699987411499, 6.4239997863769505, 4.513999938964839, 4.69500017166138, 5.493000030517581, 5.2270002365112305, 5.97300004959106, 4.80499982833862, 3.79500007629395, 3.4949998855590803, 5.525000095367429, 6.10500001907349, 5.837999820709231, 7.28399991989136, 6.375, 5.80999994277954, 2.69300007820129, 4.8289999961853, 5.27899980545044, 3.59299993515015, 5.18200016021729, 4.69199991226196, 6.89099979400635, 7.52199983596802, 6.57200002670288, 3.65700006484985, 7.212999820709231, 4.2800002098083505, 5.23699998855591, 5.97100019454956, 6.00799989700317, 3.50699996948242, 4.54500007629395, 3.34899997711182, 5.92000007629395, 7.00600004196167, 6.57800006866455, 5.26900005340576, 6.6350002288818395, 3.5329999923706095, 5.32399988174438, 5.5689997673034695, 4.77500009536743, 5.2930002212524405, 4.11999988555908, 3.6029999256133998, 5.71500015258789, 5.26200008392334, 6.86299991607666, 6.6479997634887695, 3.7660000324249303, 4.138999938964839, 7.49399995803833, 7.28399991989136, 5.31099987030029, 6.4539999961853, 6.1680002212524405, 6.4520001411438, 5.25, 5.962999820709231, 6.08400011062622, 5.22499990463257, 5.42999982833862, 7.50400018692017, 5.234000205993651, 4.29199981689453, 4.09600019454956, 6.4539999961853, 4.28599977493286, 6.44199991226196, 4.71400022506714, 7.0789999961853, 5.824999809265139, 4.29099988937378, 5.33599996566772, 3.64400005340576, 5.75799989700317, 3.875, 4.46000003814697, 7.31400012969971, 4.95499992370605, 4.37599992752075, 5.5, 5.837999820709231, 5.62099981307983, 4.55299997329712, 5.230000019073491, 6.9510002136230495, 5.90199995040894, 4.64400005340576, 5.96400022506714, 4.57399988174438, 6.65199995040894, 5.47200012207031, 7.3769998550415, 6.71400022506714, 6.59899997711182, 6.993000030517581, 6.9770002365112305, 5.82200002670288, 4.1680002212524405, 5.04099988937378, 5.07399988174438, 5.151000022888179, 7.468999862670901, 6.343999862670901, 5.1810002326965305, 4.46500015258789, 6.07100009918213, 5.2729997634887695, 5.8189997673034695, 3.97000002861023 ] }, { "marker": { "line": { "color": "rgb(255, 255, 255)", "width": 1 }, "opacity": 1, "size": 10 }, "mode": "markers", "name": "Test Set", "type": "scatter3d", "uid": "297d492d-6698-40a5-843b-cf6b403a4442", "x": [ 1.6164631843566901, 1.47920441627502, 1.35268235206604, 1.34327983856201, 1.4336265325546298, 1.38439786434174, 1.32539355754852, 1.4884122610092199, 0.907975316047668, 1.09186446666718, 1.26074862480164, 0.833756566047668, 1.06931757926941, 0.8781145811080929, 1.3151752948761002, 0.783756256103516, 0.885416388511658, 0.5962200760841371, 0.989701807498932, 0.36842092871666, 0.586682975292206, 0.23430564999580397, 0.479309022426605, 0.476180493831635, 0.6030489206314089, 0.35022771358490007, 0.16192533075809498, 0.43801298737525896, 0.521021246910095, 0.777153134346008, 0.09162256866693501 ], "y": [ 0.635422587394714, 0.611100912094116, 0.49094617366790794, 0.588767051696777, 0.361466586589813, 0.408781230449677, 0.295817464590073, 0.536746919155121, 0.5475093722343439, 0.233335807919502, 0.32570791244506797, 0.5587329268455511, 0.20871552824974102, 0.408158332109451, 0.498465299606323, 0.394952565431595, 0.5015376806259161, 0.454943388700485, 0.28211015462875394, 0.318697690963745, 0.478356659412384, 0.48079109191894503, 0.37792226672172496, 0.306613743305206, 0.4477061927318571, 0.32436785101890603, 0.36365869641304, 0.16234202682972002, 0.390661299228668, 0.0815394446253777, 0.0599007532000542 ], "z": [ 7.537000179290769, 7.31599998474121, 6.60900020599365, 6.52699995040894, 6.42199993133545, 6.40299987792969, 6.09800004959106, 6.08699989318848, 5.955999851226809, 5.872000217437741, 5.849999904632571, 5.82299995422363, 5.39499998092651, 5.2350001335144, 5.19500017166138, 5.07399988174438, 5.01100015640259, 5.0040001869201705, 4.7350001335144, 4.70900011062622, 4.60799980163574, 4.550000190734861, 4.53499984741211, 4.19000005722046, 4.17999982833862, 4.03200006484985, 4.02799987792969, 3.9360001087188703, 3.80800008773804, 3.46199989318848, 2.90499997138977 ] } ], "layout": { "margin": { "b": 0, "l": 0, "r": 0, "t": 0 }, "scene": { "xaxis": { "title": "Economy..GDP.per.Capita." }, "yaxis": { "title": "Freedom" }, "zaxis": { "title": "Happiness.Score" } }, "title": "Date Sets" } }, "text/html": [ "
" ], "text/vnd.plotly.v1+html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Configure the plot with training dataset.\n", "plot_training_trace = go.Scatter3d(\n", " x=x_train[:, 0].flatten(),\n", " y=x_train[:, 1].flatten(),\n", " z=y_train.flatten(),\n", " name='Training Set',\n", " mode='markers',\n", " marker={\n", " 'size': 10,\n", " 'opacity': 1,\n", " 'line': {\n", " 'color': 'rgb(255, 255, 255)',\n", " 'width': 1\n", " },\n", " }\n", ")\n", "\n", "# Configure the plot with test dataset.\n", "plot_test_trace = go.Scatter3d(\n", " x=x_test[:, 0].flatten(),\n", " y=x_test[:, 1].flatten(),\n", " z=y_test.flatten(),\n", " name='Test Set',\n", " mode='markers',\n", " marker={\n", " 'size': 10,\n", " 'opacity': 1,\n", " 'line': {\n", " 'color': 'rgb(255, 255, 255)',\n", " 'width': 1\n", " },\n", " }\n", ")\n", "\n", "# Configure the layout.\n", "plot_layout = go.Layout(\n", " title='Date Sets',\n", " scene={\n", " 'xaxis': {'title': input_param_name_1},\n", " 'yaxis': {'title': input_param_name_2},\n", " 'zaxis': {'title': output_param_name} \n", " },\n", " margin={'l': 0, 'r': 0, 'b': 0, 't': 0}\n", ")\n", "\n", "plot_data = [plot_training_trace, plot_test_trace]\n", "\n", "plot_figure = go.Figure(data=plot_data, layout=plot_layout)\n", "\n", "# Render 3D scatter plot.\n", "plotly.offline.iplot(plot_figure)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Init and Train Linear Regression Model\n", "\n", "> ☝🏻This is the place where you might want to play with model configuration.\n", "\n", "- `polynomial_degree` - this parameter will allow you to add additional polynomial features of certain degree. More features - more curved the line will be.\n", "- `num_iterations` - this is the number of iterations that gradient descent algorithm will use to find the minimum of a cost function. Low numbers may prevent gradient descent from reaching the minimum. High numbers will make the algorithm work longer without improving its accuracy.\n", "- `learning_rate` - this is the size of the gradient descent step. Small learning step will make algorithm work longer and will probably require more iterations to reach the minimum of the cost function. Big learning steps may couse missing the minimum and growth of the cost function value with new iterations.\n", "- `regularization_param` - parameter that will fight overfitting. The higher the parameter, the simplier is the model will be.\n", "- `polynomial_degree` - the degree of additional polynomial features (`x1^2 * x2, x1^2 * x2^2, ...`). This will allow you to curve the predictions.\n", "- `sinusoid_degree` - the degree of sinusoid parameter multipliers of additional features (`sin(x), sin(2*x), ...`). This will allow you to curve the predictions by adding sinusoidal component to the prediction curve." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Initial cost: 224369.59\n", "Optimized cost: 2761.58\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", "
Model Parameters
05.393174
10.765539
20.357765
\n", "
" ], "text/plain": [ " Model Parameters\n", "0 5.393174\n", "1 0.765539\n", "2 0.357765" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Set up linear regression parameters.\n", "num_iterations = 500 # Number of gradient descent iterations.\n", "regularization_param = 0 # Helps to fight model overfitting.\n", "learning_rate = 0.01 # The size of the gradient descent step.\n", "polynomial_degree = 0 # The degree of additional polynomial features.\n", "sinusoid_degree = 0 # The degree of sinusoid parameter multipliers of additional features.\n", "\n", "# Init linear regression instance.\n", "linear_regression = LinearRegression(x_train, y_train, polynomial_degree, sinusoid_degree)\n", "\n", "# Train linear regression.\n", "(theta, cost_history) = linear_regression.train(\n", " learning_rate,\n", " regularization_param,\n", " num_iterations\n", ")\n", "\n", "# Print training results.\n", "print('Initial cost: {:.2f}'.format(cost_history[0]))\n", "print('Optimized cost: {:.2f}'.format(cost_history[-1]))\n", "\n", "# Print model parameters\n", "theta_table = pd.DataFrame({'Model Parameters': theta.flatten()})\n", "theta_table.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Analyze Gradient Descent Progress\n", "\n", "The plot below illustrates how the cost function value changes over each iteration. You should see it decreasing. \n", "\n", "In case if cost function value increases it may mean that gradient descent missed the cost function minimum and with each step it goes further away from it. In this case you might want to reduce the learning rate parameter (the size of the gradient step).\n", "\n", "From this plot you may also get an understanding of how many iterations you need to get an optimal value of the cost function. In current example you may see that there is no much sense to increase the number of gradient descent iterations over 500 since it will not reduce cost function significantly. " ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZsAAAEWCAYAAACwtjr+AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4xLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvDW2N/gAAIABJREFUeJzt3Xt8XVWd/vHPkzS3pknbNGlpS6FFilgQKhQoigyoYGFQ0OHmOFoVRUd0dMa5gHMBdXSYcRRlVBSFARwH9IcXOopC5SKK3MqdgtACxd7v90toku/vj71STkOapu052cnJ8369ziv7rL323mulaZ7stdfZWxGBmZlZKVXk3QAzMyt/DhszMys5h42ZmZWcw8bMzErOYWNmZiXnsDEzs5Jz2FhZkbRA0tvS8mclfS/vNpmZw8b6kKTzJT0gabOkFWn545JUiuNFxJci4sP7uh9JEyWFpCE91LlM0nZJG9PrOUnfkDR2X49fKqlPB/ew/gOS2iVtkrRB0mOSzujLNlr5cNhYn5D0GeDrwJeB/YAxwMeANwHVu9imss8aWBw/jIgGoAl4F1k/H+7PgdML90XEMGAEcA3wI0kju1bqKYj3RrH3Z/lz2FjJSRoOfB74eETcHBEbI/NoRLw3IlpTveskXSXpVkmbgZMl/amkR9Nf1gslXdZl3++T9JKk1ZL+scu6yyT9T8H76ZJ+L2mdpMclnVSw7m5JX5B0bzozuV1Sc1p9T/q6Lv2Vf3xP/Y2I7RExFzgPWAl8puA4Z6QzhHWpLUcUrPsHSYvT8Z+V9NZUXpmGBJ9P6x6WNCGtO1TSbElr0jbnFuzvOknflPSLtN0Dkl6T1nX26fHUp/N206cO4FqgDniNpJMkLUptXgb8d9rvRyTNT+2ZJWlcQXtOTW1cL+lbkn4j6cNp3QfS9/4KSauBy1L5hyQ9I2mtpNskHZjKlequSD8bT0o6PK07XdLTqc+LJf1tT32zPhIRfvlV0hcwA2gDhuym3nXAerKznQqgFjgJeH16fwSwHDgr1Z8CbAJOBGqAr6bjvC2tvwz4n7Q8HlgNnJ72dUp635LW3w08DxxC9gv1buDytG4iED21v/BYXco/DzyQlt8ArACOAyqBmcCC1PbXAguBcQXHfE1a/jvgyVRHwJHAKKA+bfNBYEja/ypgSsH3czVwbFr/A+CmgrYFcHAPffoA8Lu0PAT4FLARGJ7+XdqAf0/trwPeko5/VCr7L+CetH0zsAF4d8G+tgMfLjhWG/DJtL4OOBOYD7wulf0T8PtU/+3Aw2RnXEp1xqZ1S4E3p+WRwFF5/x/wK3xmY32iGVgVEW2dBQVnGFslnVhQ95aIuDciOiJiW0TcHRFPpvdPADcCf5Lqng38PCLuiezs6J+Bjl204S+AWyPi1rSv2cAcsvDp9N8R8VxEbAV+BEwtQt+XkA2rAVwIfCciHoiI9oi4HmgFpgPtZL+gp0iqiogFEfF82u7DwD9FxLOReTwiVgNnAAsi4r8joi0iHgV+DJxTcPyfRsSD6Xv/g73o03RJ64BlwHuAd0XE+rSuA7g0IlrT9+y9wLUR8Uj697gEOF7SRLLv89yI+Elqy5Vpnzt9ryLiv1JftpINs/5bRDyTtvkSMDWd3WwHGoBDAaU6S9N+tqfvY2NErI2IR/awz1YCDhvrC6uB5sJx+Ih4Y0SMSOsKfw4XFm4o6ThJd0laKWk92S+gzuGtcYX1I2Jz2l93DgTOSQG3Lv0CPQEovJ5S+MtvCzBsTzq5C+OBNQVt+EyXNkwgO5uZD3ya7AxphaSbCoagJpCddXXXp+O67O+9ZNeKitWn+yNiREQ0R8T0iPh1wbqVEbGt4P044KXONxGxiezfYzyv/rcKYFGXYy3s8v5A4OsFfVtDdhYzPiLuBL4BfJPs+3W1pMa03Z+RhdtLaaiux2FP6xsOG+sL95H9BX9mL+p2vQ35/wKzgAkRMRz4NtkvHMiGSyZ0VpQ0lGx4qTsLge+nX5ydr/qIuHwv2tQrkiqAdwC/LWjDF7u0YWhE3AgQEf8bESeQ/ZINsiGqzu1es4s+/abL/oZFxF/uTXv3QtfvyxKytgMgqZ7s32Mx2b/V/gXrVPh+F/tbCHy0S//qIuL3ABFxZUQcTTacegjZcCMR8VBEnAmMBn5GdpZqOXPYWMlFxDrgc8C3JJ0tqUFShaSpZNcdetIArImIbZKOBf68YN3NwBmSTpBUTXZ9ZFc/0/8DvEPS29MF99p0kbvrL7zurCQbMjqoF3WRNETS68iG/PYju5YE8F3gY+lsTZLqlU2AaJD0WklvkVQDbAO28sqQ4PeAL0ianLY7QtIo4OfAIcomSVSl1zHp2L2xvLd96qUbgQ9Kmpr68SWy61ULgF8Ar5d0VjrDvYidz8C6823gEkmHQTbRRNI5afmY9H2sAjaTfc86JFVLeq+k4RGxnew60a6GVq0POWysT0TEfwB/A/w92S+55cB3gH8Aft/Dph8HPi9pI/AvFPyVGtmMr4vIzn6WAmt59dBMZ92FZGdWnyULj4Vkfwnv9v9ARGwBvgjcm4Z0pu+i6nmSNpFNcphFNoR0dEQsSfuZA3yEbPhnLdnF7w+kbWuAy8kusC8j+6v8krTuq6nft5P98rwGqIuIjcCpwPlkZxXLeOWCfW9cBlyf+nTu7irvThpi+2ey60ZLyc7Gzk/rVpFdS/oPsu/LFLJrZq097O+nZP25SdIG4CngtLS6kSy815IN3a0mm1YP8D5gQdrmY2RDi5YzZUOnZmZ9Jw0xLgLeGxF35d0eKz2f2ZhZn0hDmCPSENtnya693Z9zs6yPOGzMrK8cTzarbhXZxImz0hRnGwQ8jGZmZiXnMxszMys53+wuaW5ujokTJ+bdDDOzAeXhhx9eFREtu6vnsEkmTpzInDlz8m6GmdmAIuml3dfyMJqZmfUBh42ZmZWcw8bMzErOYWNmZiXnsDEzs5Jz2JiZWck5bMzMrOQcNvvozj8s51t3z8+7GWZm/ZrDZh/d89wqrrqruyf2mplZJ4fNPhpVX83G1jZa29rzboqZWb/lsNlHTcOqAVi7eXvOLTEz678cNvtoVH0WNqs37/LptmZmg57DZh811WePe1+z+eWcW2Jm1n85bPZRUzqzcdiYme2aw2Yf7RhG2+SwMTPbFYfNPhpeV0VlhXxmY2bWA4fNPqqoECOHVrHaYWNmtksOmyIYObSaNZ6NZma2Sw6bImiqr/YwmplZDxw2RTBqWLWH0czMeuCwKQKf2ZiZ9cxhUwRN9TWs27KdtvaOvJtiZtYvOWyKoPOzNmu3+P5oZmbdcdgUge8iYGbWM4dNEfhmnGZmPXPYFEHnYwZ8ZmNm1j2HTRF4GM3MrGclCxtJEyTdJelpSXMlfSqVN0maLWle+joylUvSlZLmS3pC0lEF+5qZ6s+TNLOg/GhJT6ZtrpSkno5RKiOH+macZmY9KeWZTRvwmYiYAkwHLpI0BbgYuCMiJgN3pPcApwGT0+tC4CrIggO4FDgOOBa4tCA8rgI+UrDdjFS+q2OURFVlBcPrqnxmY2a2CyULm4hYGhGPpOWNwDPAeOBM4PpU7XrgrLR8JnBDZO4HRkgaC7wdmB0RayJiLTAbmJHWNUbE/RERwA1d9tXdMUpmlD/YaWa2S31yzUbSROANwAPAmIhYmlYtA8ak5fHAwoLNFqWynsoXdVNOD8fo2q4LJc2RNGflypV73rECTfXVno1mZrYLJQ8bScOAHwOfjogNhevSGUmU8vg9HSMiro6IaRExraWlZZ+O09JQwypfszEz61ZJw0ZSFVnQ/CAifpKKl6chMNLXFal8MTChYPP9U1lP5ft3U97TMUqmeVgNKzf6zMbMrDulnI0m4BrgmYj4asGqWUDnjLKZwC0F5e9Ps9KmA+vTUNhtwKmSRqaJAacCt6V1GyRNT8d6f5d9dXeMkmlpqGH91u20trWX+lBmZgPOkBLu+03A+4AnJT2Wyj4LXA78SNIFwEvAuWndrcDpwHxgC/BBgIhYI+kLwEOp3ucjYk1a/jhwHVAH/DK96OEYJdPSUANk05/Hjagr9eHMzAaUkoVNRPwO0C5Wv7Wb+gFctIt9XQtc2035HODwbspXd3eMUmoeloXNyo2tDhszsy58B4Ei6TyzWbXJ123MzLpy2BRJZ9h4koCZ2as5bIqk887PDhszs1dz2BRJbVUljbVDPIxmZtYNh00RtTTUsNJhY2b2Kg6bIvIHO83MuuewKSLfssbMrHsOmyJqafCZjZlZdxw2RdQ8rIZNrW1sfdm3rDEzK+SwKSJ/sNPMrHsOmyLqDJsVHkozM9uJw6aIWob5zMbMrDsOmyLyLWvMzLrnsCmipvpqJIeNmVlXDpsiqqqsoGlota/ZmJl14bApstGNtazYsC3vZpiZ9SsOmyLbr7GG5RsdNmZmhRw2Rbbf8FqWrfcwmplZIYdNkY1uqGX15la2t3fk3RQzs37DYVNk+w2vJcIf7DQzK+SwKbL9GmsBWO5JAmZmOzhsimx0Y/bBzuXrHTZmZp0cNkXWeWazzGc2ZmY7OGyKrKm+murKCpZv8DUbM7NODpsik8ToxhpfszEzK+CwKYExjbUs8zUbM7MdHDYlsF9jre8iYGZWwGFTAmMaaz0bzcysgMOmBMY01rD55XY2btued1PMzPoFh00J7De884OdnpFmZgYOm5IY47sImJntxGFTAp1h4xlpZmYZh00JjB3uuwiYmRVy2JRAbVUlo+qrWbxua95NMTPrFxw2JTJuRB1LHDZmZkAJw0bStZJWSHqqoOwySYslPZZepxesu0TSfEnPSnp7QfmMVDZf0sUF5ZMkPZDKfyipOpXXpPfz0/qJpepjT8aNqHXYmJklpTyzuQ6Y0U35FRExNb1uBZA0BTgfOCxt8y1JlZIqgW8CpwFTgPekugD/nvZ1MLAWuCCVXwCsTeVXpHp9btyIOhav3UpE5HF4M7N+pWRhExH3AGt6Wf1M4KaIaI2IF4H5wLHpNT8iXoiIl4GbgDMlCXgLcHPa/nrgrIJ9XZ+Wbwbemur3qfEj6tj8cjsbtrb19aHNzPqdPK7ZfELSE2mYbWQqGw8sLKizKJXtqnwUsC4i2rqU77SvtH59qt+nxo2oA/AkATMz+j5srgJeA0wFlgJf6ePj70TShZLmSJqzcuXKou67M2x83cbMrI/DJiKWR0R7RHQA3yUbJgNYDEwoqLp/KttV+WpghKQhXcp32ldaPzzV7649V0fEtIiY1tLSsq/d28m4EdlnbZasd9iYmfVp2EgaW/D2XUDnTLVZwPlpJtkkYDLwIPAQMDnNPKsmm0QwK7Kr7ncBZ6ftZwK3FOxrZlo+G7gzcrhK31xfQ/WQCg+jmZkBQ3ZfZe9IuhE4CWiWtAi4FDhJ0lQggAXARwEiYq6kHwFPA23ARRHRnvbzCeA2oBK4NiLmpkP8A3CTpH8FHgWuSeXXAN+XNJ9sgsL5pepjTyoqxLjhtSxZ57sImJmVLGwi4j3dFF/TTVln/S8CX+ym/Fbg1m7KX+CVYbjC8m3AOXvU2BLxBzvNzDK+g0AJOWzMzDIOmxIaN6KO5Ru2sb29I++mmJnlymFTQuNH1NIRfq6NmZnDpoQ6P2uzaK2H0sxscHPYlNCEkUMBWLhmS84tMTPLl8OmhMaNqKNCDhszM4dNCVUPqWDs8Dr+6LAxs0HOYVNiBzQNddiY2aDnsCmxLGw8QcDMBjeHTYkdMGooqza1svXl9rybYmaWG4dNiU1oSjPS1noozcwGL4dNiR2QwuaPqx02ZjZ4OWxKbEfYeJKAmQ1iDpsSGzm0imE1Qxw2ZjaoOWxKTBITmob6g51mNqg5bPrAAU3+YKeZDW4Omz7Q+cHOHJ5ObWbWLzhs+sABTUNpbetg+YbWvJtiZpYLh00fmNQ8DIAXVm3KuSVmZvnoVdhI+n5vyqx7B7XUA/Diqs05t8TMLB+9PbM5rPCNpErg6OI3pzzt11hLbVUFL6502JjZ4NRj2Ei6RNJG4AhJG9JrI7ACuKVPWlgGKirExFH1PrMxs0Grx7CJiH+LiAbgyxHRmF4NETEqIi7pozaWhYNa6nnBYWNmg1Rvh9F+LqkeQNJfSPqqpANL2K6yc1DzMP64Zgvb2zvyboqZWZ/rbdhcBWyRdCTwGeB54IaStaoMTWqup70jfCcBMxuUehs2bZF9IvFM4BsR8U2goXTNKj+T0oy0FzxJwMwGoSG9rLdR0iXA+4A3S6oAqkrXrPJzULOnP5vZ4NXbM5vzgFbgQxGxDNgf+HLJWlWGRgytpqm+2pMEzGxQ6lXYpID5ATBc0hnAtojwNZs9NKm5nhd9FwEzG4R6eweBc4EHgXOAc4EHJJ1dyoaVo0nN9TzvazZmNgj19prNPwLHRMQKAEktwK+Bm0vVsHI0efQwbn54Eeu2vMyIodV5N8fMrM/09ppNRWfQJKv3YFtLDtkvm8D33HIPpZnZ4NLbwPiVpNskfUDSB4BfALeWrlnl6ZAxnWGzMeeWmJn1rR6H0SQdDIyJiL+T9G7ghLTqPrIJA7YHxg2vZVjNEOY5bMxskNndNZuvAZcARMRPgJ8ASHp9WveOkrauzEji4NHDPIxmZoPO7obRxkTEk10LU9nEkrSozB0yZhjzVvjMxswGl92FzYge1tX1tKGkayWtkPRUQVmTpNmS5qWvI1O5JF0pab6kJyQdVbDNzFR/nqSZBeVHS3oybXOlJPV0jP7ikDENrNr0Mqs3+RHRZjZ47C5s5kj6SNdCSR8GHt7NttcBM7qUXQzcERGTgTvSe4DTgMnpdSHZjT+R1ARcChwHHAtcWhAeVwEfKdhuxm6O0S+8MknAQ2lmNnjsLmw+DXxQ0t2SvpJevwEuAD7V04YRcQ+wpkvxmcD1afl64KyC8hsicz8wQtJY4O3A7IhYExFrgdnAjLSuMSLuTzcIvaHLvro7Rr/QGTYeSjOzwaTHCQIRsRx4o6STgcNT8S8i4s69PN6YiFialpcBY9LyeGBhQb1Fqayn8kXdlPd0jFeRdCHZmRQHHHDAnvZlr4xprKGhdoinP5vZoNKrOwhExF3AXcU8cESEpCjmPvf0GBFxNXA1wLRp00ralk6SeO2YBp5d5rAxs8Gjr+8CsDwNgZG+dt6VYDEwoaDe/qmsp/L9uynv6Rj9xpRxjTyzdCMdHX2Sb2ZmuevrsJkFdM4omwncUlD+/jQrbTqwPg2F3QacKmlkmhhwKnBbWrdB0vQ0C+39XfbV3TH6jSljG9nU2sYf/dROMxskensjzj0m6UbgJKBZ0iKyWWWXAz+SdAHwEtkdpCG79c3pwHxgC/BBgIhYI+kLwEOp3ucjonPSwcfJZrzVAb9ML3o4Rr9x2LjhAMxdsoGJ6aFqZmblrGRhExHv2cWqt3ZTN4CLdrGfa4FruymfwyuTFgrLV3d3jP5k8phhDKkQTy9dz58eMTbv5piZlZzv3JyD2qpKDh49jLlLNuTdFDOzPuGwycmUcY0OGzMbNBw2OTls3HBWbmxlxcZteTfFzKzkHDY5mTK2EYCnfXZjZoOAwyYnU8ZlYeOhNDMbDBw2ORleV8WBo4byxKJ1eTfFzKzkHDY5OnL/ETy+cH3ezTAzKzmHTY6mThjBsg3bWLbekwTMrLw5bHI09YDs2XSPLVybc0vMzErLYZOjKWMbqaoUjy70dRszK28OmxzVVlUyZWwjj/3RYWNm5c1hk7OpE0bw5OL1tPtxA2ZWxhw2OZt6wAi2vNzux0SbWVlz2OTsDRNGAvDISx5KM7Py5bDJ2YGjhtI8rIY5C9bsvrKZ2QDlsMmZJI6dNJIHXnTYmFn5ctj0A8dObGLxuq0sWuvHRJtZeXLY9APHThoFwEMeSjOzMuWw6Qdeu18DjbVDeNBDaWZWphw2/UBlhThmYpOv25hZ2XLY9BPHTGrihZWbWbmxNe+mmJkVncOmn5h+UHbd5r4XVufcEjOz4nPY9BOvHz+c4XVV/Pa5lXk3xcys6Bw2/URlhXjTwaP43fxVRPg+aWZWXhw2/cibJ7ewdP02nl+5Ke+mmJkVlcOmHznh4GYA7nluVc4tMTMrLodNPzKhaSiTmuv57TxftzGz8uKw6WfePLmZ+19YQ2tbe95NMTMrGodNP3Pya0ezdXs79z3vKdBmVj4cNv3M8a8ZxdDqSmY/vTzvppiZFY3Dpp+prarkxMkt/PqZ5XT4UdFmViYcNv3QKVPGsHxDK08uXp93U8zMisJh0w+95dDRVFaIXz/joTQzKw8Om35oZH010w4cye1zHTZmVh4cNv3UaYfvx7PLNzJv+ca8m2Jmts8cNv3U6UeMpUIw6/EleTfFzGyf5RI2khZIelLSY5LmpLImSbMlzUtfR6ZySbpS0nxJT0g6qmA/M1P9eZJmFpQfnfY/P22rvu/lvhndUMvxrxnF/z2+xDfmNLMBL88zm5MjYmpETEvvLwbuiIjJwB3pPcBpwOT0uhC4CrJwAi4FjgOOBS7tDKhU5yMF280ofXeK751HjmPB6i2elWZmA15/GkY7E7g+LV8PnFVQfkNk7gdGSBoLvB2YHRFrImItMBuYkdY1RsT9kZ0S3FCwrwFlxmFjqaoUsx7zUJqZDWx5hU0At0t6WNKFqWxMRCxNy8uAMWl5PLCwYNtFqayn8kXdlL+KpAslzZE0Z+XK/nfzy+FDqzj5taP52WNL2N7ekXdzzMz2Wl5hc0JEHEU2RHaRpBMLV6YzkpJfqIiIqyNiWkRMa2lpKfXh9sp5x0xg1aZW7vzDirybYma213IJm4hYnL6uAH5Kds1leRoCI33t/O26GJhQsPn+qayn8v27KR+Q/uSQFsY01vDDhxbuvrKZWT/V52EjqV5SQ+cycCrwFDAL6JxRNhO4JS3PAt6fZqVNB9an4bbbgFMljUwTA04FbkvrNkianmahvb9gXwPOkMoKzjl6Anc/u4Kl67fm3Rwzs72Sx5nNGOB3kh4HHgR+ERG/Ai4HTpE0D3hbeg9wK/ACMB/4LvBxgIhYA3wBeCi9Pp/KSHW+l7Z5HvhlH/SrZM6dNoGOwGc3ZjZgyZ/hyEybNi3mzJmTdzN2aea1DzJ3yQbuvfhkaoZU5t0cMzMAJD1c8BGWXepPU5+tBxecMIlVm1r5v8eX7r6ymVk/47AZIN48uZnJo4dx7e9e9B0FzGzAcdgMEJL40AmTeHrpBu57wY+MNrOBxWEzgLzrDeNpaajhG3fOz7spZmZ7xGEzgNRWVfLREw/i98+v5qEFa3a/gZlZP+GwGWDee9yBNA+r5uu/npd3U8zMes1hM8DUVVdy4YkH8bv5q7jf127MbIBw2AxA75s+kbHDa/niL56ho8Mz08ys/3PYDEB11ZX83dtfy5OL13PL4wP2tm9mNog4bAaos6aO5/Xjh/Mfv3qWza1teTfHzKxHDpsBqqJCXPqOKSxdv40rZj+Xd3PMzHrksBnApk1s4j3HTuDae1/kKT862sz6MYfNAHfxjNfRVF/DP/z4CV5u89M8zax/ctgMcMOHVvGvZx3O3CUbuOLXHk4zs/7JYVMGZhy+H+cfM4Fv/+Z5f/bGzPolh02Z+OczpjBpVD2fvPFRlq3flndzzMx24rApE/U1Q/j2+45mS2sbF35/Dtu2t+fdJDOzHRw2ZeSQMQ187fw38MSi9Vzykyf93Bsz6zccNmXmlClj+NtTD+Gnjy7m3375BweOmfULQ/JugBXfRScfzMqNrVx9zwvUVVXy16cckneTzGyQc9iUIUlc+o7D2PJyO1+/Yx6VFeKTbzkYSXk3zcwGKYdNmaqoEJf/2RG0R/DV2c+xYuM2PvfOw6mscOCYWd9z2JSxygrxn2cfyeiGWr79m+dZtr6VK847kobaqrybZmaDjCcIlLmKCnHxaYfyuXcexl3PruCd37iXZ5ZuyLtZZjbIOGwGiZlvnMj/fvg4Nre2cdY37+W6e1/0g9fMrM84bAaR4w4axS/+6s1MP2gUl/3f05z7nfuYv2JT3s0ys0HAYTPItDTUcN0Hj+Er5xzJvBWbmPG1e7hs1lzWbH4576aZWRnzBIFBSBJ/dvT+nHhIC1+d/Rw33LeAHz+yiA+8cSIz3ziR5mE1eTfRzMqM/AnzzLRp02LOnDl5NyMXzy3fyFduf5bbn15OdWUF506bwPuOP5BDxjTk3TQz6+ckPRwR03Zbz2GTGcxh02n+ik18954X+Mmji9jeHhw5YQTnHL0/p79+LE311Xk3z8z6IYfNHnLYvGLVplZ+9uhifjRnIc8t30SFYNqBTZwyZQxvfd1oJjXX+24EZgY4bPaYw+bVIoK5SzZw+9xl3P70cv6wbCMAYxprOHbSKI6d1MRRB4xg8ugGqod4ronZYOSw2UMOm91buGYLv3luJQ++uIYHX1zDsg3ZQ9qqKsXk0Q1MGdfIofs1MKm5ngNH1TOhqY6aIZU5t9rMSslhs4ccNnsmIli4ZiuPL1rH00s3MHfJBp5esp5Vm16ZQi3BuOF1TGiqY3RDLWMaaxjdUMvo9LWloZrGuiqG11U5lMwGqN6Gjac+216RxAGjhnLAqKG848hxO8rXbH6ZBas389LqzSxYtYWXVm9m0dqtPLZwHSs2bmPb9o5u91dbVUFjbRY8w+uqaKyroq66krqq9KqupLZzuapix/vqygqGVFYwpFLZcoUYUllBVaUYUpG+pvdVaX2F0quCHctS5zI73vu6lFnxlG3YSJoBfB2oBL4XEZfn3KRBoam+mqb6ao46YOSr1kUEG7a1sXLjNlZsaGXlplY2bN3Ohm1trN+6nfVbtrNh23bWb93Oio3b2PpyO9u2d7B1eztbX25nax8/6rowgFQQRF3DqTCUVLAtXUoLy7rWEwX70M51srJXB9+Oejvtt6djvbqdueoHjegHTQDy/8PmS+96PcdOairpMcoybCRVAt8ETgEWAQ9JmhURT+fbssFN0o4zl4NH7/lneCLilfBJAbS9vYO29mB7Rwfb2zpo64gdZW0dHWzv/NqW1WlrDzoi6Ihsf53LHRFEQEdH4ftXlndVv73g/nJBpHYWtHlH23fqyU5lO9fv3T4669Ftveim7NX18tQfhu/zb0HSDxpSX1P6YeyyDBvgWGB+RLwAIOkm4EzAYTPV1sFHAAAGo0lEQVSAScqG1qp9fcdsoCnX+arjgYUF7xelsp1IulDSHElzVq5c2WeNMzMbbMo1bHolIq6OiGkRMa2lpSXv5piZla1yDZvFwISC9/unMjMzy0G5hs1DwGRJkyRVA+cDs3Juk5nZoFWWEwQiok3SJ4DbyKY+XxsRc3NulpnZoFWWYQMQEbcCt+bdDjMzK99hNDMz60ccNmZmVnK+EWciaSXw0l5u3gysKmJzBgL3eXBwnweHfenzgRGx28+OOGyKQNKc3tz1tJy4z4OD+zw49EWfPYxmZmYl57AxM7OSc9gUx9V5NyAH7vPg4D4PDiXvs6/ZmJlZyfnMxszMSs5hY2ZmJeew2UeSZkh6VtJ8SRfn3Z5ikXStpBWSniooa5I0W9K89HVkKpekK9P34AlJR+XX8r0jaYKkuyQ9LWmupE+l8rLtM4CkWkkPSno89ftzqXySpAdS/36YbmiLpJr0fn5aPzHP9u8tSZWSHpX08/S+rPsLIGmBpCclPSZpTirrs59vh80+KHj89GnAFOA9kqbk26qiuQ6Y0aXsYuCOiJgM3JHeQ9b/yel1IXBVH7WxmNqAz0TEFGA6cFH6tyznPgO0Am+JiCOBqcAMSdOBfweuiIiDgbXABan+BcDaVH5FqjcQfQp4puB9ufe308kRMbXgMzV99/Md6Vnrfu35CzgeuK3g/SXAJXm3q4j9mwg8VfD+WWBsWh4LPJuWvwO8p7t6A/UF3AKcMsj6PBR4BDiO7NPkQ1L5jp9zsjupH5+Wh6R6yrvte9jP/dMv1rcAPwdUzv0t6PcCoLlLWZ/9fPvMZt/06vHTZWRMRCxNy8uAMWm5rL4PaajkDcADDII+pyGlx4AVwGzgeWBdRLSlKoV929HvtH49MKpvW7zPvgb8PdCR3o+ivPvbKYDbJT0s6cJU1mc/32X7iAErrYgISWU3b17SMODHwKcjYoOkHevKtc8R0Q5MlTQC+ClwaM5NKhlJZwArIuJhSSfl3Z4+dkJELJY0Gpgt6Q+FK0v98+0zm30z2B4/vVzSWID0dUUqL4vvg6QqsqD5QUT8JBWXdZ8LRcQ64C6yYaQRkjr/GC3s245+p/XDgdV93NR98SbgnZIWADeRDaV9nfLt7w4RsTh9XUH2R8Wx9OHPt8Nm3wy2x0/PAmam5Zlk1zU6y9+fZrBMB9YXnJoPCMpOYa4BnomIrxasKts+A0hqSWc0SKoju071DFnonJ2qde135/fjbODOSIP6A0FEXBIR+0fERLL/r3dGxHsp0/52klQvqaFzGTgVeIq+/PnO+6LVQH8BpwPPkY1z/2Pe7Sliv24ElgLbycZrLyAbq74DmAf8GmhKdUU2K+954ElgWt7t34v+nkA2pv0E8Fh6nV7OfU79OAJ4NPX7KeBfUvlBwIPAfOD/ATWpvDa9n5/WH5R3H/ah7ycBPx8M/U39ezy95nb+rurLn2/frsbMzErOw2hmZlZyDhszMys5h42ZmZWcw8bMzErOYWNmZiXnsDErEkmb0teJkv68yPv+bJf3vy/m/s1KzWFjVnwTgT0Km4JPr+/KTmETEW/cwzaZ5cphY1Z8lwNvTs8N+et0o8svS3ooPRvkowCSTpL0W0mzgKdT2c/SjRLndt4sUdLlQF3a3w9SWedZlNK+n0rPKjmvYN93S7pZ0h8k/SDdJQFJlyt7bs8Tkv6zz787Nij5RpxmxXcx8LcRcQZACo31EXGMpBrgXkm3p7pHAYdHxIvp/YciYk26dcxDkn4cERdL+kRETO3mWO8mew7NkUBz2uaetO4NwGHAEuBe4E2SngHeBRwaEdF5qxqzUvOZjVnpnUp2n6nHyB5bMIrsoVQADxYEDcBfSXocuJ/sRoiT6dkJwI0R0R4Ry4HfAMcU7HtRRHSQ3X5nItkt8rcB10h6N7Bln3tn1gsOG7PSE/DJyJ6QODUiJkVE55nN5h2Vslvev43sYV1Hkt2zrHYfjttasNxO9nCwNrK7/d4MnAH8ah/2b9ZrDhuz4tsINBS8vw34y/QIAyQdku6829VwskcQb5F0KNnjqTtt79y+i98C56XrQi3AiWQ3jOxWel7P8Ii4FfhrsuE3s5LzNRuz4nsCaE/DYdeRPS9lIvBIuki/Ejirm+1+BXwsXVd5lmwordPVwBOSHonslvidfkr2/JnHye5a/fcRsSyFVXcagFsk1ZKdcf3N3nXRbM/4rs9mZlZyHkYzM7OSc9iYmVnJOWzMzKzkHDZmZlZyDhszMys5h42ZmZWcw8bMzEru/wPNleTIfvYoJAAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Plot gradient descent progress.\n", "plt.plot(range(num_iterations), cost_history)\n", "plt.xlabel('Iterations')\n", "plt.ylabel('Cost')\n", "plt.title('Gradient Descent Progress')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Plot the Model Predictions\n", "\n", "Since our model is trained now we may plot its predictions over the training and test datasets to see how well it fits the data." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "data": [ { "marker": { "line": { "color": "rgb(255, 255, 255)", "width": 1 }, "opacity": 1, "size": 10 }, "mode": "markers", "name": "Training Set", "type": "scatter3d", "uid": "5121ac59-e6e4-4c30-8d0c-c3482182891a", "x": [ 1.1027104854583702, 1.3208793401718102, 0.7922212481498722, 0.39724862575531, 0.9097844958305359, 1.1893955469131499, 0.401477217674255, 1.06457793712616, 0.479820191860199, 0.368745893239975, 1.00985014438629, 0.381430715322495, 1.07062232494354, 1.12786877155304, 0.6364067792892459, 0.564305365085602, 0.932537317276001, 1.28948748111725, 1.29178786277771, 1.00726580619812, 0.8584281802177429, 0.30544471740722695, 1.1018030643463101, 1.63295245170593, 0.7288706302642819, 1.49438726902008, 1.8707656860351598, 1.3469113111496, 0, 1.05469870567322, 0.951484382152557, 0.5916834473609921, 0.982409417629242, 1.15687310695648, 1.4637807607650801, 1.48238301277161, 1.69227766990662, 0.43108540773391707, 1.3753824234008798, 0.0921023488044739, 1.12112903594971, 0.786441087722778, 1.00082039833069, 0.24454993009567302, 0.36711055040359497, 0.511135876178741, 1.41691517829895, 1.4870972633361799, 1.1531838178634601, 0.7268835306167599, 1.1073532104492199, 0.11904179304838199, 1.2860119342803997, 1.15655755996704, 0.716249227523804, 1.22255623340607, 0.667224824428558, 0.368610262870789, 1.0352252721786501, 0.995538592338562, 1.74194359779358, 1.6263433694839498, 1.12209415435791, 0.6595166921615601, 1.5649795532226598, 1.4844149351120002, 0.925579309463501, 1.2175596952438401, 1.36135590076447, 1.23374843597412, 1.12843120098114, 1.28177809715271, 1.29121541976929, 1.07498753070831, 0.85769921541214, 1.480633020401, 1.1536017656326298, 0.6484572887420649, 0.89465194940567, 0.872001945972443, 0.950612664222717, 1.43092346191406, 1.1614590883255, 1.10970628261566, 1.21768391132355, 0.8089642524719242, 0.9910123944282528, 0.305808693170547, 1.3412059545516999, 0.37584653496742204, 0.339233845472336, 1.40570604801178, 1.0272358655929599, 0.900596737861633, 1.1982743740081798, 1.40167844295502, 1.3559380769729599, 0.560479462146759, 1.07937383651733, 1.48792338371277, 1.3145823478698702, 0.996192753314972, 1.3950666189193701, 0.964434325695038, 1.25278460979462, 1.55167484283447, 1.50394463539124, 1.44163393974304, 1.18529546260834, 1.54625928401947, 1.5357066392898602, 1.1307767629623402, 0.6017650961875921, 0.524713635444641, 0.7885475754737851, 0.0226431842893362, 1.44357192516327, 1.53062355518341, 0.730573117733002, 1.1982102394104, 0.737299203872681, 1.08116579055786, 1.2845562696456898, 0.233442038297653 ], "y": [ 0.288555532693863, 0.479131430387497, 0.469987004995346, 0.147062435746193, 0.432452529668808, 0.491247326135635, 0.106179520487785, 0.325905978679657, 0.44030594825744607, 0.5818438529968261, 0.561213254928589, 0.443185955286026, 0.47748741507530196, 0.580200731754303, 0.461603492498398, 0.430388748645782, 0.473507791757584, 0.0957312509417534, 0.520342111587524, 0.289680689573288, 0, 0.38042613863945, 0.465733230113983, 0.49633759260177596, 0.24072904884815197, 0.612924098968506, 0.604130983352661, 0.47120362520217896, 0.270842045545578, 0.479246735572815, 0.260287940502167, 0.24946372210979503, 0.204403176903725, 0.24932260811328896, 0.5397707223892211, 0.626006722450256, 0.549840569496155, 0.42596277594566295, 0.40598860383033797, 0.235961347818375, 0.194989055395126, 0.6582486629486078, 0.4551981985569, 0.348587512969971, 0.514492034912109, 0.390017777681351, 0.505625545978546, 0.567766189575195, 0.412730008363724, 0.23521526157856, 0.437453746795654, 0.33288118243217496, 0.17586351931095098, 0.295400261878967, 0.25471106171608, 0.255772292613983, 0.423026293516159, 0.0303698573261499, 0.45000287890434293, 0.443323463201523, 0.59662789106369, 0.60834527015686, 0.505196332931519, 0.0149958552792668, 0.620070576667786, 0.601607382297516, 0.474307239055634, 0.5793922543525699, 0.518630743026733, 0.550026834011078, 0.15399712324142498, 0.373783111572266, 0.40226498246192893, 0.28851598501205394, 0.585214674472809, 0.6271626353263849, 0.39815583825111406, 0.0960980430245399, 0.12297477573156401, 0.5313106179237371, 0.309410035610199, 0.470222115516663, 0.28923171758651695, 0.580131649971008, 0.457003742456436, 0.4350258708000179, 0.418421149253845, 0.18919676542282102, 0.572575807571411, 0.336384207010269, 0.408842742443085, 0.6140621304512021, 0.39414396882057207, 0.198303267359734, 0.300740599632263, 0.257921665906906, 0.35511153936386103, 0.45276376605033897, 0.55258983373642, 0.562511384487152, 0.234231784939766, 0.381498634815216, 0.256450712680817, 0.520303547382355, 0.376895278692245, 0.490968644618988, 0.5853844881057739, 0.508190035820007, 0.49451920390129106, 0.505740523338318, 0.5731103420257571, 0.41827192902565, 0.633375823497772, 0.47156670689582797, 0.571055591106415, 0.602126955986023, 0.6179508566856379, 0.449750572443008, 0.348079860210419, 0.31232857704162603, 0.447551846504211, 0.47278770804405196, 0.43745428323745705, 0.466914653778076 ], "z": [ 4.49700021743774, 5.61100006103516, 4.31500005722046, 3.5910000801086404, 6.002999782562259, 5.62900018692017, 3.7939999103546103, 5.175000190734861, 4.961999893188481, 3.47099995613098, 4.44000005722046, 4.08099985122681, 6.35699987411499, 6.4239997863769505, 4.513999938964839, 4.69500017166138, 5.493000030517581, 5.2270002365112305, 5.97300004959106, 4.80499982833862, 3.79500007629395, 3.4949998855590803, 5.525000095367429, 6.10500001907349, 5.837999820709231, 7.28399991989136, 6.375, 5.80999994277954, 2.69300007820129, 4.8289999961853, 5.27899980545044, 3.59299993515015, 5.18200016021729, 4.69199991226196, 6.89099979400635, 7.52199983596802, 6.57200002670288, 3.65700006484985, 7.212999820709231, 4.2800002098083505, 5.23699998855591, 5.97100019454956, 6.00799989700317, 3.50699996948242, 4.54500007629395, 3.34899997711182, 5.92000007629395, 7.00600004196167, 6.57800006866455, 5.26900005340576, 6.6350002288818395, 3.5329999923706095, 5.32399988174438, 5.5689997673034695, 4.77500009536743, 5.2930002212524405, 4.11999988555908, 3.6029999256133998, 5.71500015258789, 5.26200008392334, 6.86299991607666, 6.6479997634887695, 3.7660000324249303, 4.138999938964839, 7.49399995803833, 7.28399991989136, 5.31099987030029, 6.4539999961853, 6.1680002212524405, 6.4520001411438, 5.25, 5.962999820709231, 6.08400011062622, 5.22499990463257, 5.42999982833862, 7.50400018692017, 5.234000205993651, 4.29199981689453, 4.09600019454956, 6.4539999961853, 4.28599977493286, 6.44199991226196, 4.71400022506714, 7.0789999961853, 5.824999809265139, 4.29099988937378, 5.33599996566772, 3.64400005340576, 5.75799989700317, 3.875, 4.46000003814697, 7.31400012969971, 4.95499992370605, 4.37599992752075, 5.5, 5.837999820709231, 5.62099981307983, 4.55299997329712, 5.230000019073491, 6.9510002136230495, 5.90199995040894, 4.64400005340576, 5.96400022506714, 4.57399988174438, 6.65199995040894, 5.47200012207031, 7.3769998550415, 6.71400022506714, 6.59899997711182, 6.993000030517581, 6.9770002365112305, 5.82200002670288, 4.1680002212524405, 5.04099988937378, 5.07399988174438, 5.151000022888179, 7.468999862670901, 6.343999862670901, 5.1810002326965305, 4.46500015258789, 6.07100009918213, 5.2729997634887695, 5.8189997673034695, 3.97000002861023 ] }, { "marker": { "line": { "color": "rgb(255, 255, 255)", "width": 1 }, "opacity": 1, "size": 10 }, "mode": "markers", "name": "Test Set", "type": "scatter3d", "uid": "973829dd-d770-41f6-b456-046962af6151", "x": [ 1.6164631843566901, 1.47920441627502, 1.35268235206604, 1.34327983856201, 1.4336265325546298, 1.38439786434174, 1.32539355754852, 1.4884122610092199, 0.907975316047668, 1.09186446666718, 1.26074862480164, 0.833756566047668, 1.06931757926941, 0.8781145811080929, 1.3151752948761002, 0.783756256103516, 0.885416388511658, 0.5962200760841371, 0.989701807498932, 0.36842092871666, 0.586682975292206, 0.23430564999580397, 0.479309022426605, 0.476180493831635, 0.6030489206314089, 0.35022771358490007, 0.16192533075809498, 0.43801298737525896, 0.521021246910095, 0.777153134346008, 0.09162256866693501 ], "y": [ 0.635422587394714, 0.611100912094116, 0.49094617366790794, 0.588767051696777, 0.361466586589813, 0.408781230449677, 0.295817464590073, 0.536746919155121, 0.5475093722343439, 0.233335807919502, 0.32570791244506797, 0.5587329268455511, 0.20871552824974102, 0.408158332109451, 0.498465299606323, 0.394952565431595, 0.5015376806259161, 0.454943388700485, 0.28211015462875394, 0.318697690963745, 0.478356659412384, 0.48079109191894503, 0.37792226672172496, 0.306613743305206, 0.4477061927318571, 0.32436785101890603, 0.36365869641304, 0.16234202682972002, 0.390661299228668, 0.0815394446253777, 0.0599007532000542 ], "z": [ 7.537000179290769, 7.31599998474121, 6.60900020599365, 6.52699995040894, 6.42199993133545, 6.40299987792969, 6.09800004959106, 6.08699989318848, 5.955999851226809, 5.872000217437741, 5.849999904632571, 5.82299995422363, 5.39499998092651, 5.2350001335144, 5.19500017166138, 5.07399988174438, 5.01100015640259, 5.0040001869201705, 4.7350001335144, 4.70900011062622, 4.60799980163574, 4.550000190734861, 4.53499984741211, 4.19000005722046, 4.17999982833862, 4.03200006484985, 4.02799987792969, 3.9360001087188703, 3.80800008773804, 3.46199989318848, 2.90499997138977 ] }, { "marker": { "size": 1 }, "mode": "markers", "name": "Prediction Plane", "opacity": 0.8, "surfaceaxis": 2, "type": "scatter3d", "uid": "b9286cc7-12bf-4571-b516-f8bda6c3c119", "x": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.20786285400390664, 0.20786285400390664, 0.20786285400390664, 0.20786285400390664, 0.20786285400390664, 0.20786285400390664, 0.20786285400390664, 0.20786285400390664, 0.20786285400390664, 0.20786285400390664, 0.4157257080078133, 0.4157257080078133, 0.4157257080078133, 0.4157257080078133, 0.4157257080078133, 0.4157257080078133, 0.4157257080078133, 0.4157257080078133, 0.4157257080078133, 0.4157257080078133, 0.6235885620117199, 0.6235885620117199, 0.6235885620117199, 0.6235885620117199, 0.6235885620117199, 0.6235885620117199, 0.6235885620117199, 0.6235885620117199, 0.6235885620117199, 0.6235885620117199, 0.8314514160156266, 0.8314514160156266, 0.8314514160156266, 0.8314514160156266, 0.8314514160156266, 0.8314514160156266, 0.8314514160156266, 0.8314514160156266, 0.8314514160156266, 0.8314514160156266, 1.0393142700195332, 1.0393142700195332, 1.0393142700195332, 1.0393142700195332, 1.0393142700195332, 1.0393142700195332, 1.0393142700195332, 1.0393142700195332, 1.0393142700195332, 1.0393142700195332, 1.2471771240234397, 1.2471771240234397, 1.2471771240234397, 1.2471771240234397, 1.2471771240234397, 1.2471771240234397, 1.2471771240234397, 1.2471771240234397, 1.2471771240234397, 1.2471771240234397, 1.4550399780273464, 1.4550399780273464, 1.4550399780273464, 1.4550399780273464, 1.4550399780273464, 1.4550399780273464, 1.4550399780273464, 1.4550399780273464, 1.4550399780273464, 1.4550399780273464, 1.662902832031253, 1.662902832031253, 1.662902832031253, 1.662902832031253, 1.662902832031253, 1.662902832031253, 1.662902832031253, 1.662902832031253, 1.662902832031253, 1.662902832031253, 1.8707656860351598, 1.8707656860351598, 1.8707656860351598, 1.8707656860351598, 1.8707656860351598, 1.8707656860351598, 1.8707656860351598, 1.8707656860351598, 1.8707656860351598, 1.8707656860351598 ], "y": [ 0, 0.07313874032762309, 0.14627748065524618, 0.21941622098286928, 0.29255496131049236, 0.36569370163811543, 0.43883244196573856, 0.5119711822933616, 0.5851099226209847, 0.6582486629486078, 0, 0.07313874032762309, 0.14627748065524618, 0.21941622098286928, 0.29255496131049236, 0.36569370163811543, 0.43883244196573856, 0.5119711822933616, 0.5851099226209847, 0.6582486629486078, 0, 0.07313874032762309, 0.14627748065524618, 0.21941622098286928, 0.29255496131049236, 0.36569370163811543, 0.43883244196573856, 0.5119711822933616, 0.5851099226209847, 0.6582486629486078, 0, 0.07313874032762309, 0.14627748065524618, 0.21941622098286928, 0.29255496131049236, 0.36569370163811543, 0.43883244196573856, 0.5119711822933616, 0.5851099226209847, 0.6582486629486078, 0, 0.07313874032762309, 0.14627748065524618, 0.21941622098286928, 0.29255496131049236, 0.36569370163811543, 0.43883244196573856, 0.5119711822933616, 0.5851099226209847, 0.6582486629486078, 0, 0.07313874032762309, 0.14627748065524618, 0.21941622098286928, 0.29255496131049236, 0.36569370163811543, 0.43883244196573856, 0.5119711822933616, 0.5851099226209847, 0.6582486629486078, 0, 0.07313874032762309, 0.14627748065524618, 0.21941622098286928, 0.29255496131049236, 0.36569370163811543, 0.43883244196573856, 0.5119711822933616, 0.5851099226209847, 0.6582486629486078, 0, 0.07313874032762309, 0.14627748065524618, 0.21941622098286928, 0.29255496131049236, 0.36569370163811543, 0.43883244196573856, 0.5119711822933616, 0.5851099226209847, 0.6582486629486078, 0, 0.07313874032762309, 0.14627748065524618, 0.21941622098286928, 0.29255496131049236, 0.36569370163811543, 0.43883244196573856, 0.5119711822933616, 0.5851099226209847, 0.6582486629486078, 0, 0.07313874032762309, 0.14627748065524618, 0.21941622098286928, 0.29255496131049236, 0.36569370163811543, 0.43883244196573856, 0.5119711822933616, 0.5851099226209847, 0.6582486629486078 ], "z": [ 3.6332939796459245, 3.757851868566506, 3.8824097574870877, 4.00696764640767, 4.131525535328251, 4.256083424248833, 4.380641313169415, 4.5051992020899965, 4.629757091010578, 4.75431497993116, 3.8998205174683562, 4.024378406388938, 4.14893629530952, 4.273494184230102, 4.398052073150683, 4.5226099620712645, 4.647167850991846, 4.771725739912428, 4.89628362883301, 5.020841517753592, 4.166347055290788, 4.29090494421137, 4.415462833131952, 4.5400207220525335, 4.664578610973114, 4.789136499893696, 4.913694388814278, 5.03825227773486, 5.162810166655442, 5.287368055576024, 4.432873593113219, 4.557431482033801, 4.6819893709543825, 4.806547259874964, 4.931105148795545, 5.055663037716127, 5.180220926636709, 5.304778815557291, 5.429336704477873, 5.5538945933984545, 4.699400130935651, 4.823958019856232, 4.948515908776814, 5.073073797697396, 5.197631686617977, 5.322189575538559, 5.446747464459141, 5.5713053533797225, 5.695863242300304, 5.820421131220886, 4.965926668758082, 5.090484557678664, 5.215042446599246, 5.339600335519828, 5.464158224440409, 5.588716113360991, 5.7132740022815725, 5.837831891202154, 5.962389780122736, 6.086947669043318, 5.232453206580514, 5.357011095501096, 5.481568984421678, 5.60612687334226, 5.7306847622628405, 5.855242651183422, 5.979800540104004, 6.104358429024586, 6.228916317945168, 6.35347420686575, 5.498979744402945, 5.623537633323527, 5.748095522244109, 5.87265341116469, 5.997211300085271, 6.121769189005853, 6.246327077926435, 6.370884966847017, 6.495442855767599, 6.620000744688181, 5.765506282225377, 5.8900641711459585, 6.01462206006654, 6.139179948987122, 6.263737837907703, 6.388295726828285, 6.512853615748867, 6.637411504669449, 6.7619693935900305, 6.886527282510612, 6.032032820047808, 6.15659070896839, 6.281148597888972, 6.405706486809554, 6.530264375730135, 6.654822264650717, 6.7793801535712985, 6.90393804249188, 7.028495931412462, 7.153053820333044 ] } ], "layout": { "margin": { "b": 0, "l": 0, "r": 0, "t": 0 }, "scene": { "xaxis": { "title": "Economy..GDP.per.Capita." }, "yaxis": { "title": "Freedom" }, "zaxis": { "title": "Happiness.Score" } }, "title": "Date Sets" } }, "text/html": [ "
" ], "text/vnd.plotly.v1+html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Generate different combinations of X and Y sets to build a predictions plane.\n", "predictions_num = 10\n", "\n", "# Find min and max values along X and Y axes.\n", "x_min = x_train[:, 0].min();\n", "x_max = x_train[:, 0].max();\n", "\n", "y_min = x_train[:, 1].min();\n", "y_max = x_train[:, 1].max();\n", "\n", "# Generate predefined numbe of values for eaxh axis betwing correspondent min and max values.\n", "x_axis = np.linspace(x_min, x_max, predictions_num)\n", "y_axis = np.linspace(y_min, y_max, predictions_num)\n", "\n", "# Create empty vectors for X and Y axes predictions\n", "# We're going to find cartesian product of all possible X and Y values.\n", "x_predictions = np.zeros((predictions_num * predictions_num, 1))\n", "y_predictions = np.zeros((predictions_num * predictions_num, 1))\n", "\n", "# Find cartesian product of all X and Y values.\n", "x_y_index = 0\n", "for x_index, x_value in enumerate(x_axis):\n", " for y_index, y_value in enumerate(y_axis):\n", " x_predictions[x_y_index] = x_value\n", " y_predictions[x_y_index] = y_value\n", " x_y_index += 1\n", "\n", "# Predict Z value for all X and Y pairs. \n", "z_predictions = linear_regression.predict(np.hstack((x_predictions, y_predictions)))\n", "\n", "# Plot training data with predictions.\n", "\n", "# Configure the plot with test dataset.\n", "plot_predictions_trace = go.Scatter3d(\n", " x=x_predictions.flatten(),\n", " y=y_predictions.flatten(),\n", " z=z_predictions.flatten(),\n", " name='Prediction Plane',\n", " mode='markers',\n", " marker={\n", " 'size': 1,\n", " },\n", " opacity=0.8,\n", " surfaceaxis=2, \n", ")\n", "\n", "plot_data = [plot_training_trace, plot_test_trace, plot_predictions_trace]\n", "plot_figure = go.Figure(data=plot_data, layout=plot_layout)\n", "plotly.offline.iplot(plot_figure)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Calculate the value of cost function for the training and test data set. The less this value is, the better." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Train cost: 2761.58\n", "Test cost: 105.85\n" ] } ], "source": [ "train_cost = linear_regression.get_cost(x_train, y_train, regularization_param)\n", "test_cost = linear_regression.get_cost(x_test, y_test, regularization_param)\n", "\n", "print('Train cost: {:.2f}'.format(train_cost))\n", "print('Test cost: {:.2f}'.format(test_cost))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's now render the table of prediction values that our trained model does for unknown data (for test dataset). You should see that predicted happiness score should be quite similar to the known happiness score fron the test dataset." ] }, { "cell_type": "code", "execution_count": 11, "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", "
Economy GDP per CapitaFreedomTest Happiness ScorePredicted Happiness ScorePrediction Diff
01.6164630.6354237.5377.3020780.234922
11.4792040.6111017.3167.0006830.315317
21.3526820.4909466.6096.4791390.129861
31.3432800.5887676.5276.706585-0.179585
41.4336270.3614676.4226.2982260.123774
51.3843980.4087816.4036.3298710.073129
61.3253940.2958176.0985.9446810.153319
71.4884120.5367476.0876.831415-0.744415
80.9079750.5475095.9565.8402010.115799
91.0918640.2333365.8725.3792730.492727
\n", "
" ], "text/plain": [ " Economy GDP per Capita Freedom Test Happiness Score \\\n", "0 1.616463 0.635423 7.537 \n", "1 1.479204 0.611101 7.316 \n", "2 1.352682 0.490946 6.609 \n", "3 1.343280 0.588767 6.527 \n", "4 1.433627 0.361467 6.422 \n", "5 1.384398 0.408781 6.403 \n", "6 1.325394 0.295817 6.098 \n", "7 1.488412 0.536747 6.087 \n", "8 0.907975 0.547509 5.956 \n", "9 1.091864 0.233336 5.872 \n", "\n", " Predicted Happiness Score Prediction Diff \n", "0 7.302078 0.234922 \n", "1 7.000683 0.315317 \n", "2 6.479139 0.129861 \n", "3 6.706585 -0.179585 \n", "4 6.298226 0.123774 \n", "5 6.329871 0.073129 \n", "6 5.944681 0.153319 \n", "7 6.831415 -0.744415 \n", "8 5.840201 0.115799 \n", "9 5.379273 0.492727 " ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "test_predictions = linear_regression.predict(x_test)\n", "\n", "test_predictions_table = pd.DataFrame({\n", " 'Economy GDP per Capita': x_test[:, 0].flatten(),\n", " 'Freedom': x_test[:, 1].flatten(),\n", " 'Test Happiness Score': y_test.flatten(),\n", " 'Predicted Happiness Score': test_predictions.flatten(),\n", " 'Prediction Diff': (y_test - test_predictions).flatten()\n", "})\n", "\n", "test_predictions_table.head(10)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.0" } }, "nbformat": 4, "nbformat_minor": 2 } ================================================ FILE: notebooks/linear_regression/non_linear_regression_demo.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Non-linear Regression Demo\n", "\n", "_Source: 🤖[Homemade Machine Learning](https://github.com/trekhleb/homemade-machine-learning) repository_\n", "\n", "> ☝Before moving on with this demo you might want to take a look at:\n", "> - 📗[Math behind the Linear Regression](https://github.com/trekhleb/homemade-machine-learning/tree/master/homemade/linear_regression)\n", "> - ⚙️[Linear Regression Source Code](https://github.com/trekhleb/homemade-machine-learning/blob/master/homemade/linear_regression/linear_regression.py)\n", "\n", "**Polynomial regression** is a form of regression analysis in which the relationship between the independent variable `x` and the dependent variable `y` is modelled as an _nth_ degree polynomial in `x`. Although polynomial regression fits a nonlinear model to the data, as a statistical estimation problem it is linear, in the sense that the regression function `E(y|x)` is linear in the unknown parameters that are estimated from the data. For this reason, polynomial regression is considered to be a special case of multiple linear regression.\n", "\n", "> **Demo Project:** In this example we will train our model to imitate an artificial non-linear equation." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# To make debugging of linear_regression module easier we enable imported modules autoreloading feature.\n", "# By doing this you may change the code of linear_regression library and all these changes will be available here.\n", "%load_ext autoreload\n", "%autoreload 2\n", "\n", "# Add project root folder to module loading paths.\n", "import sys\n", "sys.path.append('../..')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Import Dependencies\n", "\n", "- [pandas](https://pandas.pydata.org/) - library that we will use for loading and displaying the data in a table\n", "- [numpy](http://www.numpy.org/) - library that we will use for linear algebra operations\n", "- [matplotlib](https://matplotlib.org/) - library that we will use for plotting the data\n", "- [linear_regression](https://github.com/trekhleb/homemade-machine-learning/blob/master/src/linear_regression/linear_regression.py) - custom implementation of linear regression" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# Import 3rd party dependencies.\n", "import numpy as np\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "\n", "# Import custom linear regression implementation.\n", "from homemade.linear_regression import LinearRegression" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Load the Data\n", "\n", "In this demo we will use artificial non-linear data set." ] }, { "cell_type": "code", "execution_count": 3, "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", "
yx
097.587761.0
197.763442.0
296.567053.0
392.520374.0
491.150975.0
595.217286.0
690.213557.0
789.292358.0
891.514799.0
989.6096610.0
\n", "
" ], "text/plain": [ " y x\n", "0 97.58776 1.0\n", "1 97.76344 2.0\n", "2 96.56705 3.0\n", "3 92.52037 4.0\n", "4 91.15097 5.0\n", "5 95.21728 6.0\n", "6 90.21355 7.0\n", "7 89.29235 8.0\n", "8 91.51479 9.0\n", "9 89.60966 10.0" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Load the data.\n", "data = pd.read_csv('../../data/non-linear-regression-x-y.csv')\n", "\n", "# Fetch traingin set and labels.\n", "x = data['x'].values.reshape((data.shape[0], 1))\n", "y = data['y'].values.reshape((data.shape[0], 1))\n", "\n", "# Print the data table.\n", "data.head(10)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Plot the Data\n", "\n", "Let's visualize the training and test datasets to see the shape of the data." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.plot(x, y)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Init and Train Linear Regression Model\n", "\n", "> ☝🏻This is the place where you might want to play with model configuration.\n", "\n", "- `polynomial_degree` - this parameter will allow you to add additional polynomial features of certain degree. More features - more curved the line will be.\n", "- `num_iterations` - this is the number of iterations that gradient descent algorithm will use to find the minimum of a cost function. Low numbers may prevent gradient descent from reaching the minimum. High numbers will make the algorithm work longer without improving its accuracy.\n", "- `learning_rate` - this is the size of the gradient descent step. Small learning step will make algorithm work longer and will probably require more iterations to reach the minimum of the cost function. Big learning steps may couse missing the minimum and growth of the cost function value with new iterations.\n", "- `regularization_param` - parameter that will fight overfitting. The higher the parameter, the simplier is the model will be.\n", "- `polynomial_degree` - the degree of additional polynomial features (`x1^2 * x2, x1^2 * x2^2, ...`). This will allow you to curve the predictions.\n", "- `sinusoid_degree` - the degree of sinusoid parameter multipliers of additional features (`sin(x), sin(2*x), ...`). This will allow you to curve the predictions by adding sinusoidal component to the prediction curve." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Initial cost: 137723281.24\n", "Optimized cost: 2189884.51\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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Model Parameters
060.531874
1-3.730982
2-3.265008
3-4.293987
4-3.048819
5-1.617722
6-1.801005
7-3.069723
8-3.551792
9-2.751712
10-2.019922
11-2.086688
12-1.761378
13-0.340730
140.214782
15-1.184080
160.614349
17-3.730982
18-3.730982
19-40.780573
20-40.780573
21-40.780573
22-1.502418
23-1.502418
24-1.502418
25-1.502418
2623.068044
2723.068044
2823.068044
2923.068044
......
1226.423522
1236.423522
1246.423522
1256.423522
1266.423522
1276.423522
1286.423522
1296.423522
1306.423522
1316.423522
1326.423522
1336.423522
1346.423522
1356.423522
1360.052387
1370.052387
1380.052387
1390.052387
1400.052387
1410.052387
1420.052387
1430.052387
1440.052387
1450.052387
1460.052387
1470.052387
1480.052387
1490.052387
1500.052387
1510.052387
\n", "

152 rows × 1 columns

\n", "
" ], "text/plain": [ " Model Parameters\n", "0 60.531874\n", "1 -3.730982\n", "2 -3.265008\n", "3 -4.293987\n", "4 -3.048819\n", "5 -1.617722\n", "6 -1.801005\n", "7 -3.069723\n", "8 -3.551792\n", "9 -2.751712\n", "10 -2.019922\n", "11 -2.086688\n", "12 -1.761378\n", "13 -0.340730\n", "14 0.214782\n", "15 -1.184080\n", "16 0.614349\n", "17 -3.730982\n", "18 -3.730982\n", "19 -40.780573\n", "20 -40.780573\n", "21 -40.780573\n", "22 -1.502418\n", "23 -1.502418\n", "24 -1.502418\n", "25 -1.502418\n", "26 23.068044\n", "27 23.068044\n", "28 23.068044\n", "29 23.068044\n", ".. ...\n", "122 6.423522\n", "123 6.423522\n", "124 6.423522\n", "125 6.423522\n", "126 6.423522\n", "127 6.423522\n", "128 6.423522\n", "129 6.423522\n", "130 6.423522\n", "131 6.423522\n", "132 6.423522\n", "133 6.423522\n", "134 6.423522\n", "135 6.423522\n", "136 0.052387\n", "137 0.052387\n", "138 0.052387\n", "139 0.052387\n", "140 0.052387\n", "141 0.052387\n", "142 0.052387\n", "143 0.052387\n", "144 0.052387\n", "145 0.052387\n", "146 0.052387\n", "147 0.052387\n", "148 0.052387\n", "149 0.052387\n", "150 0.052387\n", "151 0.052387\n", "\n", "[152 rows x 1 columns]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Set up linear regression parameters.\n", "num_iterations = 50000 # Number of gradient descent iterations.\n", "regularization_param = 0 # Helps to fight model overfitting.\n", "learning_rate = 0.02 # The size of the gradient descent step.\n", "polynomial_degree = 15 # The degree of additional polynomial features.\n", "sinusoid_degree = 15 # The degree of sinusoid parameter multipliers of additional features.\n", "normalize_data = True # Flag that indicates that data needs to be normalized before training.\n", "\n", "# Init linear regression instance.\n", "linear_regression = LinearRegression(x, y, polynomial_degree, sinusoid_degree, normalize_data)\n", "\n", "# Train linear regression.\n", "(theta, cost_history) = linear_regression.train(\n", " learning_rate,\n", " regularization_param,\n", " num_iterations\n", ")\n", "\n", "# Print training results.\n", "print('Initial cost: {:.2f}'.format(cost_history[0]))\n", "print('Optimized cost: {:.2f}'.format(cost_history[-1]))\n", "\n", "# Print model parameters\n", "theta_table = pd.DataFrame({'Model Parameters': theta.flatten()})\n", "theta_table" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Analyze Gradient Descent Progress\n", "\n", "The plot below illustrates how the cost function value changes over each iteration. You should see it decreasing. \n", "\n", "In case if cost function value increases it may mean that gradient descent missed the cost function minimum and with each step it goes further away from it. In this case you might want to reduce the learning rate parameter (the size of the gradient step).\n", "\n", "From this plot you may also get an understanding of how many iterations you need to get an optimal value of the cost function. In current example you may see that there is no much sense to increase the number of gradient descent iterations over 500 since it will not reduce cost function significantly. " ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Plot gradient descent progress.\n", "plt.plot(range(num_iterations), cost_history)\n", "plt.xlabel('Iterations')\n", "plt.ylabel('Cost')\n", "plt.title('Gradient Descent Progress')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Plot the Model Predictions\n", "\n", "Since our model is trained now we may plot its predictions over the training and test datasets to see how well it fits the data." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Get model predictions for the trainint set.\n", "predictions_num = 1000\n", "x_predictions = np.linspace(x.min(), x.max(), predictions_num).reshape(predictions_num, 1);\n", "y_predictions = linear_regression.predict(x_predictions)\n", "\n", "# Plot training data with predictions.\n", "plt.scatter(x, y, label='Training Dataset')\n", "plt.plot(x_predictions, y_predictions, 'r', label='Prediction')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You may see from the plot how well our model predicts the training set examples." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.0" } }, "nbformat": 4, "nbformat_minor": 2 } ================================================ FILE: notebooks/linear_regression/univariate_linear_regression_demo.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Univariate Linear Regression Demo\n", "\n", "_Source: 🤖[Homemade Machine Learning](https://github.com/trekhleb/homemade-machine-learning) repository_\n", "\n", "> ☝Before moving on with this demo you might want to take a look at:\n", "> - 📗[Math behind the Linear Regression](https://github.com/trekhleb/homemade-machine-learning/tree/master/homemade/linear_regression)\n", "> - ⚙️[Linear Regression Source Code](https://github.com/trekhleb/homemade-machine-learning/blob/master/homemade/linear_regression/linear_regression.py)\n", "\n", "**Linear regression** is a linear model, e.g. a model that assumes a linear relationship between the input variables `(x)` and the single output variable `(y)`. More specifically, that output variable `(y)` can be calculated from a linear combination of the input variables `(x)`.\n", "\n", "**Univariate Linear Regression** is a linear regression that has only _one_ input parameter and one output label.\n", "\n", "> **Demo Project:** In this demo we will build a model that will predict `Happiness.Score` for the countries based on `Economy.GDP.per.Capita` parameter." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# To make debugging of linear_regression module easier we enable imported modules autoreloading feature.\n", "# By doing this you may change the code of linear_regression library and all these changes will be available here.\n", "%load_ext autoreload\n", "%autoreload 2\n", "\n", "# Add project root folder to module loading paths.\n", "import sys\n", "sys.path.append('../..')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Import Dependencies\n", "\n", "- [pandas](https://pandas.pydata.org/) - library that we will use for loading and displaying the data in a table\n", "- [numpy](http://www.numpy.org/) - library that we will use for linear algebra operations\n", "- [matplotlib](https://matplotlib.org/) - library that we will use for plotting the data\n", "- [linear_regression](https://github.com/trekhleb/homemade-machine-learning/blob/master/src/linear_regression/linear_regression.py) - custom implementation of linear regression" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# Import 3rd party dependencies.\n", "import numpy as np\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "\n", "# Import custom linear regression implementation.\n", "from homemade.linear_regression import LinearRegression" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Load the Data\n", "\n", "In this demo we will use [World Happindes Dataset](https://www.kaggle.com/unsdsn/world-happiness#2017.csv) for 2017." ] }, { "cell_type": "code", "execution_count": 3, "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", "
CountryHappiness.RankHappiness.ScoreWhisker.highWhisker.lowEconomy..GDP.per.Capita.FamilyHealth..Life.Expectancy.FreedomGenerosityTrust..Government.Corruption.Dystopia.Residual
0Norway17.5377.5944457.4795561.6164631.5335240.7966670.6354230.3620120.3159642.277027
1Denmark27.5227.5817287.4622721.4823831.5511220.7925660.6260070.3552800.4007702.313707
2Iceland37.5047.6220307.3859701.4806331.6105740.8335520.6271630.4755400.1535272.322715
3Switzerland47.4947.5617727.4262271.5649801.5169120.8581310.6200710.2905490.3670072.276716
4Finland57.4697.5275427.4104581.4435721.5402470.8091580.6179510.2454830.3826122.430182
5Netherlands67.3777.4274267.3265741.5039451.4289390.8106960.5853840.4704900.2826622.294804
6Canada77.3167.3844037.2475971.4792041.4813490.8345580.6111010.4355400.2873722.187264
7New Zealand87.3147.3795107.2484901.4057061.5481950.8167600.6140620.5000050.3828172.046456
8Sweden97.2847.3440957.2239051.4943871.4781620.8308750.6129240.3853990.3843992.097538
9Australia107.2847.3566517.2113491.4844151.5100420.8438870.6016070.4776990.3011842.065211
\n", "
" ], "text/plain": [ " Country Happiness.Rank Happiness.Score Whisker.high Whisker.low \\\n", "0 Norway 1 7.537 7.594445 7.479556 \n", "1 Denmark 2 7.522 7.581728 7.462272 \n", "2 Iceland 3 7.504 7.622030 7.385970 \n", "3 Switzerland 4 7.494 7.561772 7.426227 \n", "4 Finland 5 7.469 7.527542 7.410458 \n", "5 Netherlands 6 7.377 7.427426 7.326574 \n", "6 Canada 7 7.316 7.384403 7.247597 \n", "7 New Zealand 8 7.314 7.379510 7.248490 \n", "8 Sweden 9 7.284 7.344095 7.223905 \n", "9 Australia 10 7.284 7.356651 7.211349 \n", "\n", " Economy..GDP.per.Capita. Family Health..Life.Expectancy. Freedom \\\n", "0 1.616463 1.533524 0.796667 0.635423 \n", "1 1.482383 1.551122 0.792566 0.626007 \n", "2 1.480633 1.610574 0.833552 0.627163 \n", "3 1.564980 1.516912 0.858131 0.620071 \n", "4 1.443572 1.540247 0.809158 0.617951 \n", "5 1.503945 1.428939 0.810696 0.585384 \n", "6 1.479204 1.481349 0.834558 0.611101 \n", "7 1.405706 1.548195 0.816760 0.614062 \n", "8 1.494387 1.478162 0.830875 0.612924 \n", "9 1.484415 1.510042 0.843887 0.601607 \n", "\n", " Generosity Trust..Government.Corruption. Dystopia.Residual \n", "0 0.362012 0.315964 2.277027 \n", "1 0.355280 0.400770 2.313707 \n", "2 0.475540 0.153527 2.322715 \n", "3 0.290549 0.367007 2.276716 \n", "4 0.245483 0.382612 2.430182 \n", "5 0.470490 0.282662 2.294804 \n", "6 0.435540 0.287372 2.187264 \n", "7 0.500005 0.382817 2.046456 \n", "8 0.385399 0.384399 2.097538 \n", "9 0.477699 0.301184 2.065211 " ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Load the data.\n", "data = pd.read_csv('../../data/world-happiness-report-2017.csv')\n", "\n", "# Print the data table.\n", "data.head(10)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Print histograms for each feature to see how they vary.\n", "histohrams = data.hist(grid=False, figsize=(10, 10))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Split the Data Into Training and Test Subsets\n", "\n", "In this step we will split our dataset into _training_ and _testing_ subsets (in proportion 80/20%).\n", "\n", "Training data set will be used for training of our linear model. Testing dataset will be used for validating of the model. All data from testing dataset will be new to model and we may check how accurate are model predictions." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "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9Xud8C61O+qY8OhKgJSU87zltVz/+Grq6vc2tXv946tTbrcQyHmTTjbZvn071dXVVFdX07lzZ7p27dr0ec+ePb7auPTSS1m/fn3MOvfeey8PPvhgOkRm8ODB9OjRg759+9KzZ0+uuuoqdu7cGfOcxsZGpk2blpb+w3n88cdZt25d2ts1CoObnlzbpOxD1O9Vbnpybczz5i2vZdC0hRw28SkGTVvIvOW1zY5PX7C+SdmHqKvfy/QFsf8PiwGb4cegQ4cOrFixAoApU6aw//77c8011zSro6qoKiUl3mPn73//+7j9XHnllakLG8bs2bObBqVrr72W0aNH88ILL0StH1L4EydOTKscjz/+OCUlJfTs2TOt7Rp5yKo58MJU2LkJ2naDIZP4bLd39sjPdtdHbcbP7H3zDu+cNdHKi4mCm+HHG/3TwTvvvEOvXr347ne/S+/evfn4448ZO3YsNTU19O7dm6lTpzbVHTx4MCtWrKChoYGqqiomTpxIv379OP744/n0008BuPHGG7nzzjub6k+cOJGBAwfSo0cPXn31VQC+/PJLzjnnHHr16sW5555LTU1N02AUjdatW/PLX/6SDRs2sHatM2saOXIkRx99NL1792bWLCf3xsSJE9m1axfV1dVcfPHFUes1NDTwve99jz59+nDUUUdx9913A7BhwwaGDRvG0Ucfzbe//W3efvttXn75ZZ5++mnGjx9PdXU1H3zwQZruvpF3rJoDT46DnRsBdf4+OY6zShJNcOZv9t6lqsLz3GjlxURBzfAzabtbt24df/jDH6ipqQFg2rRptG/fnoaGBk4++WTOPfdcevXq1eycnTt3cuKJJzJt2jSuvvpq7r//fs9ZtaqyZMkS5s+fz9SpU3nmmWe455576Ny5M4899hgrV65kwIABvuRs1aoVffv2Zd26dfTu3ZsHHniA9u3bs3v3bmpqajjnnHOYNm0as2bNajaAeNV7++232bZtG6tXO/d0xw4n7evYsWOZNWsWRxxxBIsWLeLHP/4xzz77LGeeeSbnnnsuo0bFynFuFDwvTIX6iNl1fR0TW89h/leDW1Svqoi+N8PP7H3CsB7N9ABARVkpE4b1SFDwwqOgZviZtN0dccQRTcoe4KGHHmLAgAEMGDCAt956izfffLPFORUVFZxxxhkAHH300VFnvaNHj25R55VXXuGCCy4AoF+/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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Split data set on training and test sets with proportions 80/20.\n", "# Function sample() returns a random sample of items.\n", "train_data = data.sample(frac=0.8)\n", "test_data = data.drop(train_data.index)\n", "\n", "# Decide what fields we want to process.\n", "input_param_name = 'Economy..GDP.per.Capita.'\n", "output_param_name = 'Happiness.Score'\n", "\n", "# Split training set input and output.\n", "x_train = train_data[[input_param_name]].values\n", "y_train = train_data[[output_param_name]].values\n", "\n", "# Split test set input and output.\n", "x_test = test_data[[input_param_name]].values\n", "y_test = test_data[[output_param_name]].values\n", "\n", "# Plot training data.\n", "plt.scatter(x_train, y_train, label='Training Dataset')\n", "plt.scatter(x_test, y_test, label='Test Dataset')\n", "plt.xlabel(input_param_name)\n", "plt.ylabel(output_param_name)\n", "plt.title('Countries Happines')\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we may visualize the data sets to see theirs shape." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Init and Train Linear Regression Model\n", "\n", "> ☝🏻This is the place where you might want to play with model configuration.\n", "\n", "- `polynomial_degree` - this parameter will allow you to add additional polynomial features of certain degree. More features - more curved the line will be.\n", "- `num_iterations` - this is the number of iterations that gradient descent algorithm will use to find the minimum of a cost function. Low numbers may prevent gradient descent from reaching the minimum. High numbers will make the algorithm work longer without improving its accuracy.\n", "- `learning_rate` - this is the size of the gradient descent step. Small learning step will make algorithm work longer and will probably require more iterations to reach the minimum of the cost function. Big learning steps may couse missing the minimum and growth of the cost function value with new iterations.\n", "- `regularization_param` - parameter that will fight overfitting. The higher the parameter, the simplier is the model will be.\n", "- `polynomial_degree` - the degree of additional polynomial features (`x1^2 * x2, x1^2 * x2^2, ...`). This will allow you to curve the predictions.\n", "- `sinusoid_degree` - the degree of sinusoid parameter multipliers of additional features (`sin(x), sin(2*x), ...`). This will allow you to curve the predictions by adding sinusoidal component to the prediction curve." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Initial cost: 226677.33\n", "Optimized cost: 3143.57\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Model Parameters
05.419745
10.932169
\n", "
" ], "text/plain": [ " Model Parameters\n", "0 5.419745\n", "1 0.932169" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Set up linear regression parameters.\n", "num_iterations = 500 # Number of gradient descent iterations.\n", "regularization_param = 0 # Helps to fight model overfitting.\n", "learning_rate = 0.01 # The size of the gradient descent step.\n", "polynomial_degree = 0 # The degree of additional polynomial features.\n", "sinusoid_degree = 0 # The degree of sinusoid parameter multipliers of additional features.\n", "\n", "# Init linear regression instance.\n", "linear_regression = LinearRegression(x_train, y_train, polynomial_degree, sinusoid_degree)\n", "\n", "# Train linear regression.\n", "(theta, cost_history) = linear_regression.train(\n", " learning_rate,\n", " regularization_param,\n", " num_iterations\n", ")\n", "\n", "# Print training results.\n", "print('Initial cost: {:.2f}'.format(cost_history[0]))\n", "print('Optimized cost: {:.2f}'.format(cost_history[-1]))\n", "\n", "# Print model parameters\n", "theta_table = pd.DataFrame({'Model Parameters': theta.flatten()})\n", "theta_table.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Analyze Gradient Descent Progress\n", "\n", "The plot below illustrates how the cost function value changes over each iteration. You should see it decreasing. \n", "\n", "In case if cost function value increases it may mean that gradient descent missed the cost function minimum and with each step it goes further away from it. In this case you might want to reduce the learning rate parameter (the size of the gradient step).\n", "\n", "From this plot you may also get an understanding of how many iterations you need to get an optimal value of the cost function. In current example you may see that there is no much sense to increase the number of gradient descent iterations over 500 since it will not reduce cost function significantly. " ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZsAAAEWCAYAAACwtjr+AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4xLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvDW2N/gAAIABJREFUeJzt3XucXVV99/HPd66ZTOaSSSZDbpAAAQwIAUKIihYREXlQ0CJgqaKiVMVWW20Ltn1ArJbWp1qpSkVBQC3U4oW8LBUjgijIJdwJiISQmHsm93syl9/zx14TDsNkZpI5Z87Mme/79Tqvs/fat7VOJvOdtfY+eysiMDMzK6SyYlfAzMxKn8PGzMwKzmFjZmYF57AxM7OCc9iYmVnBOWzMzKzgHDZWUiQtkXR6mv6spG8Xu05m5rCxQSTpQkkPSdouaW2a/rgkFeJ4EfHFiPjwQPcjaZqkkFTRyzpXSWqTtDW9fi/pa5ImDvT4hZLadHgvyz8gqUPSNklbJD0h6ezBrKOVDoeNDQpJnwa+CnwJOAhoAT4KvAGo2sc25YNWwfz4r4ioA5qAd5G189GhHDj98NuIGAM0AjcAP5A0tvtKvQXxgcj3/qz4HDZWcJIagKuBj0fE7RGxNTKPR8RFEbE7rXeTpOsk3SlpO/BmSf9H0uPpL+tlkq7qtu/3SVoqab2kv+u27CpJ38uZnyvpAUmbJD0p6dScZfdK+ryk+1PP5OeSxqfF96X3Temv/Nf11t6IaIuIhcAFQCvw6ZzjnJ16CJtSXY7NWfa3klak4z8v6S2pvDwNCb6Ylj0qaWpadpSk+ZI2pG3Oz9nfTZK+Lul/0nYPSTosLetq05OpTRf00aZO4EagBjhM0qmSlqc6rwa+k/b7EUmLUn3mSZqUU58zUh03S/qGpF9J+nBa9oH02X9F0nrgqlT+IUnPSdoo6S5Jh6RypXXXpp+NpyUdk5adJenZ1OYVkj7TW9tskESEX34V9AWcCbQDFX2sdxOwmay3UwaMAk4FXpvmjwXWAOem9WcC24A3AdXAl9NxTk/LrwK+l6YnA+uBs9K+3prmm9Pye4EXgSPIfqHeC1yTlk0Dorf65x6rW/nVwENp+nhgLXAyUA5cDCxJdT8SWAZMyjnmYWn6r4Gn0zoCjgPGAbVpmw8CFWn/64CZOZ/nemBOWv594LacugVweC9t+gDwmzRdAXwS2Ao0pH+XduCfU/1rgNPS8U9IZf8O3Je2Hw9sAd6ds6824MM5x2oH/jwtrwHOARYBr0llfw88kNZ/G/AoWY9LaZ2Jadkq4I1peixwQrH/D/gV7tnYoBgPrIuI9q6CnB7GTklvyln3joi4PyI6I2JXRNwbEU+n+aeAW4E/SuueB/w0Iu6LrHf0D0DnPurwp8CdEXFn2td8YAFZ+HT5TkT8PiJ2Aj8AZuWh7SvJhtUALgW+GREPRURHRNwM7AbmAh1kv6BnSqqMiCUR8WLa7sPA30fE85F5MiLWA2cDSyLiOxHRHhGPAz8E3pNz/B9HxMPps//+AbRprqRNwGrgvcC7ImJzWtYJXBkRu9NndhFwY0Q8lv49rgBeJ2ka2ee8MCJ+lOpybdrnKz6riPj31JadZMOs/xQRz6VtvgjMSr2bNqAOOApQWmdV2k9b+hzrI2JjRDy2n222AnDY2GBYD4zPHYePiNdHRGNalvtzuCx3Q0knS7pHUqukzWS/gLqGtyblrh8R29P+enII8J4UcJvSL9BTgNzzKbm//HYAY/ankfswGdiQU4dPd6vDVLLezCLgU2Q9pLWSbssZgppK1uvqqU0nd9vfRWTnivLVpgcjojEixkfE3Ij4Rc6y1ojYlTM/CVjaNRMR28j+PSbz6n+rAJZ3O9aybvOHAF/NadsGsl7M5Ij4JfA14Otkn9f1kurTdn9MFm5L01Bdr8OeNjgcNjYYfkv2F/w5/Vi3+23I/xOYB0yNiAbgP8h+4UA2XDK1a0VJo8mGl3qyDPhu+sXZ9aqNiGsOoE79IqkMeAfw65w6fKFbHUZHxK0AEfGfEXEK2S/ZIBui6trusH206Vfd9jcmIj52IPU9AN0/l5VkdQdAUi3Zv8cKsn+rKTnLlDu/j/0tA/6sW/tqIuIBgIi4NiJOJBtOPYJsuJGIeCQizgEmAD8h66VakTlsrOAiYhPwOeAbks6TVCepTNIssvMOvakDNkTELklzgD/JWXY7cLakUyRVkZ0f2dfP9PeAd0h6WzrhPiqd5O7+C68nrWRDRof2Y10kVUh6DdmQ30Fk55IAvgV8NPXWJKlW2QUQdZKOlHSapGpgF7CTl4cEvw18XtKMtN2xksYBPwWOUHaRRGV6nZSO3R9r+tumfroV+KCkWakdXyQ7X7UE+B/gtZLOTT3cy3hlD6wn/wFcIeloyC40kfSeNH1S+hwrge1kn1mnpCpJF0lqiIg2svNE+xpatUHksLFBERH/AvwV8Ddkv+TWAN8E/hZ4oJdNPw5cLWkr8H/J+Ss1siu+LiPr/awCNvLqoZmudZeR9aw+SxYey8j+Eu7z/0BE7AC+ANyfhnTm7mPVCyRtI7vIYR7ZENKJEbEy7WcB8BGy4Z+NZCe/P5C2rQauITvBvprsr/Ir0rIvp3b/nOyX5w1ATURsBc4ALiTrVazm5RP2/XEVcHNq0/l9rdyXNMT2D2TnjVaR9cYuTMvWkZ1L+heyz2Um2Tmz3b3s78dk7blN0hbgGeDtaXE9WXhvJBu6W092WT3A+4AlaZuPkg0tWpEpGzo1Mxs8aYhxOXBRRNxT7PpY4blnY2aDIg1hNqYhts+SnXt7sMjVskHisDGzwfI6sqvq1pFdOHFuusTZRgAPo5mZWcG5Z2NmZgXnm90l48ePj2nTphW7GmZmw8qjjz66LiKa+1rPYZNMmzaNBQsWFLsaZmbDiqSlfa/lYTQzMxsEDhszMys4h42ZmRWcw8bMzArOYWNmZgXnsDEzs4Jz2JiZWcE5bAbol79bwzfuXVTsapiZDWkOmwG67/fruO6enp7Ya2ZmXRw2AzSutoqtu9vZ3d5R7KqYmQ1ZDpsBahpTBcCG7XuKXBMzs6HLYTNA42qzsFm/zWFjZrYvDpsBaqrNHvfuno2Z2b45bAaoqdbDaGZmfXHYDNDeYTSHjZnZPjlsBqihppLyMrFh++5iV8XMbMhy2AxQWZkYO7rSw2hmZr1w2ORBU22Vr0YzM+uFwyYPmmqr3LMxM+uFwyYPxtVWO2zMzHrhsMmDptoqX41mZtYLh00ejBtTxeadbbR1dBa7KmZmQ5LDJg+6vmuzcYd7N2ZmPXHY5IFvWWNm1juHTR7svWWNL382M+uRwyYPxo3xLWvMzHrjsMkD34zTzKx3Dps8GDu6CgnWb/P90czMeuKwyYPyMtFYU+lhNDOzfShY2EiaKukeSc9KWijpk6m8SdJ8SS+k97GpXJKulbRI0lOSTsjZ18Vp/RckXZxTfqKkp9M210pSb8coJN+yxsxs3wrZs2kHPh0RM4G5wGWSZgKXA3dHxAzg7jQP8HZgRnpdClwHWXAAVwInA3OAK3PC4zrgIznbnZnK93WMghlXW+2ejZnZPhQsbCJiVUQ8lqa3As8Bk4FzgJvTajcD56bpc4BbIvMg0ChpIvA2YH5EbIiIjcB84My0rD4iHoyIAG7ptq+ejlEwzXXVrPM5GzOzHg3KORtJ04DjgYeAlohYlRatBlrS9GRgWc5my1NZb+XLeyinl2N0r9elkhZIWtDa2rr/DcvRXFdN61aHjZlZTwoeNpLGAD8EPhURW3KXpR5JFPL4vR0jIq6PiNkRMbu5uXlAx2muq2brrnZ2tXUMaD9mZqWooGEjqZIsaL4fET9KxWvSEBjpfW0qXwFMzdl8SirrrXxKD+W9HaNgxqcvdrp3Y2b2aoW8Gk3ADcBzEfHlnEXzgK4ryi4G7sgpf3+6Km0usDkNhd0FnCFpbLow4AzgrrRsi6S56Vjv77avno5RMM112f3RfN7GzOzVKgq47zcA7wOelvREKvsscA3wA0mXAEuB89OyO4GzgEXADuCDABGxQdLngUfSeldHxIY0/XHgJqAG+N/0opdjFEzzmFGAezZmZj0pWNhExG8A7WPxW3pYP4DL9rGvG4EbeyhfABzTQ/n6no5RSF09m1b3bMzMXsV3EMiTcT5nY2a2Tw6bPKksL2Ps6EqfszEz64HDJo/8XRszs545bPLIYWNm1jOHTR41j6lmnZ/WaWb2Kg6bPBo/JuvZZBfWmZlZF4dNHjXXVbOzrYPte3zLGjOzXA6bPNr7XRuftzEzewWHTR75ljVmZj1z2OTR+DHu2ZiZ9cRhk0ceRjMz65nDJo/Gjq6ivEwOGzOzbhw2eVReJsbVVrF2665iV8XMbEhx2OTZQQ2jWL3FPRszs1wOmzxrqR/F2i3u2ZiZ5XLY5FlLfTWrHTZmZq/gsMmzg+pHsWlHG7vafBcBM7MuDps8a6nPHg+9xr0bM7O9HDZ5dlBDV9j4IgEzsy4Omzw7KPVsfN7GzOxlDps8a+nq2Wx22JiZdXHY5FlddQU1leXu2ZiZ5XDY5Jmk9MVOh42ZWReHTQG01Ff7i51mZjkcNgVwUL17NmZmuRw2BdDSMIo1W3YTEcWuipnZkOCwKYCWulHsae9k4462YlfFzGxIcNgUQNcXO1f78mczM8BhUxB7b1nj59qYmQEOm4Jwz8bM7JUcNgUwoa6aMsGqTTuLXRUzsyHBYVMAleVltNSPYsUm92zMzMBhUzCTG2tY6Z6NmRngsCmYSY01rNzssDEzA4dNwUxqrGHVpl10dvqLnWZmBQsbSTdKWivpmZyyqyStkPREep2Vs+wKSYskPS/pbTnlZ6ayRZIuzymfLumhVP5fkqpSeXWaX5SWTytUG3szuXEUezo6WbfND1EzMytkz+Ym4Mweyr8SEbPS604ASTOBC4Gj0zbfkFQuqRz4OvB2YCbw3rQuwD+nfR0ObAQuSeWXABtT+VfSeoNuUmMNACt83sbMrHBhExH3ARv6ufo5wG0RsTsiXgIWAXPSa1FELI6IPcBtwDmSBJwG3J62vxk4N2dfN6fp24G3pPUHVVfYrPQVaWZmRTln8wlJT6VhtrGpbDKwLGed5alsX+XjgE0R0d6t/BX7Sss3p/VfRdKlkhZIWtDa2jrwluWYPLYrbNyzMTMb7LC5DjgMmAWsAv51kI//ChFxfUTMjojZzc3Ned13/ahK6qorPIxmZsYgh01ErImIjojoBL5FNkwGsAKYmrPqlFS2r/L1QKOkim7lr9hXWt6Q1h90kxprHDZmZgxy2EiamDP7LqDrSrV5wIXpSrLpwAzgYeARYEa68qyK7CKCeZE9KOYe4Ly0/cXAHTn7ujhNnwf8Mor0YJlJjaM8jGZmBlT0vcqBkXQrcCowXtJy4ErgVEmzgACWAH8GEBELJf0AeBZoBy6LiI60n08AdwHlwI0RsTAd4m+B2yT9I/A4cEMqvwH4rqRFZBcoXFioNvZlUmMNTyzbVKzDm5kNGQULm4h4bw/FN/RQ1rX+F4Av9FB+J3BnD+WLeXkYLrd8F/Ce/apsgUxqrGHjjjZ27GlndFXBPmozsyHPdxAooCljffmzmRk4bApqcvquzbKNO4pcEzOz4nLYFNDBTaMBWL7BYWNmI5vDpoCa66qprijjDw4bMxvhHDYFJImDm0Y7bMxsxHPYFFgWNv6ujZmNbA6bApvaNJplG3ZQpO+VmpkNCQ6bAju4aTTbdrezcUdbsatiZlY0DpsC67oizedtzGwkc9gU2MHjsrBZun57kWtiZlY8DpsCmzo2C5tl7tmY2QjmsCmwmqpymuuqPYxmZiOaw2YQ+Ls2ZjbSOWwGwcFNo1nm79qY2QjmsBkEBzeNZuXmnexu7yh2VczMisJhMwgOGTeaCNy7MbMRy2EzCA5tHgPAS+t8+bOZjUz9ChtJ3+1PmfVs+vhaABa3bityTczMiqO/PZujc2cklQMn5r86pamhppLxY6rcszGzEavXsJF0haStwLGStqTXVmAtcMeg1LBETB9fy+JWh42ZjUy9hk1E/FNE1AFfioj69KqLiHERccUg1bEkTB9fy2L3bMxshOrvMNpPJdUCSPpTSV+WdEgB61VyDm0ew7ptu9myy3d/NrORp79hcx2wQ9JxwKeBF4FbClarEtR1kcBLHkozsxGov2HTHtnTv84BvhYRXwfqClet0nNYcwobD6WZ2QhU0c/1tkq6Angf8EZJZUBl4apVeqY2jaZMvvzZzEam/vZsLgB2Ax+KiNXAFOBLBatVCaquKGfK2NG+SMDMRqR+hU0KmO8DDZLOBnZFhM/Z7KdDm2s9jGZmI1J/7yBwPvAw8B7gfOAhSecVsmKl6NDxY3ixdRudnVHsqpiZDar+nrP5O+CkiFgLIKkZ+AVwe6EqVoqOPGgMu9o6Wb5x597HRZuZjQT9PWdT1hU0yfr92NaSGS3ZBXzPr9la5JqYmQ2u/gbGzyTdJekDkj4A/A9wZ+GqVZpmTMju/vx7h42ZjTC9DqNJOhxoiYi/lvRu4JS06LdkFwzYfqgbVcmkhlG84LAxsxGmr3M2/wZcARARPwJ+BCDptWnZOwpauxJ0xEF1PL/G37Uxs5Glr2G0loh4unthKptWkBqVuCNa6nixdRsdviLNzEaQvsKmsZdlNfmsyEgxY8IY9rR3snS9v29jZiNHX2GzQNJHuhdK+jDwaG8bSrpR0lpJz+SUNUmaL+mF9D42lUvStZIWSXpK0gk521yc1n9B0sU55SdKejptc60k9XaMoeLIg7Ir0nyRgJmNJH2FzaeAD0q6V9K/ptevgEuAT/ax7U3Amd3KLgfujogZwN1pHuDtwIz0upTsLtNIagKuBE4G5gBX5oTHdcBHcrY7s49jDAmH770izedtzGzk6OvhaWsi4vXA54Al6fW5iHhduoVNb9veB2zoVnwOcHOavhk4N6f8lsg8CDRKmgi8DZgfERsiYiMwHzgzLauPiAfT3ahv6bavno4xJIyuqmBqU42/a2NmI0q/7iAQEfcA9+TheC0RsSpNrwZa0vRkYFnOestTWW/ly3so7+0YryLpUrKeFAcffPD+tuWAHXVQPb9btWXQjmdmVmxFuwtA6pEU9JKsvo4REddHxOyImN3c3FzIqrzCzIn1LF63nR172gftmGZmxTTYYbMmDYGR3rtugbMCmJqz3pRU1lv5lB7KezvGkHH0pHoi4LlVHkozs5FhsMNmHtB1RdnFwB055e9PV6XNBTanobC7gDMkjU0XBpwB3JWWbZE0N12F9v5u++rpGEPG0ZMbAHh25eYi18TMbHD0967P+03SrcCpwHhJy8muKrsG+IGkS4ClZI8rgOw+a2cBi4AdwAcBImKDpM8Dj6T1ro6IrosOPk52xVsN8L/pRS/HGDImNYyicXQlC1f6vI2ZjQwFC5uIeO8+Fr2lh3UDuGwf+7kRuLGH8gXAMT2Ur+/pGEOJJGZOrHfYmNmI4ccEFMnRk+p5fvVW2jo6i10VM7OCc9gUydGTGtjT0cmLrf5yp5mVPodNkRw9qR6AhSs8lGZmpc9hUySHNo9hVGUZT6/wFWlmVvocNkVSXiaOmdTAk8s3FbsqZmYF57ApollTG1m4cgt72n2RgJmVNodNEc06uJE97Z085/ukmVmJc9gU0fEHZ09L8FCamZU6h00RTWoYRXNdNU/8wWFjZqXNYVNEkpg1tZEnljlszKy0OWyKbNbURhav287mHW3FroqZWcE4bIrs+KmNADzh8zZmVsIcNkV27NRGygSPLun+BG0zs9LhsCmyMdUVHDO5gYdectiYWely2AwBc6Y18fiyTexu7yh2VczMCsJhMwTMmd7EnvZOnlru+6SZWWly2AwBJ01rAuBhD6WZWYly2AwBY2urOLKlzudtzKxkOWyGiDnTm3h0yQba/eROMytBDpshYs70Jrbv6eCZlb4pp5mVHofNEPG6w8YBcP+idUWuiZlZ/jlshojxY6o5elI99/2+tdhVMTPLO4fNEPLGGc089oeNbNvdXuyqmJnllcNmCHnTjPG0dQQPLV5f7KqYmeWVw2YIOXHaWEZVlvHrF3zexsxKi8NmCKmuKOfk6eO47wWftzGz0uKwGWLedEQzi1u384f1O4pdFTOzvHHYDDGnv2YCAPOfW1PkmpiZ5Y/DZog5ZFwtR7SMYf6zq4tdFTOzvHHYDEFvndnCI0s2smnHnmJXxcwsLxw2Q9BbZx5ER2fwy9+tLXZVzMzywmEzBB07uYEJddX8wudtzKxEOGyGoLIy8daZLdzzu1Z27PHdBMxs+HPYDFFnHzuJnW0d3P2ch9LMbPhz2AxRc6Y30VJfzbwnVxa7KmZmA1aUsJG0RNLTkp6QtCCVNUmaL+mF9D42lUvStZIWSXpK0gk5+7k4rf+CpItzyk9M+1+UttXgt3JgysvE2cdO4lfPt7J5Z1uxq2NmNiDF7Nm8OSJmRcTsNH85cHdEzADuTvMAbwdmpNelwHWQhRNwJXAyMAe4siug0jofydnuzMI3J//eedwk9nR0ctdCf+fGzIa3oTSMdg5wc5q+GTg3p/yWyDwINEqaCLwNmB8RGyJiIzAfODMtq4+IByMigFty9jWsHDulgUPGjeYnj68odlXMzAakWGETwM8lPSrp0lTWEhGr0vRqoCVNTwaW5Wy7PJX1Vr68h/JXkXSppAWSFrS2Dr2bX0rivBOm8MCL632vNDMb1ooVNqdExAlkQ2SXSXpT7sLUI4lCVyIiro+I2RExu7m5udCHOyDnzZ5CmeAHC5b1vbKZ2RBVlLCJiBXpfS3wY7JzLmvSEBjpveua3xXA1JzNp6Sy3sqn9FA+LE1sqOHUIyfw348uo72js9jVMTM7IIMeNpJqJdV1TQNnAM8A84CuK8ouBu5I0/OA96er0uYCm9Nw213AGZLGpgsDzgDuSsu2SJqbrkJ7f86+hqULTprKmi27uff5oTfUZ2bWHxVFOGYL8ON0NXIF8J8R8TNJjwA/kHQJsBQ4P61/J3AWsAjYAXwQICI2SPo88Eha7+qI2JCmPw7cBNQA/5tew9ZpR02gua6a7z64lNNntvS9gZnZEDPoYRMRi4HjeihfD7ylh/IALtvHvm4EbuyhfAFwzIArO0RUlpfxvrmH8OX5v2fR2q0cPqGu2FUyM9svQ+nSZ+vFRScfTFVFGTfev6TYVTEz228Om2Fi3Jhq3n38ZH702HI2bvdzbsxseHHYDCMfOmU6u9o6uemBJcWuipnZfnHYDCNHtNRxxswWvnP/S2zZ5fulmdnw4bAZZv7iLTPYsqudm3zuxsyGEYfNMHPM5AZOf80EbviNezdmNnw4bIahT51+BJt3tnHdvS8WuypmZv3isBmGjpncwLuOn8wNv3mJ5Rt9g04zG/ocNsPUZ952JAK+dNfzxa6KmVmfHDbD1OTGGj78xunc8cRKHlq8vtjVMTPrlcNmGLvszYczubGGz/74aXa3dxS7OmZm++SwGcZGV1Xwj+86hhdbt/Mf9y4udnXMzPbJYTPMvfnICbzjuEl87Z4XeGbF5mJXx8ysRw6bEnD1O4+mqbaKT972ODv3eDjNzIYeh00JGFtbxb++ZxYvtm7n6p8uLHZ1zMxexWFTIk6ZMZ6PnXoYtz68jO89uLTY1TEzewWHTQn5zBlHcuqRzVw1byEPv7Sh7w3MzAaJw6aElJeJr154PAc3jeZj33uUl9ZtL3aVzMwAh03Jaaip5FsXzyaAP/32Q6zYtLPYVTIzc9iUosOax3DLh+awZVcbF33rQdZu2VXsKpnZCOewKVHHTG7gpg+exNqtu3nPN3/L0vUeUjOz4nHYlLATD2niu5eczOadbfzxdQ/4S59mVjQOmxJ34iFjuf2jr6e6opzzv/lb5j25sthVMrMRyGEzAhw+YQw/+vjrmTmxnr+49XGuvOMZ37jTzAaVw2aEaKkfxa2XzuXDp0zn5t8u5Z3/fj9PLd9U7GqZ2QjhsBlBKsvL+PuzZ3LjB2azaecezv36/XzxzufYsqut2FUzsxLnsBmBTjuqhZ//5R9x/uypXH/fYt78pXv57oNLaevoLHbVzKxEOWxGqIaaSq7542OZ94k3cNiEMfzDT57hj/7lHr5z/0u+c7SZ5Z0ioth1GBJmz54dCxYsKHY1iiIiuPf5Vr5+zyIWLN1IU20V58+eygUnTWX6+NpiV8/MhjBJj0bE7D7Xc9hkRnLY5HpkyQauv28xv/zdWjo6gznTm3jncZM4Y2YLE+pHFbt6ZjbEOGz2k8PmldZu2cXtjy3n9gXLWZxu6Hn8wY2c/poW3nD4eI6ZVE9FuUdhzUY6h81+ctj0LCJ4Ye02fr5wNXctXMPT6S4EY6orOGnaWE48ZCxHT27gmEkNNNdVF7m2ZjbY+hs2FYNRGRu+JHFESx1HtNTxidNmsHbrLh5avIEHF6/nwcXruef51r3rttRXM3NiPdPHj2F6cy2Hjq9l+vhaDqofRVmZitgKMys2h43tlwl1o3jHcZN4x3GTANiyq41nV27hmRWbWbhyC8+t2sJvF69nV9vLl1FXlouW+lEcVD+Klobs/aD6UTTVVjG2tpLG0VWMHV3F2NGV1I+qdDCZlSCHjQ1I/ahK5h46jrmHjttb1tkZrNm6i5fWbeelddv5w4YdrNm8i9VbdvHsyi3c/dyaV4RRrjJBfU0ltVUV1FaXMzr3vaqc0dUVjKmuoLqijKryMqoqsldlmt5XeblEednLr7KueYmyMqgoK6OsjL3rlaVle7eRkLKenpntP4eN5V1ZmZjYUMPEhhpef9j4Vy2PCLbsbGfDjj1s3LGHTTv2sHF7W5puY/PONrbvaWfH7o7sfU8H67ftYMeeDnbsaWfb7vZ9htVgkUBk4aO981lh7nz39RCU6dXlSgvVy/YDre+AltP7Cn1v39fx+9h/H9v3tcJAj1/qvviu1zJnelNBj1GyYSPpTOCrQDnw7Yi4pshVskQSDaMraRhdyXQO7Hs8EUF7Z7CnvTN7dXR7T9Nt7Z3s7uikszPo6HpF9t4ZQUdn1hNrT+Vd63VGzrod2XsERHZwInsjeLm8a569869e1nU9TufeZa9ch675bst6/yz6WN7XHga2mL4uMhrTEQPzAAAG20lEQVR4/Qt7/L5XKH211eUFP0ZJho2kcuDrwFuB5cAjkuZFxLPFrZnliyQqy0VleRm1vgjObMgr1S9KzAEWRcTiiNgD3AacU+Q6mZmNWKUaNpOBZTnzy1PZK0i6VNICSQtaW1u7LzYzszwp1bDpl4i4PiJmR8Ts5ubmYlfHzKxklWrYrACm5sxPSWVmZlYEpRo2jwAzJE2XVAVcCMwrcp3MzEaskrwaLSLaJX0CuIvs0ucbI2JhkatlZjZilWTYAETEncCdxa6HmZmV7jCamZkNIX7EQCKpFVh6gJuPB9blsTrDgds8MrjNI8NA2nxIRPR5Oa/DJg8kLejP8xxKids8MrjNI8NgtNnDaGZmVnAOGzMzKziHTX5cX+wKFIHbPDK4zSNDwdvsczZmZlZw7tmYmVnBOWzMzKzgHDYDJOlMSc9LWiTp8mLXJ18k3ShpraRncsqaJM2X9EJ6H5vKJena9Bk8JemE4tX8wEiaKukeSc9KWijpk6m8ZNsMIGmUpIclPZna/blUPl3SQ6l9/5XuMYik6jS/KC2fVsz6HyhJ5ZIel/TTNF/S7QWQtETS05KekLQglQ3az7fDZgByngj6dmAm8F5JM4tbq7y5CTizW9nlwN0RMQO4O81D1v4Z6XUpcN0g1TGf2oFPR8RMYC5wWfq3LOU2A+wGTouI44BZwJmS5gL/DHwlIg4HNgKXpPUvATam8q+k9YajTwLP5cyXenu7vDkiZuV8p2bwfr6z56T7dSAv4HXAXTnzVwBXFLteeWzfNOCZnPnngYlpeiLwfJr+JvDentYbri/gDrLHio+kNo8GHgNOJvs2eUUq3/tzTnZz29el6Yq0nopd9/1s55T0i/U04KeASrm9Oe1eAozvVjZoP9/u2QxMv54IWkJaImJVml4NtKTpkvoc0lDJ8cBDjIA2pyGlJ4C1wHzgRWBTRLSnVXLbtrfdaflmYNzg1njA/g34G6AzzY+jtNvbJYCfS3pU0qWpbNB+vkv2rs9WWBERkkruunlJY4AfAp+KiC2S9i4r1TZHRAcwS1Ij8GPgqCJXqWAknQ2sjYhHJZ1a7PoMslMiYoWkCcB8Sb/LXVjon2/3bAZmpD0RdI2kiQDpfW0qL4nPQVIlWdB8PyJ+lIpLus25ImITcA/ZMFKjpK4/RnPbtrfdaXkDsH6QqzoQbwDeKWkJcBvZUNpXKd327hURK9L7WrI/KuYwiD/fDpuBGWlPBJ0HXJymLyY7r9FV/v50BctcYHNO13xYUNaFuQF4LiK+nLOoZNsMIKk59WiQVEN2nuo5stA5L63Wvd1dn8d5wC8jDeoPBxFxRURMiYhpZP9ffxkRF1Gi7e0iqVZSXdc0cAbwDIP5813sk1bD/QWcBfyebJz774pdnzy261ZgFdBGNl57CdlY9d3AC8AvgKa0rsiuynsReBqYXez6H0B7TyEb034KeCK9zirlNqd2HAs8ntr9DPB/U/mhwMPAIuC/gepUPirNL0rLDy12GwbQ9lOBn46E9qb2PZleC7t+Vw3mz7dvV2NmZgXnYTQzMys4h42ZmRWcw8bMzArOYWNmZgXnsDEzs4Jz2JjliaRt6X2apD/J874/223+gXzu36zQHDZm+TcN2K+wyfn2+r68Imwi4vX7WSezonLYmOXfNcAb03ND/jLd6PJLkh5Jzwb5MwBJp0r6taR5wLOp7CfpRokLu26WKOkaoCbt7/uprKsXpbTvZ9KzSi7I2fe9km6X9DtJ3093SUDSNcqe2/OUpP836J+OjUi+EadZ/l0OfCYizgZIobE5Ik6SVA3cL+nnad0TgGMi4qU0/6GI2JBuHfOIpB9GxOWSPhERs3o41rvJnkNzHDA+bXNfWnY8cDSwErgfeIOk54B3AUdFRHTdqsas0NyzMSu8M8juM/UE2WMLxpE9lArg4ZygAfgLSU8CD5LdCHEGvTsFuDUiOiJiDfAr4KScfS+PiE6y2+9MI7tF/i7gBknvBnYMuHVm/eCwMSs8AX8e2RMSZ0XE9Ijo6tls37tSdsv708ke1nUc2T3LRg3guLtzpjvIHg7WTna339uBs4GfDWD/Zv3msDHLv61AXc78XcDH0iMMkHREuvNudw1kjyDeIekossdTd2nr2r6bXwMXpPNCzcCbyG4Y2aP0vJ6GiLgT+Euy4TezgvM5G7P8ewroSMNhN5E9L2Ua8Fg6Sd8KnNvDdj8DPprOqzxPNpTW5XrgKUmPRXZL/C4/Jnv+zJNkd63+m4hYncKqJ3XAHZJGkfW4/urAmmi2f3zXZzMzKzgPo5mZWcE5bMzMrOAcNmZmVnAOGzMzKziHjZmZFZzDxszMCs5hY2ZmBff/AWn7B/JBE2keAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Plot gradient descent progress.\n", "plt.plot(range(num_iterations), cost_history)\n", "plt.xlabel('Iterations')\n", "plt.ylabel('Cost')\n", "plt.title('Gradient Descent Progress')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Plot the Model Predictions\n", "\n", "Since our model is trained now we may plot its predictions over the training and test datasets to see how well it fits the data." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Get model predictions for the trainint set.\n", "predictions_num = 100\n", "x_predictions = np.linspace(x_train.min(), x_train.max(), predictions_num).reshape(predictions_num, 1);\n", "y_predictions = linear_regression.predict(x_predictions)\n", "\n", "# Plot training data with predictions.\n", "plt.scatter(x_train, y_train, label='Training Dataset')\n", "plt.scatter(x_test, y_test, label='Test Dataset')\n", "plt.plot(x_predictions, y_predictions, 'r', label='Prediction')\n", "plt.xlabel('Economy..GDP.per.Capita.')\n", "plt.ylabel('Happiness.Score')\n", "plt.title('Countries Happines')\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Calculate the value of cost function for the training and test data set. The less this value is, the better." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Train cost: 3143.57\n", "Test cost: 311.14\n" ] } ], "source": [ "train_cost = linear_regression.get_cost(x_train, y_train, regularization_param)\n", "test_cost = linear_regression.get_cost(x_test, y_test, regularization_param)\n", "\n", "print('Train cost: {:.2f}'.format(train_cost))\n", "print('Test cost: {:.2f}'.format(test_cost))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's now render the table of prediction values that our trained model does for unknown data (for test dataset). You should see that predicted happiness score should be quite similar to the known happiness score fron the test dataset." ] }, { "cell_type": "code", "execution_count": 10, "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", "
Economy GDP per CapitaTest Happiness ScorePredicted Happiness ScorePrediction Diff
01.4435727.4696.7754030.693597
11.4057067.3146.6800270.633974
21.2527856.6526.2948500.357150
31.1073536.6355.9285390.706461
41.5306246.3446.994667-0.650667
50.9097846.0035.4309050.572094
61.3208795.6116.466366-0.855366
71.1018035.5255.914559-0.389559
80.9325375.4935.4882150.004785
90.9255795.3115.470689-0.159689
\n", "
" ], "text/plain": [ " Economy GDP per Capita Test Happiness Score Predicted Happiness Score \\\n", "0 1.443572 7.469 6.775403 \n", "1 1.405706 7.314 6.680027 \n", "2 1.252785 6.652 6.294850 \n", "3 1.107353 6.635 5.928539 \n", "4 1.530624 6.344 6.994667 \n", "5 0.909784 6.003 5.430905 \n", "6 1.320879 5.611 6.466366 \n", "7 1.101803 5.525 5.914559 \n", "8 0.932537 5.493 5.488215 \n", "9 0.925579 5.311 5.470689 \n", "\n", " Prediction Diff \n", "0 0.693597 \n", "1 0.633974 \n", "2 0.357150 \n", "3 0.706461 \n", "4 -0.650667 \n", "5 0.572094 \n", "6 -0.855366 \n", "7 -0.389559 \n", "8 0.004785 \n", "9 -0.159689 " ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "test_predictions = linear_regression.predict(x_test)\n", "\n", "test_predictions_table = pd.DataFrame({\n", " 'Economy GDP per Capita': x_test.flatten(),\n", " 'Test Happiness Score': y_test.flatten(),\n", " 'Predicted Happiness Score': test_predictions.flatten(),\n", " 'Prediction Diff': (y_test - test_predictions).flatten()\n", "})\n", "\n", "test_predictions_table.head(10)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.0" } }, "nbformat": 4, "nbformat_minor": 2 } ================================================ FILE: notebooks/logistic_regression/logistic_regression_with_linear_boundary_demo.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Logistic Regression With Linear Boundary Demo\n", "\n", "_Source: 🤖[Homemade Machine Learning](https://github.com/trekhleb/homemade-machine-learning) repository_\n", "\n", "> ☝Before moving on with this demo you might want to take a look at:\n", "> - 📗[Math behind the Logistic Regression](https://github.com/trekhleb/homemade-machine-learning/tree/master/homemade/logistic_regression)\n", "> - ⚙️[Logistic Regression Source Code](https://github.com/trekhleb/homemade-machine-learning/blob/master/homemade/logistic_regression/logistic_regression.py)\n", "\n", "**Logistic regression** is the appropriate regression analysis to conduct when the dependent variable is dichotomous (binary). Like all regression analyses, the logistic regression is a predictive analysis. Logistic regression is used to describe data and to explain the relationship between one dependent binary variable and one or more nominal, ordinal, interval or ratio-level independent variables.\n", "\n", "Logistic Regression is used when the dependent variable (target) is categorical.\n", "\n", "For example:\n", "\n", "- To predict whether an email is spam (`1`) or (`0`).\n", "- Whether online transaction is fraudulent (`1`) or not (`0`).\n", "- Whether the tumor is malignant (`1`) or not (`0`).\n", "\n", "> **Demo Project:** In this example we will try to classify Iris flowers into tree categories (`Iris setosa`, `Iris virginica` and `Iris versicolor`) based on `petal_length` and `petal_width` parameters." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# To make debugging of logistic_regression module easier we enable imported modules autoreloading feature.\n", "# By doing this you may change the code of logistic_regression library and all these changes will be available here.\n", "%load_ext autoreload\n", "%autoreload 2\n", "\n", "# Add project root folder to module loading paths.\n", "import sys\n", "sys.path.append('../..')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Import Dependencies\n", "\n", "- [pandas](https://pandas.pydata.org/) - library that we will use for loading and displaying the data in a table\n", "- [numpy](http://www.numpy.org/) - library that we will use for linear algebra operations\n", "- [matplotlib](https://matplotlib.org/) - library that we will use for plotting the data\n", "- [logistic_regression](https://github.com/trekhleb/homemade-machine-learning/blob/master/homemade/logistic_regression/logistic_regression.py) - custom implementation of logistic regression" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# Import 3rd party dependencies.\n", "import numpy as np\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "\n", "# Import custom logistic regression implementation.\n", "from homemade.logistic_regression import LogisticRegression" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Load the Data\n", "\n", "In this demo we will use [Iris data set](http://archive.ics.uci.edu/ml/datasets/Iris).\n", "\n", "The data set consists of several samples from each of three species of Iris (`Iris setosa`, `Iris virginica` and `Iris versicolor`). Four features were measured from each sample: the length and the width of the sepals and petals, in centimeters. Based on the combination of these four features, [Ronald Fisher](https://en.wikipedia.org/wiki/Iris_flower_data_set) developed a linear discriminant model to distinguish the species from each other." ] }, { "cell_type": "code", "execution_count": 3, "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", "
sepal_lengthsepal_widthpetal_lengthpetal_widthclass
05.13.51.40.2SETOSA
14.93.01.40.2SETOSA
24.73.21.30.2SETOSA
34.63.11.50.2SETOSA
45.03.61.40.2SETOSA
55.43.91.70.4SETOSA
64.63.41.40.3SETOSA
75.03.41.50.2SETOSA
84.42.91.40.2SETOSA
94.93.11.50.1SETOSA
\n", "
" ], "text/plain": [ " sepal_length sepal_width petal_length petal_width class\n", "0 5.1 3.5 1.4 0.2 SETOSA\n", "1 4.9 3.0 1.4 0.2 SETOSA\n", "2 4.7 3.2 1.3 0.2 SETOSA\n", "3 4.6 3.1 1.5 0.2 SETOSA\n", "4 5.0 3.6 1.4 0.2 SETOSA\n", "5 5.4 3.9 1.7 0.4 SETOSA\n", "6 4.6 3.4 1.4 0.3 SETOSA\n", "7 5.0 3.4 1.5 0.2 SETOSA\n", "8 4.4 2.9 1.4 0.2 SETOSA\n", "9 4.9 3.1 1.5 0.1 SETOSA" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Load the data.\n", "data = pd.read_csv('../../data/iris.csv')\n", "\n", "# Print the data table.\n", "data.head(10)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Plot the Data\n", "\n", "Let's take two parameters `petal_length` and `petal_width` for each flower into consideration and plot the dependency of the Iris class on these two parameters." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "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V5599tma/g1N351NO3bsoKysjM6dO/Phhx/yrW99K9shSYalYxGbMMcMWz+RSJ1FJmoykpWtGAszMXy+LrH2kEaOHMmcOXNYtGgR27dvr/NXezxz587lvffeo6ysjKuvvrqmvXr67muuuYa7776bJ554Imq//v3789prr1FZWRl7yJppu2vbvHkz77//Pr169YobR8+ePXn//ffZsmVLVHvt6b6rnzG89957uDv33HNPo+9Pmpd0LGIT5phh6ycSqbPIRE1GsrIVY2Emhr27JdYe0l577cWJJ57IRRddVPPXfxgtW7bk9ttvZ8qUKXzyySesXr2aN998s2Z79dTatfXs2ZPy8nKuvvpqPJgIcc2aNcyaNYuhQ4eyfft2pkyZAkRu/VxxxRWMGTOGPffcM24Mbdu25YILLuDyyy+vSTZTpkxh+/btUetCAOy5557ceeed/Nd//Re7d++OdzhppsIueNOqRStaWstG+4WtgQhbP5FInUUmajKSla0YCzMxDP0ttIpZe6FVm0h7kkaPHs1rr70WlRhinzFUP2SurUuXLowePZp77rmHrVu3csEFF9CvXz8OOeQQVqxYwYQJE+rsc9999/Hhhx/Sq1cvBgwYwJgxY9h3330xM5566immT5/OQQcdRO/evSkuLub666+v2XfOnDl069at5uvll1/mhhtuoLi4mN69e3PQQQcxffp0nnrqKSLrLUUbNGgQhxxyiJYPLTDDDhzGhGMm0KVtFwyjS9suTDx2ItcOvjaq7drB1zLx2ImN9ptwzIRQD1HjnTfevmH7Jdo3W7IVY8FOu53qUUkSTdNui+QeTbvdmEPOUiIQyVHpqFnIJbked+EmBhHJSemoWcgl+RB3YT5jEJGclY6ahVySD3ErMYhITklHzUIuyYe4lRhEJKeko2Yhl+RD3EoMIpJT0lGzkEvyIW4lhhQ58cQTee6556Labr/9dk477TQGDBgAwN/+9jf23ntvysrK6Nu3Lz//+c+j+s+ePZsjjjiCvn37UlZWxtlnn837778PwJgxY3j88ccBGDJkCOXlX404q6ioYMiQITXnGD58eM22Z599lvLycvr168egQYO44ooros5ZVlbGOeeck5pfgkgKpKNmIZfkQ9walZQiDU27ffHFF9e0HXfcccycOZMdO3YwaNAgvvvd7zJ48GCWLVvGT3/6U5555pma8f/PPPMMa9asoXv37nXO99FHH/Hss89y2mmn1RvTsmXLuOSSS5g1axZ9+/alsrKSSZMm1WxfuXIllZWVzJs3j23bttG2bdtU/CpEkjbswGGhC99y6QM1rFyPu2ATQ6rHESc67XabNm0oKytj/fr1ANx4441ceeWVUUVhDc1eOm7cOK677roGE8NNN93EVVddRd++fYHI/Es/+clParZPmzaN888/n5UrVzJjxgzOPffchN6zSKIysZZDrtUI5Fo8YRRkYkjHOOLa026PHDkyatrteD799FPefPNNjj/+eCAyVXbsraWGHH300Tz11FPMnTuXdu3axe2zbNmyOreOanv00Ud5/vnnWbVqFXfddZcSg6RVvP/vwq7bEK9fPtQ25Fo8YRXkM4Z0jSOub9rt2ubNm8ehhx5K165dOeWUU+jcue5IhE2bNlFWVkbv3r255ZZb6j3f+PHjmThxYpNiraiooKSkhO7duzN06FAWL17MJ5980qRjiYQR7/+7sOs2xOuXD7UNuRZPWAWZGNI1jjjMtNvHHXccr732GsuXL+f++++vWSqzf//+LFq0CICOHTuyZMkSxo4dy9atW+s930knncSOHTuYP39+3O39+/evM/12tWnTprFq1Sp69OhBz5492bx5c52pvUVSKRNrOeRajUCuxRNWQSaGdI0jTmTa7dLSUn71q19x4403AvCLX/yC6667jpUrV9b02b59e6PnHD9+PDfddFPcbePGjeP666/njTfeAKCqqop7772XqqoqHnvsMZYuXcqaNWtYs2YNM2bM0EypklaZWMsh12oEci2esAoyMaRzHHG8abfr8+///u/84x//YM2aNQwcOJA77riD73//+/Tp04fBgwezcuXKRu/7f/vb36ZTp05xtx1yyCHcfvvtjB49moMPPpgBAwbwzjvvMG/ePLp27cp+++1X0/f4449nxYoVbNiwIbE3LBJSvP/vwq7bEK9fPtQ25Fo8YRXstNv5OFIgn2jabYlHo5KyG0/YabcLNjFIeunfQyT35MR6DGa2PzAF+DrgwCR3vyOmjwF3AN8GtgNj3H1ROuMSkWhh/5IfduCwhPo2Z8lcCeTSVUQ8ab1iMLMuQBd3X2Rm7YCFwOnuvqJWn28DPyWSGI4E7nD3Ixs6bn1XDH379q23bkAyx91ZtWqVrhjyROxYe4jc069dNwCRe+Mj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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# List of suppported Iris classes.\n", "iris_types = ['SETOSA', 'VERSICOLOR', 'VIRGINICA']\n", "\n", "# Pick the Iris parameters for consideration.\n", "x_axis = 'petal_length'\n", "y_axis = 'petal_width'\n", "\n", "# Plot the scatter for every type of Iris.\n", "for iris_type in iris_types:\n", " plt.scatter(\n", " data[x_axis][data['class'] == iris_type],\n", " data[y_axis][data['class'] == iris_type],\n", " label=iris_type\n", " )\n", "\n", "# Plot the data. \n", "plt.xlabel(x_axis + ' (cm)')\n", "plt.ylabel(y_axis + ' (cm)')\n", "plt.title('Iris Types')\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Prepara the Data for Training\n", "\n", "Let's extract `petal_length` and `petal_width` data and form a training feature set and let's also form out training labels set." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "# Get total number of Iris examples.\n", "num_examples = data.shape[0]\n", "\n", "# Get features.\n", "x_train = data[[x_axis, y_axis]].values.reshape((num_examples, 2))\n", "# Get labels.\n", "y_train = data['class'].values.reshape((num_examples, 1))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Init and Train Logistic Regression Model\n", "\n", "> ☝🏻This is the place where you might want to play with model configuration.\n", "\n", "- `polynomial_degree` - this parameter will allow you to add additional polynomial features of certain degree. More features - more curved the line will be.\n", "- `max_iterations` - this is the maximum number of iterations that gradient descent algorithm will use to find the minimum of a cost function. Low numbers may prevent gradient descent from reaching the minimum. High numbers will make the algorithm work longer without improving its accuracy.\n", "- `regularization_param` - parameter that will fight overfitting. The higher the parameter, the simplier is the model will be.\n", "- `polynomial_degree` - the degree of additional polynomial features (`x1^2 * x2, x1^2 * x2^2, ...`). This will allow you to curve the predictions.\n", "- `sinusoid_degree` - the degree of sinusoid parameter multipliers of additional features (`sin(x), sin(2*x), ...`). This will allow you to curve the predictions by adding sinusoidal component to the prediction curve." ] }, { "cell_type": "code", "execution_count": 6, "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", "
Theta 1Theta 2Theta 3
SETOSA30.291853-8.404206-12.313125
VERSICOLOR-2.8589041.546523-3.107221
VIRGINICA-45.3495405.76629410.458614
\n", "
" ], "text/plain": [ " Theta 1 Theta 2 Theta 3\n", "SETOSA 30.291853 -8.404206 -12.313125\n", "VERSICOLOR -2.858904 1.546523 -3.107221\n", "VIRGINICA -45.349540 5.766294 10.458614" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Set up linear regression parameters.\n", "max_iterations = 1000 # Max number of gradient descent iterations.\n", "regularization_param = 0 # Helps to fight model overfitting.\n", "polynomial_degree = 0 # The degree of additional polynomial features.\n", "sinusoid_degree = 0 # The degree of sinusoid parameter multipliers of additional features.\n", "\n", "# Init logistic regression instance.\n", "logistic_regression = LogisticRegression(x_train, y_train, polynomial_degree, sinusoid_degree)\n", "\n", "# Train logistic regression.\n", "(thetas, costs) = logistic_regression.train(regularization_param, max_iterations)\n", "\n", "# Print model parameters that have been learned.\n", "pd.DataFrame(thetas, columns=['Theta 1', 'Theta 2', 'Theta 3'], index=['SETOSA', 'VERSICOLOR', 'VIRGINICA'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Analyze Gradient Descent Progress\n", "\n", "The plot below illustrates how the cost function value changes over each iteration. You should see it decreasing. \n", "\n", "In case if cost function value increases it may mean that gradient descent missed the cost function minimum and with each step it goes further away from it.\n", "\n", "From this plot you may also get an understanding of how many iterations you need to get an optimal value of the cost function. " ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAELCAYAAAA2mZrgAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4xLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvDW2N/gAAIABJREFUeJzt3Xl8VOX1+PHPmUnCZCNhCSQhLBHCEhaDRlqrIi5QtRbUUgVtK9WKtl+sW92ta21darULv1ZcqlYLtbZW6oJFpQrWLWzKIrLIEvadhJBt5vz+mJtxEiYLITeTZM779ZpX5j73zr3nOpiT+9z7nEdUFWOMMQbAE+0AjDHGtB2WFIwxxoRYUjDGGBNiScEYY0yIJQVjjDEhlhSMMcaEuJoUROQsEVklImtE5JYI6x8VkSXO6wsR2edmPMYYYxombo1TEBEv8AUwFigGPgEmq+qKera/Ghipqpe5EpAxxphGuXmlMApYo6rrVLUSmAVMaGD7ycBMF+MxxhjTCDeTQi9gU9hysdN2GBHpC+QC77gYjzHGmEbERTsAxyTgJVX1R1opIlOBqQDJycnHDx48uDVjM8aYdm/hwoW7VDWjse3cTAqbgd5hyzlOWySTgP+rb0eqOgOYAVBYWKhFRUUtFaMxxsQEEdnQlO3c7D76BMgTkVwRSSD4i3923Y1EZDDQBfjAxViMMcY0gWtJQVWrgWnAm8BK4EVVXS4i94rI+LBNJwGz1Mq1GmNM1Ll6T0FVXwder9N2Z53lu92MwRhjTNO1lRvNxph2rKqqiuLiYsrLy6MdSszz+Xzk5OQQHx/frM9bUjDGHLXi4mJSU1Pp168fIhLtcGKWqrJ7926Ki4vJzc1t1j6s9pEx5qiVl5fTrVs3SwhRJiJ069btqK7YLCkYY1qEJYS24Wi/h9hJCju/gLfuBnvIyZgO6/7772fo0KGMGDGCgoICPvroI8aMGcOgQYMoKCigoKCAiRMncv/994eWvV5v6P3vfvc7AGbMmMHgwYMZPHgwo0aNYsGCBaFjvPrqq4wcOZJjjz2W/Px8Hn/88VoxFBQUMGnSpFY975YUO/cU1syFBY9CWg6c8KNoR2OMaWEffPABr776KosWLaJTp07s2rWLyspKAF544QUKCwtrbX/77bcDkJKSwpIlS0Ltr776Ko8//jgLFiyge/fuLFq0iPPOO4+PP/6Ybt26MXXqVD7++GNycnKoqKhg/fr1oc+uXLkSv9/P/PnzOXjwIMnJye6feAuLnSuFr/0YBpwJc26D7cujHY0xpoVt3bqV7t2706lTJwC6d+9Odnb2Ee/nwQcf5OGHH6Z79+4AHHfccVx66aVMnz6dkpISqqur6datGwCdOnVi0KBBoc/OnDmT73//+4wbN45XXnmlBc6q9cVOUvB44Lw/gi8NXroMKsuiHZExpgWNGzeOTZs2MXDgQH7yk5/w7rvvhtZdcskloS6iG2+8scH9LF++nOOPP75WW2FhIcuXL6dr166MHz+evn37MnnyZF544QUCgUBou7/97W9MmjSJyZMnM3Nm+yz6HDvdRwApPeCCx+Ev58Obt8K3fxvtiIzpcO7593JWbDnQovvMz+7MXd8e2uA2KSkpLFy4kPnz5zNv3jwuuugiHnjgASBy91FzPfnkk3z22We89dZb/PrXv2bu3Lk888wzFBUV0b17d/r06UOvXr247LLL2LNnD127dm2R47aW2LlSqNH/dDjpWlj4DCx/OdrRGGNakNfrZcyYMdxzzz384Q9/4B//+McR7yM/P5+FCxfWalu4cCFDh36VlIYPH851113H3LlzQ8eYOXMmn3/+Of369aN///4cOHCgWcePtti6Uqhx+h2wfj7Mvgayj4MufaMdkTEdRmN/0btl1apVeDwe8vLyAFiyZAl9+/Zl2bJlR7Sfm266iZtvvpk5c+bQrVs3lixZwjPPPMNHH31EaWkpRUVFjBkzptYxAoEAL774Ip999lnoPsa8efO47777uOKKK1r0PN0Wm0nBGw/feQoeHw3/+BH88A3wxuZ/CmM6itLSUq6++mr27dtHXFwcAwYMYMaMGUycOJFLLrmExMREIHgD+q233qp3P+PHj2fz5s184xvfQERITU3l+eefJysri5KSEh566CGuvPJKEhMTSU5O5plnnmH+/Pn06tWr1o3t0aNHs2LFCrZu3UpWVpbr599SXJuj2S0tOp/CZy/BPy6HU34GZ/y8ZfZpTAxauXIlQ4YMiXYYxhHp+xCRhara6I2V2LunEG74RBj5PZj/CKx7t/HtjTGmg4vtpABw9kPQPQ/+ORUO7op2NMYYE1WWFBKSYeLTcGgP/OsnVgbDGBPTLCkAZA6Hcb+A1W/Ch3+MdjTGGBM1MZMU1u1fx7/W/Kv+DUZNhUHnwNw7YcuS+rczxpgOLGaSwnub3uPn7/+cksqSyBuIwITpkJwRLIOxey3sL4YDW6BkG5TugIO7oWwPHNoH5QegohT81a17IsYY46KYSQqZyZkAbDu4rf6NkrrCd56APevg98fBo0PhN0PgkUHw6zx4+Bh4KBce7AsP9IZf9Qq2r3m7lc7CGBPJaaedxptvvlmr7bHHHuPss88mMTExVPeooKCA5557DoB+/foxfPhwRowYwamnnsqGDRtCn41UghtgzJgx1DwSX1paypVXXkn//v05/vjjGTNmTGi74uJiJkyYQF5eHv379+eaa64JVWz973//y7nnnnvYOVRWVnLttdcyYMAA8vLymDBhAsXFxaH1NSW+hw0bxre//W327dvXgv8FvxIzI7ZqksL2su3kdcmrf8N+J8Pl/4Gdq0ADdV56eNvSWfDCRPjmL+FrVwWvOIwxrWry5MnMmjWLb37zm6G2WbNm8dBDD7Fp06ZapbHDzZs3j+7du3PXXXfxi1/8gieeeKLBEtzhfvSjH5Gbm8vq1avxeDx8+eWXrFixAlXlggsu4Mc//jGvvPIKfr+fqVOncvvtt/Pwww/Xew633XYbJSUlrFq1Cq/Xy5///GcuuOACPvroI0SExMTE0HnUVG2tKf/dklxNCiJyFvBbwAs8qaoPRNjmQuBuQIGlqnqxG7H0TOoJNHKlUKP3qOCrKQovg5evhDm3BEtyf+sRiOt0FJEaY47UxIkTueOOO6isrCQhIYH169ezZcsWevfu3aTPn3jiiaEJdiKV4K5r7dq1fPTRR7zwwgt4PMEOl9zcXHJzc3n77bfx+Xz88Ic/BIJ/4T/66KPk5uZyzz33RDx+WVkZf/7zn/nyyy/xer0A/PCHP+Tpp5/mnXfe4Ywzzjgs3k8//bRJ53akXOs+EhEvMB04G8gHJotIfp1t8oBbgZNUdShwrVvxZCRl4BFP05LCkeiUAhf+BUbfCIv/As+Oh9KdLXsMY0yDunbtyqhRo3jjjTeA4FXChRdeiIiwdu3aWt1H8+fPP+zzc+bM4bzzzgMaLsFdY/ny5aFZ2yKtq1t6u3PnzvTp04c1a9ZEjH/NmjX06dOHzp0712qvKdkdzu/38/bbbzN+/PgG/os0n5tXCqOANaq6DkBEZgETgBVh21wBTFfVvQCqusOtYOI8cXRP7N7ySQGCczWcfgf0GBIc6/DEaTB5ZvBRV2NizRu3wLbPWnafmcPh7MM6Gmqp6UKaMGECs2bN4qmnngKgf//+9XYfnXbaaezZs4eUlBTuu+8+oP4S3FOmTGnRUzpShw4doqCggM2bNzNkyBDGjh3rynHcvNHcC9gUtlzstIUbCAwUkfdF5EOnu8k1mcmZbC/b7t4Bhn0HLpsDAT88NQ5WzHbvWMaYWiZMmMDbb7/NokWLKCsrO+yv9UjmzZvHhg0bKCgo4K677gq1N1aCe+jQoSxduhS/33/YPiOV3j5w4AAbN25kwIABEePo378/GzdupKSk9tOR4SW7a+4pbNiwAVVl+vTpjZ5fc0T7RnMckAeMAXKA90RkuKrWuq0uIlOBqQB9+vRp9sEykzL5Yu8Xzf58k2SPhKnzYNYl8OL3YcxtcOpNdgPaxI5G/qJ3S0pKCqeddhqXXXYZkydPbvLn4uLieOyxxxg+fDh33HEHO3fujFiCO1z//v0pLCzkrrvu4r777kNEWL9+PcuXL+ecc87hlltu4bnnnuMHP/gBfr+fG264gSlTppCUlBQxhuTkZC699FKuv/56/vSnP+H1ennuuecoKyvj9NNPr7VtUlISv/vd7zjvvPP4yU9+Qlxcy/4ad/NKYTMQfpcnx2kLVwzMVtUqVf0S+IJgkqhFVWeoaqGqFmZkZDQ7oJ7JPdleth3XK8OmZsKU12DEJPjvL+HvU2z6T2NaweTJk1m6dGmtpFD3nkLNDeVwWVlZTJ48menTp1NaWsqll15Kfn4+I0aMYMWKFdx9992HfebJJ59k+/btDBgwgGHDhjFlyhR69OiBiPDyyy/z97//nby8PAYOHIjP5+OXv/xl6LNvv/02OTk5odcHH3zAr371K3w+HwMHDiQvL4+///3vvPzyy0iEPyhHjhzJiBEjXJny07XS2SISR/CX/BkEk8EnwMWqujxsm7OAyap6qYh0BxYDBaq6u779Hk3p7OeWP8fDRQ+zYNIC0jqlNWsfR0QV/vc7mHuXU0rjPuh1PHRKdf/YxrQiK53dthxN6WzXuo9UtVpEpgFvEnwk9WlVXS4i9wJFqjrbWTdORFYAfuDGhhLC0QofwNYqSUEETroGMoYE5214bgIgkDEYco4PJohehdAj3yb5Mca0Ca7+JlLV14HX67TdGfZegeudl+vCB7AN6jqoNQ4ZNHAcXLcMij+B4oWwuQg+fx0WPx9cH58EWQXQ6zjIKYTMEcHR1Z3Sgk82GWNMK4mpP0+bVOrCLb40GHBm8AXBrqW962HzQiguCiaKj5+AD/4Q9iEJfi6xCySmB3/60msvx/mC04t64p2fccGf3oSv3nuc5fhEiPcFk1Cc89MbbzfBjTEhMZUUuvm6ESdx0UkKdYlA19zga/jEYFt1JWxfFiyxcWhv8FW+76v3h/bB3g1ftWmgBeLwOskiEeKcpOE5kn8WEpZUBKS+9rqJJ2y5oXUtpcmJr50kyBMuh2MnRTsK0wHFVFLwerxkJGW0jaQQSVxCsAup13GNbxsIQGUJVFeAvwoCVcGKrYEq8FeGvXfWVVdC9SGoKoeqMqh2flaVQ9UhZ92hYFtTk034QwqqBCuVNPA+0ucaXNdSmrjP9jTBkjc+2hGYDiqmkgIEu5C2lbXRpHAkPJ5g15IxxrSgmLuLmZmUyfaDLo5qNsa0uoZKZw8bNgwIlqxOS0ujoKCAwYMH87Of/azW9nPmzGHUqFEMHjyYgoICLrroIjZu3AjAlClTeOmll4Bg+ezCwq+e7CwqKmLMmDGhY4SXxX7jjTcoLCwkPz+fkSNHcsMNN9Q6ZkFBAZMmta1uwJhLCq02gM0Y02pq6h6FmzVrFrfeemuttlNOOYUlS5awePFiXn31Vd5//30Ali1bxtVXX82zzz7L559/zpIlS7jkkktYv359xOPt2LEjVHyvPsuWLWPatGk8//zzrFixgqKiolplLlauXInf72f+/PkcPHiwGWftjphLCpnJmVT4K9hbsTfaoRhjWsjEiRN57bXXQvMeNFY6u2binc2bg0UWHnzwQW677bZaA77Gjx/P6NGjI37+xhtv5P77728wpoceeojbb7+dwYMHA8F6Sj/+8Y9D62fOnMn3v/99xo0bxyuvvNL0k3VZ7CWFpCg+lmqMcUVDpbMj2bt3L6tXrw790l++fDnHHdeEBzwcJ554IgkJCcybN6/ebZYtW9ZgUb6//e1vTJo0icmTJ7tSrqK5YvJGM8D2g9vJ75bfyNbGmCP14McP8vmez1t0n4O7DubmUTc3uE19pbPDzZ8/n2OPPZbVq1dz7bXXkpmZedg2u3fv5owzzqCsrIypU6cedu+hxh133MEvfvELHnzwwSM+n6KiIrp3706fPn3o1asXl112GXv27KFr165HvK+WFnNXCj2TnRnYOsITSMaYkKaUzj7llFNYunQpy5cv56mnngrNszB06FAWLVoEQLdu3ViyZAlTp06ltLS03uOdfvrpHDp0iA8//DDi+qFDhx5WQrvGzJkz+fzzz+nXrx/9+/fnwIEDh5XnjpaYu1Lo6utKnKeNDGAzpgNq7C96txxJ6ezc3FxuueUWHnzwQWbOnMlNN93E+eefz9e//vXQfYWyssYrG99xxx1cddVVHHPMMYetu/HGG7ngggs4+eSTGThwIIFAgBkzZjB16lRefPFFPvvsM7Kzs4HgvA733XcfV1xxRTPOvGXF3JWCRzz0TOppScGYDihS6ez6XHXVVbz33nusX7+e4cOH89vf/pYf/OAHDBo0iJNOOomVK1dy8cUNTxl/zjnnUF85/xEjRvDYY48xefJkhgwZwrBhw1i3bh3z58+nV69eoYQAMHr0aFasWMHWrVuP7IRd4FrpbLccTensGlPmTEFVefbsZ1soKmNim5XObluOpnR2zF0pQCtMy2mMMe1UTCaFnknBAWyBligoZ4wxHUhMJoXM5EyqA9XsKd8T7VCMMaZNic2kYAPYjGlx7e3+ZEd1tN9DbCaFsAFsxpij5/P52L17tyWGKFNVdu/ejc/na/Y+Ym6cAoTNwGYD2IxpETk5ORQXF7Nz585ohxLzfD4fOTk5zf58TCaF9E7pdPJ2su4jY1pIfHw8ubm50Q7DtICY7D4SERvAZowxEbiaFETkLBFZJSJrROSWCOuniMhOEVnivH7kZjzhMpMzLSkYY0wdriUFEfEC04GzgXxgsohEKkv6N1UtcF5PuhVPXTaAzRhjDufmlcIoYI2qrlPVSmAWMMHF4x2Rnkk92VG2A3/AH+1QjDGmzXAzKfQCNoUtFzttdX1HRD4VkZdEJPI0SS7ITM7Er352HdrVWoc0xpg2L9o3mv8N9FPVEcBcIGKFOhGZKiJFIlLUUo+82WOpxhhzODeTwmYg/C//HKctRFV3q2qFs/gkEHHuOlWdoaqFqlpYX5naI9UzyZlsx242G2NMiJtJ4RMgT0RyRSQBmATMDt9ARLLCFscDK12MpxYb1WyMMYdzbfCaqlaLyDTgTcALPK2qy0XkXqBIVWcDPxWR8UA1sAeY4lY8dXVO6ExiXKJ1HxljTBhXRzSr6uvA63Xa7gx7fytwq5sx1McGsBljzOGifaM5qjKTM637yBhjwsR8UrDuI2OM+UrMJ4Vdh3ZRHaiOdijGGNMmxHRS6JnUk4AG2Flm5X6NMQZiPCnYADZjjKkttpOCTctpjDG1xHZSsAFsxhhTS8wkhZkfb+SkB96h2h8ItaUkpJAcn2zdR8YY44iZpACwed8htpdU1GrLTLLJdowxpkbMJIWsNB8AW/cdqtVuM7AZY8xXYiYpZKcnArBlf3mtdpuBzRhjvhIzSaG+K4WeyT3ZfWg3Vf6qaIRljDFtSswkhVRfPKm+OLbU7T5KykRRu1owxhhiKCkAZKclHtZ91DPZJtsxxpgaMZUUstJ9bN1/+I1msFHNxhgDsZYU0hLZuq/OjeYkG8BmjDE1Yiop9Er3sftgJeVV/lBbUnwSqQmp1n1kjDHEWFLISgs+lro1wmOp1n1kjDGxlhTS6xnAlmQzsBljDMRYUshOq38Am3UfGWOMy0lBRM4SkVUiskZEbmlgu++IiIpIoZvxZDZQ6mJvxV4q/BWRPmaMMTHDtaQgIl5gOnA2kA9MFpH8CNulAtcAH7kVSw1fvJfuKQmHj1VICo5VsC4kY0ysc/NKYRSwRlXXqWolMAuYEGG7+4AHgfII61pcVlri4aOak22yHWOMAXeTQi9gU9hysdMWIiLHAb1V9TUX46glK80GsBljTH2idqNZRDzAb4AbmrDtVBEpEpGinTt3HtVxs9MPH8Bm3UfGGBPkZlLYDPQOW85x2mqkAsOA/4rIeuDrwOxIN5tVdYaqFqpqYUZGxlEFlZXmo6SimpLyr6qi+uJ8pHdKt+4jY0zMczMpfALkiUiuiCQAk4DZNStVdb+qdlfVfqraD/gQGK+qRS7GFJpXwQawGWPM4VxLCqpaDUwD3gRWAi+q6nIRuVdExrt13MZkOwPYNkcYwGZXCsaYWBfn5s5V9XXg9Tptd9az7Rg3Y6kRKnVR975Cck8W7VjUGiEYY0ybFVMjmgF6pHbCI0R8AulA5QHKqsqiFJkxxkRfzCWFOK+Hnp19bKnvCSSbgc0YE8NiLilAI2MV7L6CMSaGxWRSyE63Uc3GGBNJzCaFrfvLUdVQm3UfGWNMjCaFrDQfFdUB9hysDLUleBPo5utmVwrGmJjWpKQgIn9pSlt7Ud8MbD2Te9oANmNMTGvqlcLQ8AWnLPbxLR9O66gZwHbYfQWbgc0YE+MaTAoicquIlAAjROSA8yoBdgCvtEqELqgpdRHpZrN1HxljYlmDSUFVf6WqqcDDqtrZeaWqajdVvbWVYmxx3ZITSIjzRKx/VFpVSmllaZQiM8aY6Gpq99GrIpIMICLfE5HfiEhfF+NylYiQlearfwY2ewLJGBOjmpoU/giUicixBOc/WAs851pUrSArzRdxrmawsQrGmNjV1KRQrcGH+icAf1DV6QTnQ2i3stMSI3YfgSUFY0zsamqV1BIRuRX4PnCKM2tavHthuS87PZFtB8rxBxSvRwDISMpAEHss1RgTs5p6pXARUAFcpqrbCM6i9rBrUbWCrHQf/oCyo+Srq4V4TzwZiRn2WKoxJmY1KSk4ieAFIE1EzgXKVbVd31PITqt5LDXCADbrPjLGxKimjmi+EPgY+C5wIfCRiEx0MzC3ZTkD2CJVS7XuI2NMrGrqPYXbgRNUdQeAiGQAbwEvuRWY2+qdgS2pJws2L0BVEZFohGaMMVHT1HsKnpqE4Nh9BJ9tkzr74kjpFHf4XM3JmRyqPkRJVUmUIjPGmOhp6pXCHBF5E5jpLF9EnbmX25uaAWx1u496JgcHsG07uI3OCZ2jEZoxxkRNg0lBRAYAPVX1RhG5ADjZWfUBwRvP7VpWeoSxCklfjVUY2GVgNMIyxpioaawL6DHgAICq/lNVr1fV64GXnXUNEpGzRGSViKwRkVsirL9KRD4TkSUiskBE8ptzEs2VnXb4XM02gM0YE8saSwo9VfWzuo1OW7+GPuiU154OnA3kA5Mj/NL/q6oOV9UC4CHgN00NvCVkpSWyq7SCimp/qC0jMYM4iePTnZ+2ZijGGNMmNJYU0htYl9jIZ0cBa1R1napWArMIlskIUdUDYYvJgNKKauZV2BbWheT1eJk0eBKvrH2F19a91prhGGNM1DWWFIpE5Iq6jSLyI2BhI5/tBWwKWy522uru6/9EZC3BK4WfNrLPFvXVvAq1u5CuL7ye43ocx93/u5tVe1a1ZkjGGBNVjSWFa4Efish/ReQR5/UucDlwTUsEoKrTVbU/cDNwR6RtRGSqiBSJSNHOnTtb4rBAsFIqHD6ALd4TzyNjHqFzQmeumXcN+yv2t9gxjTGmLWtskp3tqvoN4B5gvfO6R1VPdEpfNGQz0DtsOcdpq88s4Lx64pihqoWqWpiRkdHIYZuuvrmaAbondueRMY+wvWw7N793M/6A/7BtjDGmo2lq7aN5qvp75/VOE/f9CZAnIrkikgBMAmaHbyAieWGL3wJWN3HfLSIxwUuXpPjDpuWsUdCjgFtH3cr7W95n+pLprRmaMcZERVMHrx0xVa0WkWnAm4AXeFpVl4vIvUCRqs4GponImUAVsBe41K146pOdnlhvUgD47sDvsnz3cp747AmGdhvKGX3PaMXojDGmdbmWFABU9XXqjHxW1TvD3rfIfYmjkZWWSPHesnrXiwi3fe02vtjzBbctuI2ZaTM5Jv2YVozQGGNaT7uuX9QSstN9DV4pAHTyduLR0x7FF+fjmnnXUFpZ2krRGWNM64r5pJCVlsiB8moOVlQ3uF1mcia/PvXXbCrZxG0LbiOggVaK0BhjWk/MJ4XseuZViOSEzBO4ofAG5m2axxOfPuF2aMYY0+piPinUPJa6ed/hj6VG8r0h3+Oc3HOYvmQ684vnuxmaMca0uphPCqErhUbuK9QQEe7+xt0M7DKQm+ffzMYDG90MzxhjWlXMJ4WenX2IwJYIA9jqkxiXyKOnPYogTHtnGst2LXMxQmOMaT0xnxTivR56pHZq8pVCjd6pvXl0zKPsr9jP5Ncmc+v8W63ctjGm3Yv5pADB+wqRSl00ZlTWKF47/zWuGH4F/1n/H859+Vx+v/j3lFXVP+7BGGPaMksKNG2sQn1SElL46XE/5d/n/5sz+pzBjE9n8K2Xv8U/V//T6iUZY9odSwpAdloiW/YfQrX50zlkp2Tz4OgHef6c5+mV0ou7/ncXF756IR9s+aAFIzXGGHdZUiA4V3N5VYB9ZVVHva9jM47lL2f/hYdPfZiDVQeZOncq096exrr961ogUmOMcZclBYJzNQNsacIAtqYQEc7qdxavnPcK1x1/HQu3L+SCVy5gzvo5LbJ/Y4xxiyUFglcKAFubOICtqTp5O3HZsMt47YLX6NO5D8+veL5F92+MMS3NkgItf6VQV1dfV8495lyW7lxqj60aY9o0SwpA95ROxHvlsLmaW9LYvmMBeHvj264dwxhjjpYlBcDjETLTfE0qitdcuWm5DEgfwH/W/8e1YxhjzNGypODISkts8XsKdY3rN47FOxazs2ynq8cxxpjmsqTgyE7zuXZPoca4vuNQlLc2vuXqcYwxprksKTiy0hPZtr8cf6D5A9ga0z+9P8ekHcPcDXNdO4YxxhwNSwqO7PREqgPKrtIKV48ztu9YFm5fyK5Du1w9jjHGNIclBUfosdRm1kBqqrF9xxLQAO9sfMfV4xhjTHO4mhRE5CwRWSUia0TklgjrrxeRFSLyqYi8LSJ93YynITUzsDWnWuqRGNhlIP069+M/G+wpJGNM2+NaUhARLzAdOBvIByaLSH6dzRYDhao6AngJeMiteBpTMwOb21cKIsLYvmMp2lbEnvI9rh7LGGOOlJtXCqOANaq6TlUrgVnAhPANVHWeqtZMPvAhkONiPA1KS4wnMd7r+pUCBLuQ/Opn3sZ5rh/LGGOOhJtJoRewKWy52Gmrz+XAGy7G0yAROapnsfiCAAAV6UlEQVR5FY7E4K6DyUnJsaeQjDFtTpu40Swi3wMKgYfrWT9VRIpEpGjnTvcGfmWnJx7RXM3NJSKM6zeOj7Z+xP6K/a4fzxhjmsrNpLAZ6B22nOO01SIiZwK3A+NVNeLzoKo6Q1ULVbUwIyPDlWABstJ8RzxXc3ON6zuOaq22p5CMMW2Km0nhEyBPRHJFJAGYBMwO30BERgKPE0wIO1yMpUmy0hLZWVpBZXXA9WPld8snOznbupCMMW2Ka0lBVauBacCbwErgRVVdLiL3ish4Z7OHgRTg7yKyRERm17O7VpGd7kMVth9onS6ksX3H8sHWDzhQecD14xljTFO4ek9BVV9X1YGq2l9V73fa7lTV2c77M1W1p6oWOK/xDe/RXTVjFVrjZjMEC+RVB6p5d9O7rXI8Y4xpTJu40dxWZKe3zgC2GsO7DyczOdPKaRtj2gxLCmFCA9hcrpZaQ0Q4s8+ZvL/lfUorS1vlmMYY0xBLCmGSEuJIS4x3fV6FcOP6jaMqUMW7xdaFZIyJPksKdWS5PANbXcdmHEuPxB72FJIxpk2wpFBHdnoim1vxSsEjHs7seyYLNi+grKqs8Q8YY4yLLCnUkZ3eulcKEKyFVOGv4L3i91r1uMYYU5clhTqy0hLZV1bFoUp/qx1zZI+RdPN1s3Laxpios6RQR2s/gQTg9XitC8kY0yZYUqgjNNlOK95XgGAtpEPVh3h/y/utelxjjAlnSaGO7FYe1VzjuJ7H0dXX1QayGWOiypJCHZlpPkRg097W7caJ88Rxep/Tebf4XcqrW/cqxRhjalhSqCMhzkNh3y68vHgz1X73q6WGG9t3rHUhGWOiypJCBFNH96d47yFe+2xrqx73hMwTSO+UbgPZjDFRExftANqiMwb3YECPFP707jrGH5uNiLTKceM98Zze53ReXv0y84vn4/P6SPAm4Itzfnpr/0yMS+TiIReT3y2/VeIzxnR8lhQi8HiEqaOP4aaXPmX+6l2MHujebG91TR0xlfRO6RyqPkSlv5Jyf3nwZ3Xw56HqQ+yr2EeFv4KdZTtZsHkBL377RXok9Wi1GI0xHZeoarRjOCKFhYVaVFTk+nEqqwOc8tA79M9I4a9XfN314zXHmr1ruPj1ixncdTBPffMp4j3x0Q7JGNNGichCVS1sbDu7p1CPhDgPl5+cy//W7ubT4n3RDieiAV0GcPeJd7N4x2IeXfhotMMxxnQAlhQaMHlUH1J9cTz+7rpoh1Kvc445h4sHX8xfVvyFOevnRDscY0w7Z0mhAam+eL739b68sWwr63cdjHY49fpZ4c84NuNY7nr/Ltbta7sJzBjT9llSaMQPv9GPOI+HJ+a33V+28d54fn3qr/HF+bjuv9dZ/SRjTLO5mhRE5CwRWSUia0TklgjrR4vIIhGpFpGJbsbSXD06+/jO8b34+8JidpZURDucemUmZ/LQ6IdYf2A9d/3vLtrbAwTGmLbBtaQgIl5gOnA2kA9MFpG6D9RvBKYAf3UrjpZwxSnHUOUP8Oz/1kc7lAZ9LetrXD3yauasn8MLK1+IdjjGmHbIzSuFUcAaVV2nqpXALGBC+Aaqul5VPwVat57EETomI4Vv5mfy3AfrOVhRHe1wGnT5sMs5rfdpPFL0CIt3LI52OMaYdsbNpNAL2BS2XOy0tUtXnnoMB8qrmfnxxmiH0iAR4f6T7yc7JZsb/nsDuw7tinZIxph2pF3caBaRqSJSJCJFO3fujEoMI/t04Wu5XXlqwZdUtXKhvCOVmpDKb8b8hpLKEm567yaqA2376sYY03a4mRQ2A73DlnOctiOmqjNUtVBVCzMyWq/kRF1XndqfrfvLmb1kS9RiaKpBXQdx54l38sm2T/jd4t9FOxxjTDvhZlL4BMgTkVwRSQAmAbNdPJ7rxgzKYFDPVB5/b227eLrn2/2/zYUDL+TPy/7MG1++wb7yfRyoPMDBqoOUV5dT5a/CH/C3i3MxxrQO1wriqWq1iEwD3gS8wNOqulxE7gWKVHW2iJwAvAx0Ab4tIveo6lC3YjpaIsKVpx7D9S8uZd6qHZw+uGe0Q2rUzaNuZsXuFdz03k0NbucVLx7x4BUv8d74UCXWTt5OdPJ2qvW+Zjk1IZX+6f0ZkD6AAekD6OLr0kpnZYxxixXEO0JV/gCnPjSPnK5JvHjliVGL40jsK9/H3I1zqfRXEtAA/oAfv/oJaIBqra7V5g/4qQpUUeGvoNJfWetn+KvSX8ne8r2UVJWEjtPV15W89LxgougSTBT90/vTOaFzFM/eGANNL4hnpbOPULzXw+WnHMN9r65g0ca9HNen7f91nO5L57sDv9vi+1VVdh7ayZq9a1izL/hau28t/1rzL8qqvxpV3SOpB3ld8hiYPjD4s8tActNySfAmtHhMxpijY1cKzXCwoppvPPAOXz+mK49/v9HEG3MCGmDbwW2hRLFm7xpW71vN2n1rqQpUARAncfRL6xdKEgO7DCQvPY/M5MxWm9TImFhiVwouSu4Uxw9O7Msf5q1h7c5S+mekRDukNsUjHrJTsslOyWZ0zuhQe1Wgio0HNrJ672q+2PsFX+z9gqU7lvLGl2+EtonzxBEncaH7GyISut9R86pp90jTn5MQDk80kZJPUlwSKQkppManBn8mpJKakEpKfAqdEzqH2hLjEiPus6nHjsTj8ZAUl0RyfDLJ8ckkxiUe0Tka0xLsSqGZdpVWcNID7/CtEVn84rxhJCVYfm2uksoS1uxbwxd7vmDLwS3BexzOPY+al1+DT0nVtPvV3+T9R/o3rkRoU+VQ9SFKKksoqSqhtLKUksoSSqtKj+r8mksQEuMSQ0kiKd5JGHHJeD3eJu3DIx7iPfGHPSwQ742v9dBAgieBeE88Xo+XOIkjzhMXfO+JwyveULL2erx4pWnHdkssX0n2SOxBui+9WZ+1KwWXdU/pxIWFvfnLhxv456LNdPbFkZnmIzMtkczOnchMSyQrzUdmZx+ZaT6y0nykJ1kfeiSpCamM7DGSkT1GRjuUiPwBPwerD4aSREllCYeqDzXps5GST32qA9WUVZdRVlXGwaqDoVdZ9VfLZVVlbCvb1uSkGAgEqAwEHxSo8n/1AEG12oDG9ujnX/85Fw660NVjWFI4Cj8/N5/Cfl3YvO8Q2/eXs3V/OdsPlPP51gPsLK2g7h+oJ/Trwg3jBvH1Y7pFJ2DTLF6Pl84JnTvUU1TVgWoq/ZXBV6CSiuoKqrWa6kB1rafQ/OoPtgX8ofUBjd6I/iNJsh3R4K6DXT+GJYWjkBDnYUJB5HJOVf4AO0sqQoli3c5SnvtgA5NmfMhJA7px/dhBHN+37T+5ZDqmOE+wiygpPinaoZg2xu4ptKLyKj/Pf7iBP727ll2llYwZlMENYwcxPCct2qEZYzq4pt5TsKQQBWWV1Tz7vw08/t5a9pVVMS6/J9eNHciQrI7TPWGMaVssKbQDJeVVPL1gPU/OX0dJRTXfGpHFdWfmMaBHarRDM8Z0MJYU2pF9ZZU8MX8df35/PeVVfs4fmcPt3xpC12R7WskY0zKamhRsZEwbkJ6UwI3fHMz8m07j8pNzmb10M2N/8y5vfLY12qEZY2KMJYU2pFtKJ27/Vj6zp51MZpqPH7+wiKtnLmbPwcpoh2aMiRGWFNqgIVmd+df/ncT1YwcyZ9lWxj36LnOW2VWDMcZ9lhTaqHivh5+ekcfsaSfTs7OPq563qwZjjPssKbRxka8atkU7LGNMB2VJoR0Iv2rokerjqucXcvXMxey1qwZjTAuzMhftyJCszrwy7ST+37y1/P6d1Xywdhfnjsgmp0sivbsmkdMlkZwuSaQlxkc7VGNMO2VJoZ2J93q45sw8xub35J5/L+fvRZs4WFm7YmaqL46cLsEk0dv52b9HCl/L7YovPrplj40xbZslhXYqP7szf7vyRFSV/Yeq2LTnEMV7yyje+9XPDbsP8v6aXZQ5SSMpwcvovAzG5vfk9ME96GKD44wxdVhSaOdEhPSkBNKTEiIW1lNV9pZV8WnxPt5auZ25K7YzZ/k2vB7hhH5dGJufybj8nvTuatUyjTEul7kQkbOA3wJe4ElVfaDO+k7Ac8DxwG7gIlVd39A+O2KZi9YUCCifbd7P3BXb+c+KbXyxPTir2ODMVMbm92Rsfk+GZafh8cTu7FbGdERRr30kIl7gC2AsUAx8AkxW1RVh2/wEGKGqV4nIJOB8Vb2oof1aUmhZG3YfdBLEdorW7yGgwW6mQZmpDMnqzJCszuRnpTIoszMpnezC0pj2qi0khROBu1X1m87yrQCq+quwbd50tvlAROKAbUCGNhCUJQX37DlYyX9X7eDT4v2s3HqAlVsPcKD8q2kb+3ZLYkhmZydZpJLbPbnWFUXda4vwuXTjPILXI2E/PXi9weWatliee9cYt7WFOZp7AZvClouBr9W3japWi8h+oBuwy8W4TD26JidwwXE5XHBcDhC8H7FlfzkrthwIJYmVWw/w5opth0012hK8TnLwiuAR8IQtiwheD8F1HsHjbFNXfYklYmukz9cTW939xnmEOdeObvB8jGmP2kV/gIhMBaYC9OnTJ8rRxA4RoVd6Ir3SExmb3zPUfrCims+3lVC8t6zez4YnDUXxB8AfCFAdUPwBpcqvXy37leqAUu0sq4Lf2S6gwZc/ELwf4neWA4HDZ+utL1FFao50MVpvnouwwu65mI7KzaSwGegdtpzjtEXaptjpPkojeMO5FlWdAcyAYPeRK9GaJkvuFMfxfbvYHNPGdEBulrn4BMgTkVwRSQAmAbPrbDMbuNR5PxF4p6H7CcYYY9zl2pWCc49gGvAmwUdSn1bV5SJyL1CkqrOBp4C/iMgaYA/BxGGMMSZKXL2noKqvA6/Xabsz7H058F03YzDGGNN0ViXVGGNMiCUFY4wxIZYUjDHGhFhSMMYYE2JJwRhjTIirVVLdICI7gQ3N/Hh3Ol4JjY52Th3tfKDjnVNHOx/oeOcU6Xz6qmpGYx9sd0nhaIhIUVMKQrUnHe2cOtr5QMc7p452PtDxzulozse6j4wxxoRYUjDGGBMSa0lhRrQDcEFHO6eOdj7Q8c6po50PdLxzavb5xNQ9BWOMMQ2LtSsFY4wxDYiZpCAiZ4nIKhFZIyK3RDueoyUi60XkMxFZIiLtcn5SEXlaRHaIyLKwtq4iMldEVjs/282kDfWcz90istn5npaIyDnRjPFIiUhvEZknIitEZLmIXOO0t8vvqYHzabffk4j4RORjEVnqnNM9TnuuiHzk/M77mzOFQeP7i4XuIxHxAl8AYwlOC/oJMFlVV0Q1sKMgIuuBQlVtt89Wi8hooBR4TlWHOW0PAXtU9QEneXdR1ZujGWdT1XM+dwOlqvrraMbWXCKSBWSp6iIRSQUWAucBU2iH31MD53Mh7fR7kuBcscmqWioi8cAC4BrgeuCfqjpLRP4ELFXVPza2v1i5UhgFrFHVdapaCcwCJkQ5ppinqu8RnEcj3ATgWef9swT/h20X6jmfdk1Vt6rqIud9CbCS4Nzq7fJ7auB82i0NKnUW452XAqcDLzntTf6OYiUp9AI2hS0X087/IRD80v8jIgudOaw7ip6qutV5vw3o2dDG7cQ0EfnU6V5qF90skYhIP2Ak8BEd4Huqcz7Qjr8nEfGKyBJgBzAXWAvsU9VqZ5Mm/86LlaTQEZ2sqscBZwP/53RddCjO1KztvX/zj0B/oADYCjwS3XCaR0RSgH8A16rqgfB17fF7inA+7fp7UlW/qhYAOQR7RgY3d1+xkhQ2A73DlnOctnZLVTc7P3cALxP8h9ARbHf6fWv6f3dEOZ6joqrbnf9hA8ATtMPvyemn/gfwgqr+02lut99TpPPpCN8TgKruA+YBJwLpIlIzu2aTf+fFSlL4BMhz7sYnEJwLenaUY2o2EUl2bpIhIsnAOGBZw59qN2YDlzrvLwVeiWIsR63mF6fjfNrZ9+TcxHwKWKmqvwlb1S6/p/rOpz1/TyKSISLpzvtEgg/UrCSYHCY6mzX5O4qJp48AnEfMHgO8wNOqen+UQ2o2ETmG4NUBBOfZ/mt7PB8RmQmMIVjRcTtwF/Av4EWgD8FquBeqaru4eVvP+Ywh2CWhwHrgyrC++DZPRE4G5gOfAQGn+TaC/fDt7ntq4Hwm006/JxEZQfBGspfgH/ovquq9zu+JWUBXYDHwPVWtaHR/sZIUjDHGNC5Wuo+MMcY0gSUFY4wxIZYUjDHGhFhSMMYYE2JJwRhjTIglBdNuiUhPEfmriKxzyn18ICLnH+U+7xaRnznv7xWRM5u5n4L6Km2KSJKIvOBUuV0mIgtEJEVE0kXkJ0cTvzFHy5KCaZecQUj/At5T1WNU9XiCgxJzImwbV7etKVT1TlV9q5khFgD1lV++BtiuqsOdaqqXA1VAOmBJwUSVJQXTXp0OVKrqn2oaVHWDqv4eQESmiMhsEXkHeNv5S/xtEVnk/IUeqpIrIreLyBcisgAYFNb+jIhMdN4fLyLvOlckb4aVePiviDzo1LP/QkROcUbN3wtc5NTmv6hO7FmElRxQ1VXOoKIHgP7OZx529n+jiHziFGqrqZPfT0Q+d642VorISyKS5Kx7QIJzBXwqIu2uDLSJvmb9BWVMGzAUWNTINscBI1R1j3O1cL6qHhCR7sCHIjLb2WYSwb/s45x9LgzfiVMr5/fABFXd6fySvx+4zNkkTlVHOd1Fd6nqmSJyJ8H5LqZFiOtpghVuJwJvA8+q6mrgFmCYU9gMERkH5BGswyPAbKfw4UaCyetyVX1fRJ4GfiIifyZYomGwqmpN6QNjjoQlBdMhiMh04GSCVw8nOM1zw0ovCPBL55dqgGAZ4Z7AKcDLqlrm7CdSTaxBwDBgbrDXCi/BSpo1aorELQT6NRarqi5xShCMA84EPhGRE4FDdTYd57wWO8spBJPERmCTqr7vtD8P/JRgGZdy4CkReRV4tbFYjKnLkoJpr5YD36lZUNX/c64AwqcmPRj2/hIgAzheVaskOHOdr4nHEmC5qp5Yz/qaejJ+mvj/lDMpyj+Bf4pIgOD9h39EOO6vVPXxWo3BeQDq1qdRVa0WkVHAGQQLoU0j2M1mTJPZPQXTXr0D+ETkx2FtSQ1snwbscBLCaUBfp/094DwRSXQqz347wmdXARnOX/OISLyIDG0kvhIgNdIKETlJnElcnPsP+QSLytX9zJvAZRKs/Y+I9BKRHs66PjXxABcDC5zt0lT1deA64NhGYjTmMJYUTLvkTOxyHnCqiHwpIh8TrBRZ3zzBLwCFIvIZ8APgc2c/i4C/AUuBNwiWWa97rEqCf3k/KCJLgSXANxoJcR6QX8+N5v7Au04siwle3fxDVXcD7zuPqT6sqv8B/gp84Gz7El8ljVUEJ1daCXQhOElMKvCqiHxKcJ7e6xuJ0ZjDWJVUY9oZp/voVedxVmNalF0pGGOMCbErBWOMMSF2pWCMMSbEkoIxxpgQSwrGGGNCLCkYY4wJsaRgjDEmxJKCMcaYkP8PkkkFTWmoSgUAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Draw gradient descent progress for each label.\n", "labels = logistic_regression.unique_labels\n", "plt.plot(range(len(costs[0])), costs[0], label=labels[0])\n", "plt.plot(range(len(costs[1])), costs[1], label=labels[1])\n", "plt.plot(range(len(costs[2])), costs[2], label=labels[2])\n", "\n", "plt.xlabel('Gradient Steps')\n", "plt.ylabel('Cost')\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Calculate Model Training Precision\n", "\n", "Calculate how many flowers from the training set have been guessed correctly. " ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Precision: 96.0000%\n" ] } ], "source": [ "# Make training set predictions.\n", "y_train_predictions = logistic_regression.predict(x_train)\n", "\n", "# Check what percentage of them are actually correct.\n", "precision = np.sum(y_train_predictions == y_train) / y_train.shape[0] * 100\n", "\n", "print('Precision: {:5.4f}%'.format(precision))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Draw Decision Boundaries\n", "\n", "Let's build our decision boundaries. These are the lines that distinguish classes from each other. This will give us a pretty clear overview of how successfull our training process was. You should see clear distinguishment of three sectors on the data plain. " ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Get the number of training examples.\n", "num_examples = x_train.shape[0]\n", "\n", "# Set up how many calculations we want to do along every axis. \n", "samples = 150\n", "\n", "# Generate test ranges for x and y axis.\n", "x_min = np.min(x_train[:, 0])\n", "x_max = np.max(x_train[:, 0])\n", "\n", "y_min = np.min(x_train[:, 1])\n", "y_max = np.max(x_train[:, 1])\n", "\n", "X = np.linspace(x_min, x_max, samples)\n", "Y = np.linspace(y_min, y_max, samples)\n", "\n", "# z axis will contain our predictions. So let's get predictions for every pair of x and y.\n", "Z_setosa = np.zeros((samples, samples))\n", "Z_versicolor = np.zeros((samples, samples))\n", "Z_virginica = np.zeros((samples, samples))\n", "\n", "for x_index, x in enumerate(X):\n", " for y_index, y in enumerate(Y):\n", " data = np.array([[x, y]])\n", " prediction = logistic_regression.predict(data)[0][0]\n", " if prediction == 'SETOSA':\n", " Z_setosa[x_index][y_index] = 1\n", " elif prediction == 'VERSICOLOR':\n", " Z_versicolor[x_index][y_index] = 1\n", " elif prediction == 'VIRGINICA':\n", " Z_virginica[x_index][y_index] = 1\n", "\n", "# Now, when we have x, y and z axes being setup and calculated we may print decision boundaries.\n", "for iris_type in iris_types:\n", " plt.scatter(\n", " x_train[(y_train == iris_type).flatten(), 0],\n", " x_train[(y_train == iris_type).flatten(), 1],\n", " label=iris_type\n", " )\n", "\n", "plt.contour(X, Y, Z_setosa)\n", "plt.contour(X, Y, Z_versicolor)\n", "plt.contour(X, Y, Z_virginica)\n", " \n", "plt.xlabel(x_axis + ' (cm)')\n", "plt.ylabel(y_axis + ' (cm)')\n", "plt.title('Iris Types')\n", "plt.legend()\n", "plt.show()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.0" } }, "nbformat": 4, "nbformat_minor": 2 } ================================================ FILE: notebooks/logistic_regression/logistic_regression_with_non_linear_boundary_demo.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Logistic Regression With Non-Linear Boundary Demo\n", "\n", "_Source: 🤖[Homemade Machine Learning](https://github.com/trekhleb/homemade-machine-learning) repository_\n", "\n", "> ☝Before moving on with this demo you might want to take a look at:\n", "> - 📗[Math behind the Logistic Regression](https://github.com/trekhleb/homemade-machine-learning/tree/master/homemade/logistic_regression)\n", "> - ⚙️[Logistic Regression Source Code](https://github.com/trekhleb/homemade-machine-learning/blob/master/homemade/logistic_regression/logistic_regression.py)\n", "\n", "**Logistic regression** is the appropriate regression analysis to conduct when the dependent variable is dichotomous (binary). Like all regression analyses, the logistic regression is a predictive analysis. Logistic regression is used to describe data and to explain the relationship between one dependent binary variable and one or more nominal, ordinal, interval or ratio-level independent variables.\n", "\n", "Logistic Regression is used when the dependent variable (target) is categorical.\n", "\n", "For example:\n", "\n", "- To predict whether an email is spam (`1`) or (`0`).\n", "- Whether online transaction is fraudulent (`1`) or not (`0`).\n", "- Whether the tumor is malignant (`1`) or not (`0`).\n", "\n", "> **Demo Project:** In this example we will try to classify microchips into to categories (`valid` and `invalid`) based on two artifical parameters `param_1` and `param_2`." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# To make debugging of logistic_regression module easier we enable imported modules autoreloading feature.\n", "# By doing this you may change the code of logistic_regression library and all these changes will be available here.\n", "%load_ext autoreload\n", "%autoreload 2\n", "\n", "# Add project root folder to module loading paths.\n", "import sys\n", "sys.path.append('../..')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Import Dependencies\n", "\n", "- [pandas](https://pandas.pydata.org/) - library that we will use for loading and displaying the data in a table\n", "- [numpy](http://www.numpy.org/) - library that we will use for linear algebra operations\n", "- [matplotlib](https://matplotlib.org/) - library that we will use for plotting the data\n", "- [logistic_regression](https://github.com/trekhleb/homemade-machine-learning/blob/master/homemade/logistic_regression/logistic_regression.py) - custom implementation of logistic regression" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# Import 3rd party dependencies.\n", "import numpy as np\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "\n", "# Import custom logistic regression implementation.\n", "from homemade.logistic_regression import LogisticRegression" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Load the Data\n", "\n", "In this demo we will use artificial dataset in which `param_1` and `param_2` produce non-linear decision boundary (see the plot below)." ] }, { "cell_type": "code", "execution_count": 3, "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", "
param_1param_2validity
00.0512670.6995601
1-0.0927420.6849401
2-0.2137100.6922501
3-0.3750000.5021901
4-0.5132500.4656401
5-0.5247700.2098001
6-0.3980400.0343571
7-0.305880-0.1922501
80.016705-0.4042401
90.131910-0.5138901
\n", "
" ], "text/plain": [ " param_1 param_2 validity\n", "0 0.051267 0.699560 1\n", "1 -0.092742 0.684940 1\n", "2 -0.213710 0.692250 1\n", "3 -0.375000 0.502190 1\n", "4 -0.513250 0.465640 1\n", "5 -0.524770 0.209800 1\n", "6 -0.398040 0.034357 1\n", "7 -0.305880 -0.192250 1\n", "8 0.016705 -0.404240 1\n", "9 0.131910 -0.513890 1" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Load the data.\n", "data = pd.read_csv('../../data/microchips-tests.csv')\n", "\n", "# Print the data table.\n", "data.head(10)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Plot the Data\n", "\n", "Let's plot the data on 2D-plane and split it by two clasess (`valid` and `invalid`) to see the distribution." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Supported set of validities.\n", "validities = [0, 1]\n", "\n", "# Dataset parameters that we will take into account.\n", "x_axis = 'param_1'\n", "y_axis = 'param_2'\n", "\n", "# Scatter the data on the plot for each validity class separatelly.\n", "for validity in validities:\n", " plt.scatter(\n", " data[x_axis][data['validity'] == validity],\n", " data[y_axis][data['validity'] == validity],\n", " label=validity\n", " )\n", "\n", "# Plot the data. \n", "plt.xlabel(x_axis)\n", "plt.ylabel(y_axis)\n", "plt.title('Microchips Tests')\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Prepare the Data for Training\n", "\n", "Before we move on with training our logistic model let's extract the data from Pandas data frame and shape training features set and labels set correctly." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "# Get the number of training examples.\n", "num_examples = data.shape[0]\n", "\n", "# Extract and shape features.\n", "x_train = data[[x_axis, y_axis]].values.reshape((num_examples, 2))\n", "\n", "# Extract and shape labels.\n", "y_train = data['validity'].values.reshape((num_examples, 1))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Init and Train Logistic Regression Model\n", "\n", "> ☝🏻This is the place where you might want to play with model configuration.\n", "\n", "- `polynomial_degree` - this parameter will allow you to add additional polynomial features of certain degree. More features - more curved the line will be.\n", "- `max_iterations` - this is the maximum number of iterations that gradient descent algorithm will use to find the minimum of a cost function. Low numbers may prevent gradient descent from reaching the minimum. High numbers will make the algorithm work longer without improving its accuracy.\n", "- `regularization_param` - parameter that will fight overfitting. The higher the parameter, the simplier is the model will be.\n", "- `polynomial_degree` - the degree of additional polynomial features (`x1^2 * x2, x1^2 * x2^2, ...`). This will allow you to curve the predictions.\n", "- `sinusoid_degree` - the degree of sinusoid parameter multipliers of additional features (`sin(x), sin(2*x), ...`). This will allow you to curve the predictions by adding sinusoidal component to the prediction curve." ] }, { "cell_type": "code", "execution_count": 6, "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", "
Theta 0Theta 1Theta 2Theta 3Theta 4Theta 5Theta 6Theta 7Theta 8Theta 9...Theta 13Theta 14Theta 15Theta 16Theta 17Theta 18Theta 19Theta 20Theta 21Theta 22
VALID-2.0240521.660125-1.0421901.660125-1.042190-3.34508111.635574-10.209539-19.784433-29.263600...-0.44370537.3842321.54805240.47600416.79552124.197483-0.96690733.94814146.700557-22.072182
INVALID2.028452-1.6146551.083132-1.6146551.0831323.439305-11.41137710.25836419.31063428.477962...-0.423851-38.205306-2.021708-40.536997-16.190337-22.6988742.868809-32.068645-45.90151422.308492
\n", "

2 rows × 23 columns

\n", "
" ], "text/plain": [ " Theta 0 Theta 1 Theta 2 Theta 3 Theta 4 Theta 5 \\\n", "VALID -2.024052 1.660125 -1.042190 1.660125 -1.042190 -3.345081 \n", "INVALID 2.028452 -1.614655 1.083132 -1.614655 1.083132 3.439305 \n", "\n", " Theta 6 Theta 7 Theta 8 Theta 9 ... Theta 13 \\\n", "VALID 11.635574 -10.209539 -19.784433 -29.263600 ... -0.443705 \n", "INVALID -11.411377 10.258364 19.310634 28.477962 ... -0.423851 \n", "\n", " Theta 14 Theta 15 Theta 16 Theta 17 Theta 18 Theta 19 \\\n", "VALID 37.384232 1.548052 40.476004 16.795521 24.197483 -0.966907 \n", "INVALID -38.205306 -2.021708 -40.536997 -16.190337 -22.698874 2.868809 \n", "\n", " Theta 20 Theta 21 Theta 22 \n", "VALID 33.948141 46.700557 -22.072182 \n", "INVALID -32.068645 -45.901514 22.308492 \n", "\n", "[2 rows x 23 columns]" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Set up linear regression parameters.\n", "max_iterations = 100000 # Max number of gradient descent iterations.\n", "regularization_param = 0 # Helps to fight model overfitting.\n", "polynomial_degree = 5 # The degree of additional polynomial features.\n", "sinusoid_degree = 0 # The degree of sinusoid parameter multipliers of additional features.\n", "\n", "# Init logistic regression instance.\n", "logistic_regression = LogisticRegression(x_train, y_train, polynomial_degree, sinusoid_degree)\n", "\n", "# Train logistic regression.\n", "(thetas, costs) = logistic_regression.train(regularization_param, max_iterations)\n", "\n", "# Rename the columns for each theta.\n", "columns = []\n", "for theta_index in range(0, thetas.shape[1]):\n", " columns.append('Theta ' + str(theta_index));\n", "\n", "pd.DataFrame(thetas, index=['VALID', 'INVALID'], columns=columns)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Analyze Gradient Descent Progress\n", "\n", "The plot below illustrates how the cost function value changes over each iteration. You should see it decreasing. \n", "\n", "In case if cost function value increases it may mean that gradient descent missed the cost function minimum and with each step it goes further away from it.\n", "\n", "From this plot you may also get an understanding of how many iterations you need to get an optimal value of the cost function." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Draw gradient descent progress for each label.\n", "labels = logistic_regression.unique_labels\n", "\n", "plt.plot(range(len(costs[0])), costs[0], label=labels[0])\n", "plt.plot(range(len(costs[1])), costs[1], label=labels[1])\n", "\n", "plt.xlabel('Gradient Steps')\n", "plt.ylabel('Cost')\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Calculate Model Training Precision\n", "\n", "Calculate how many flowers from the training set have been guessed correctly. " ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Training Precision: 88.9831%\n" ] } ], "source": [ "# Make training set predictions.\n", "y_train_predictions = logistic_regression.predict(x_train)\n", "\n", "# Check what percentage of them are actually correct.\n", "precision = np.sum(y_train_predictions == y_train) / y_train.shape[0] * 100\n", "\n", "print('Training Precision: {:5.4f}%'.format(precision))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Draw Decision Boundaries\n", "\n", "Let's build our decision boundaries. These are the lines that distinguish classes from each other. This will give us a pretty clear overview of how successfull our training process was. You should see clear distinguishment of three sectors on the data plain. " ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Get the number of training examples.\n", "num_examples = x_train.shape[0]\n", "\n", "# Set up how many calculations we want to do along every axis. \n", "samples = 150\n", "\n", "# Generate test ranges for x and y axis.\n", "x_min = np.min(x_train[:, 0])\n", "x_max = np.max(x_train[:, 0])\n", "\n", "y_min = np.min(x_train[:, 1])\n", "y_max = np.max(x_train[:, 1])\n", "\n", "X = np.linspace(x_min, x_max, samples)\n", "Y = np.linspace(y_min, y_max, samples)\n", "Z = np.zeros((samples, samples))\n", "\n", "# z axis will contain our predictions. So let's get predictions for every pair of x and y.\n", "for x_index, x in enumerate(X):\n", " for y_index, y in enumerate(Y):\n", " data = np.array([[x, y]])\n", " Z[x_index][y_index] = logistic_regression.predict(data)[0][0]\n", "\n", "# Now, when we have x, y and z axes being setup and calculated we may print decision boundaries.\n", "positives = (y_train == 1).flatten()\n", "negatives = (y_train == 0).flatten()\n", "\n", "plt.scatter(x_train[negatives, 0], x_train[negatives, 1], label='0')\n", "plt.scatter(x_train[positives, 0], x_train[positives, 1], label='1')\n", "\n", "plt.contour(X, Y, Z)\n", "\n", "plt.xlabel('param_1')\n", "plt.ylabel('param_2')\n", "plt.title('Microchips Tests')\n", "plt.legend()\n", "\n", "plt.show()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.0" } }, "nbformat": 4, "nbformat_minor": 2 } ================================================ FILE: notebooks/logistic_regression/multivariate_logistic_regression_demo.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Multivariate Logistic Regression Demo\n", "\n", "_Source: 🤖[Homemade Machine Learning](https://github.com/trekhleb/homemade-machine-learning) repository_\n", "\n", "> ☝Before moving on with this demo you might want to take a look at:\n", "> - 📗[Math behind the Logistic Regression](https://github.com/trekhleb/homemade-machine-learning/tree/master/homemade/logistic_regression)\n", "> - ⚙️[Logistic Regression Source Code](https://github.com/trekhleb/homemade-machine-learning/blob/master/homemade/logistic_regression/logistic_regression.py)\n", "\n", "**Logistic regression** is the appropriate regression analysis to conduct when the dependent variable is dichotomous (binary). Like all regression analyses, the logistic regression is a predictive analysis. Logistic regression is used to describe data and to explain the relationship between one dependent binary variable and one or more nominal, ordinal, interval or ratio-level independent variables.\n", "\n", "Logistic Regression is used when the dependent variable (target) is categorical.\n", "\n", "For example:\n", "\n", "- To predict whether an email is spam (`1`) or (`0`).\n", "- Whether online transaction is fraudulent (`1`) or not (`0`).\n", "- Whether the tumor is malignant (`1`) or not (`0`).\n", "\n", "> **Demo Project:** In this example we will train handwritten digits (0-9) classifier." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# To make debugging of logistic_regression module easier we enable imported modules autoreloading feature.\n", "# By doing this you may change the code of logistic_regression library and all these changes will be available here.\n", "%load_ext autoreload\n", "%autoreload 2\n", "\n", "# Add project root folder to module loading paths.\n", "import sys\n", "sys.path.append('../..')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Import Dependencies\n", "\n", "- [pandas](https://pandas.pydata.org/) - library that we will use for loading and displaying the data in a table\n", "- [numpy](http://www.numpy.org/) - library that we will use for linear algebra operations\n", "- [matplotlib](https://matplotlib.org/) - library that we will use for plotting the data\n", "- [math](https://docs.python.org/3/library/math.html) - math library that we will use to calculate sqaure roots etc.\n", "- [logistic_regression](https://github.com/trekhleb/homemade-machine-learning/blob/master/homemade/logistic_regression/logistic_regression.py) - custom implementation of logistic regression" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# Import 3rd party dependencies.\n", "import numpy as np\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "import matplotlib.image as mpimg\n", "import math\n", "\n", "# Import custom logistic regression implementation.\n", "from homemade.logistic_regression import LogisticRegression" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Load the Data\n", "\n", "In this demo we will be using a sample of [MNIST dataset in a CSV format](https://www.kaggle.com/oddrationale/mnist-in-csv/home). Instead of using full dataset with 60000 training examples we will use cut dataset of just 10000 examples that we will also split into training and testing sets.\n", "\n", "Each row in the dataset consists of 785 values: the first value is the label (a number from 0 to 9) and the remaining 784 values (28x28 pixels image) are the pixel values (a number from 0 to 255)." ] }, { "cell_type": "code", "execution_count": 3, "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
label1x11x21x31x41x51x61x71x81x9...28x1928x2028x2128x2228x2328x2428x2528x2628x2728x28
05000000000...0000000000
10000000000...0000000000
24000000000...0000000000
31000000000...0000000000
49000000000...0000000000
52000000000...0000000000
61000000000...0000000000
73000000000...0000000000
81000000000...0000000000
94000000000...0000000000
\n", "

10 rows × 785 columns

\n", "
" ], "text/plain": [ " label 1x1 1x2 1x3 1x4 1x5 1x6 1x7 1x8 1x9 ... 28x19 28x20 \\\n", "0 5 0 0 0 0 0 0 0 0 0 ... 0 0 \n", "1 0 0 0 0 0 0 0 0 0 0 ... 0 0 \n", "2 4 0 0 0 0 0 0 0 0 0 ... 0 0 \n", "3 1 0 0 0 0 0 0 0 0 0 ... 0 0 \n", "4 9 0 0 0 0 0 0 0 0 0 ... 0 0 \n", "5 2 0 0 0 0 0 0 0 0 0 ... 0 0 \n", "6 1 0 0 0 0 0 0 0 0 0 ... 0 0 \n", "7 3 0 0 0 0 0 0 0 0 0 ... 0 0 \n", "8 1 0 0 0 0 0 0 0 0 0 ... 0 0 \n", "9 4 0 0 0 0 0 0 0 0 0 ... 0 0 \n", "\n", " 28x21 28x22 28x23 28x24 28x25 28x26 28x27 28x28 \n", "0 0 0 0 0 0 0 0 0 \n", "1 0 0 0 0 0 0 0 0 \n", "2 0 0 0 0 0 0 0 0 \n", "3 0 0 0 0 0 0 0 0 \n", "4 0 0 0 0 0 0 0 0 \n", "5 0 0 0 0 0 0 0 0 \n", "6 0 0 0 0 0 0 0 0 \n", "7 0 0 0 0 0 0 0 0 \n", "8 0 0 0 0 0 0 0 0 \n", "9 0 0 0 0 0 0 0 0 \n", "\n", "[10 rows x 785 columns]" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Load the data.\n", "data = pd.read_csv('../../data/mnist-demo.csv')\n", "\n", "# Print the data table.\n", "data.head(10)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Plot the Data\n", "\n", "Let's peek first 25 rows of the dataset and display them as an images to have an example of digits we will be working with." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkEAAAJBCAYAAABBBGGtAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4xLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvDW2N/gAAIABJREFUeJzs3Xm8leP+//H3pVKaJCUybVNCSJL5cAwNMicyz1RCZsdx0ODLMYVCxkJmJ47wM5wiMpe5UkQhSpuUojRcvz9296drae323muvte619v16Ph49vM+11/A53a29r31d93VdznsvAACApFkj7gIAAADiQCcIAAAkEp0gAACQSHSCAABAItEJAgAAiUQnCAAAJBKdIAAAkEhF3wlyzr3unFvknFuw4s+UuGtCdjjnmjrnnnHOLXTOzXDOHRd3Tcgu59xWKz6/I+KuBdnjnOvjnBvvnFvsnBsedz3ILufcNs65Mc65ec65r5xzR8RdU6aKvhO0Qh/vfcMVf7aOuxhkzR2S/pTUQtLxku5yzm0Xb0nIsjskfRB3Eci6HyQNlPRA3IUgu5xztSX9V9LzkppKOkvSCOdcq1gLy1BN6QShhnHONZDUTdK/vPcLvPfjJD0n6cR4K0O2OOd6SPpV0ui4a0F2ee9Heu+flfRz3LUg61pLailpkPd+mfd+jKS3VKTfm2tKJ+g651ypc+4t59y+cReDrGglaan3fmrQ9okkRoJqAOdcY0n9JV0Ydy0Aqs1JahN3EZmoCZ2gyyRtLmlDSfdIGuWc2yLekpAFDSXN/0vbPEmNYqgF2TdA0v3e++/jLgRAlUyR9JOkS5xzdZxzHSXtI6l+vGVlpug7Qd7797z3v3nvF3vvH1TZsNxBcdeFalsgqfFf2hpL+i2GWpBFzrm2kg6QNCjuWgBUjfd+iaTDJXWVNEvSRZKelFSUv9DUjruAHPAqG5pDcZsqqbZzbivv/Zcr2naUNDHGmpAd+0oqkfStc04qG/Wr5Zzb1nvfLsa6AFSC9/5TlY3+SJKcc29LejC+ijJX1CNBzrkmzrlOzrl6zrnazrnjJf1N0ktx14bq8d4vlDRSUn/nXAPn3J6SDpP0cLyVIQvukbSFpLYr/gyV9IKkTnEWhexZ8f24nqRaKuvg1luxqgg1gHNuhxXXtL5z7mJJG0gaHnNZGSnqTpCkOipbhjlHUqmkcyUd/pebaVG8ektaS2Xzz49J6uW9ZySoyHnvf/fez4r+qGzqc5H3fk7ctSFrrpT0h6TLJZ2wIl8Za0XIphMl/aiy7837SzrQe7843pIy47z3cdcAAACQd8U+EgQAAJAROkEAACCR6AQBAIBEohMEAAASiU4QAABIpCrt29CsWTNfUlKSo1JqpunTp6u0tLTgN2/k2mZmwoQJpd775nHXURGub2aK4fpybTNTDNdW4vpmqrLXt0qdoJKSEo0fPz7zqhKoffv2cZdQKVzbzDjnZsRdQ2VwfTNTDNeXa5uZYri2Etc3U5W9vkyHAQCARKITBAAAEolOEAAASCQ6QQAAIJHoBAEAgESiEwQAABKJThAAAEgkOkEAACCRqrRZIhC37777zvJtt90mSRo0aJC1XXDBBZbPP/98yxtvvHEeqgMAFBNGggAAQCLRCQIAAIlUdNNhy5cvt7x48eIKH//ggw9KkhYuXGhtkyZNsnzrrbdavuKKKyRJQ4YMsba11lrL8s0332y5V69eVSkb1TBz5kzLO+20k+Vff/1VkuTcyvNpw+sZXXtJmjNnTi5LRMwmT54sSTrggAOs7eOPP7bcvHnBn5OZePfee6/lnj17Wo6+50+ZMsXaWrVqlb/CUKMxEgQAABKJThAAAEikgpgOmzdvnuVly5ZZ/uSTTyy/8sorklZOgUjSPffck9H7lZSUWL7oooss33///ZKktdde29r23ntvy/vtt19G74eqmzFjhuV9993X8ty5cy1H02Dh9apbt67ln376yfLXX38tSdp0002trVatWtkruAb58ssvLYd/3x06dIijnEp57733JEn7779/zJWgKkaPHm35wgsvtLzGGqv+fh5OewPZwkgQAABIpNhGgr7//nvLbdu2tRz+5plN4W8W0YiPlHrj8+mnny5JWm+99aytYcOGlrm5MjeWLFkiKXX0p3PnzpbDvYHSCf/9XHvttZb32msvy1tttZWk1NHD6HojVfjb+RdffGG50EaCvPeWo9GrqVOnxlUOMhBer0WLFsVYCVZn+vTplocPH275pZdesvzBBx+s8rxHHnnEcrhX26uvvmr5lFNOkZQ6Q5NPjAQBAIBEohMEAAASKbbpsHXXXddyixYtLGc6HdaxY8e0rz1y5EhJqTfMhjfaIn6XXHKJpNT9mapi7NixlsP9oI444gjL0b+Djz76KKP3SJLbb7/dcvi5KjQLFiywfN1110lKPSqF6evCFe3Vds0116T9ert27SxHi2IaNGiQ87qQ6q233pIkHX300dY2e/Zsy+GU9JFHHmk5uoXhhBNOSPu64fOiPdzuuOOOLFRcdYwEAQCARKITBAAAEim26bBwVVZ4t/nTTz9teffdd7fcrVu3VV4jXP3z3//+1/Kaa65pedasWZJWnjiOwhCu+BoxYoSk1CHSUDitFf47iIZaw1UH22yzjeXLLrvMcvTvqrz3wErhXl2FLDxaIRJefxSWr776yvJBBx0kSfrll1/SPvb666+3HO4DhtwIj6MKV4J17dpVUurU8+GHH2554MCBlqMVuNLK7yGnnXaatT3++ONp33uPPfbIsOrsYCQIAAAkEp0gAACQSAVxbMYuu+xieYcddrAcTmtdeumlkqQbbrjB2gYMGJD2saH1119f0srVI4hPVU6DP/744y2Hp0tHq0rC9h49elhb/fr1Lbds2dJytFnmww8/bG2XX3655XBKLYl++OEHy+F1KmTpplIOPPDAGCpBZdx3332W022AGq4u+vvf/56XmlDmtddes9ypU6dVvn7MMcdYfuCBByyHq65D48aNk1T+FFi4MWJ4u0McGAkCAACJRCcIAAAkUkFMh4XKG15bZ511VmkLN3ULT3vntOHCUVpaavnf//635XBTzGizzM0228zaevXqZTmc6gzPCQtzZf3++++Wb7zxRsvhv6Ukijakk1L/jgpNuBnmZ599tsrXw41SEb/yPm/R9HR4vcLbG5B74fe8Cy64wHL48/Oqq66SlLrStryf0aG+ffuu9utPPPGE5fAWhjgwEgQAABKp4EaCyhP1LN9//31re+aZZyxPnDjRcps2bfJXGFaxdOlSyxdffLHlaD8gKXXvj5dfflmStOWWW1pbdLJ8Ln3zzTc5f49i8fnnn6dtz2S0LZf++c9/Wg5v5o4WVJS3QAL5Ey10kKTDDjtstY8Nj81o3bp1rkrCCkOHDrUcjv6EozvhQpN//OMfkqQ6deqkfb3we/0nn3xi+csvv5SUui9bOPLUvn37KteeK4wEAQCARKITBAAAEqlopsOiYe577rnH2kaPHm05HHYNt/Xec889JaXuRcCN07n17bffWg6nwELvvvuu5VatWq3y9fBYFcRn1113zev7LV682PKECRMkpX7mwxsqQ9FQe7169XJYHSrjzTfftPz222+nfUz37t0lSaeccko+Skq8RYsWSUq9+Tz8ORhOgYX7AKUT7s8V7h8U7jUUOfvssy2feeaZVag4fxgJAgAAiUQnCAAAJFLRTIdFmjZtajlaVSRJnTt3tnzrrbeuksMhvvAk8oYNG+akziQ755xzLIerA8IpyXRTYLkUnZIc7U8icaJ8ZYQrfSoSrtYKT6UeO3aspNTVeH/++aflwYMHWw5PsG/QoIEkqWPHjtYWTneFKwg5PT5eH3zwgeWTTz457WMOOeQQy9GRN0xf5kf0uZo9e3barw8aNMhyuBfX008/LSl1Gvqdd96xPH/+fMvh9FqUzzjjDGsr1JWbjAQBAIBEohMEAAASqeimw0IdOnSwHG6WGG4C9dRTT0mSTjvtNGubNm2a5UsuucRyo0aNclJnUnz00UeSpDfeeMPawiHSaEVIHKJpsLCeQtqwK27h1vXh39Ghhx5qeeutt17ta4TD5OFUY+3aZd9mwqnncNVZuKFmePxNtFFjNC0mSRtvvLHlcNi+efPmq60NuRFNl+62224VPjbcDDW8psi9WrVqSZLWX399a5s1a5bl8DaTilZPb7LJJpabNGli+bvvvrMcHYXUrl27DCvOH0aCAABAItEJAgAAiVTU02GhDTbYwPLw4cMt9+zZU5J0wAEHWNu1115recqUKZbL24gNlRNtyBVueNeyZUvLXbt2zXkN4Vk26U6GP+qooyxfccUVOa+nWPTv39/yFltsYfn111+v9GtstdVWlo877jjL0TTIZpttllFtL774ouVwCJ+zpuJ38803S0pddVme8CRy5Fe0Cm/cuHHWFk5hzpkzx/K2225r+cQTT5QknXTSSdYWTmVGX5dSp8N69eqVjbLzgpEgAACQSDVmJCgU7j2x7777Slp5Y5iUOlrw7LPPWo5GhSq6ARSVF16LXO3JFF7Pu+66y/Kll15quaSkRFLqKeSFum9F3MJ9Xsrb8yWfnn/++bTt4WIH5M/MmTMtR/vIlOfUU0+1zM3r8Yu+D0qpo6pVEZ0QL6X+/AxHA4tplJaRIAAAkEh0ggAAQCLVmOmwcMv+kSNHWo72LgmnTEK77LKL5Xwf5ZAE4Y1z2RYNy//73/+2tjvvvNNyOBQfbdOPmuPII4+Mu4RECvfXKi0tXeXrnTp1sjxkyJC81IT8iRbASKlTYOH+Ql26dMlrTdXBSBAAAEgkOkEAACCRim46LNzP4I477rA8bNgwy99///1qXyNcKRbeLV/RduFYveiohPDIhHDPpn/961/Vfo/HHnvM8rnnnitJmjt3rrWdd955lsOTkQFkx08//WQ53f5A4X5ArMCsebbffvu4S8gqRoIAAEAi0QkCAACJVNDTYQsWLLA8atQoSanb+0+dOrXSr7XffvtZvv766y3vvPPO1SkRgWg6MZxWDKcmw2t3+umnW27UqJEkaeLEidZ29913W37zzTctT58+3XJ0vEOPHj2sLZwOQ80TTrXOmDHD8uabbx5HOYlx8cUXW16+fPlqH7vDDjvkuhzE6LPPPou7hKxiJAgAACRSQYwELVy40HJ4CNsJJ5xg+aOPPqr063Xs2NFyv379JKXuB8QN0PmzbNkyy+FI0P3332+5adOmkir3G0a4/0Tnzp0lSX369Kl2nSgO4We3ohEJVE95x2OEN0PXrVtXknT11VdbW3jAJmqer7/+Ou4SsoqRIAAAkEh0ggAAQCLlfTrsjz/+kCT17dvX2saNG2f5iy++qPRrHXTQQZavuuoqy23btrVcp06djOpE1W233XaSpAMOOMDa/ve//6V9bHjDdDjsHllvvfUs9+rVy3I29hpCzTBmzBjL+++/f4yV1EzhwpR0n1Fp5T5r4d5AqNk6dOhgOZySTrdnVDEozqoBAACqiU4QAABIpJxNh4X7ufzf//2f5Wh6JNzjozLq168vSRowYIC19e7d2zLbs8evcePGklJXkjz00EOWK9rDZ+DAgZbPPPNMy+uuu262SkSRC/cJApB/G2ywgeU2bdpYnjx5suXZs2dLkjbbbLP8FZYhRoIAAEAi0QkCAACJlLPpsP/85z+Ww43x0mnXrp3lY4891nLt2ivLO+ussyRJ9erVy1aJyJGGDRtaDqcswwxUVrdu3SwPHTo0xkqSZcMNN7TctWtXy9ERRsCtt95quVOnTpYvvfRSSdKQIUOsrUWLFvkrrAoYCQIAAIlEJwgAACRSzqbDLrroorQZAKoi3AiR88LyJ5zWfvbZZ2OsBIVqr732snz00UdbfvLJJyVJzZo1s7bbbrvNciGt5mYkCAAAJFJBnCIPAACKS926dS0PGzbM8tZbby0pdV+/a665xnIh3STNSBAAAEgkOkEAACCRmA4DAADVEk6NXX311Sn/LWSMBAEAgESiEwQAABLJVeVUZufcHElVO/4dm3rvm8ddREW4thnj+tZsBX99ubYZK/hrK3F9q6FS17dKnSAAAICagukwAACQSHSCAABAItEJAgAAiUQnCAAAJBKdIAAAkEh0ggAAQCLRCQIAAIlEJwgAACQSnSAAAJBIdIIAAEAi0QkCAACJRCcIAAAkEp0gAACQSHSCAABAItEJAgAAiUQnCAAAJBKdIAAAkEh0ggAAQCLRCQIAAIlEJwgAACQSnSAAAJBIdIIAAEAi0QkCAACJVNSdIOdcXefc/c65Gc6535xzHzvnusRdF7LDOdfHOTfeObfYOTc87nqQXc65Ec65H51z851zU51zZ8RdE7KDz24yOOe2cs4tcs6NiLuWTNWOu4Bqqi3pO0n7SPpW0kGSnnTObe+9nx5nYciKHyQNlNRJ0lox14Lsu07S6d77xc651pJed8595L2fEHdhqDY+u8lwh6QP4i6iOop6JMh7v9B7f433frr3frn3/nlJ30jaOe7aUH3e+5He+2cl/Rx3Lcg+7/1E7/3i6H+u+LNFjCUhS/js1nzOuR6SfpU0Ou5aqqOoO0F/5ZxrIamVpIlx1wKgYs65O51zv0v6QtKPkl6MuSQAFXDONZbUX9KFcddSXTWmE+ScqyPpEUkPeu+/iLseABXz3veW1EjS3pJGSlq8+mcAKAADJN3vvf8+7kKqq0Z0gpxza0h6WNKfkvrEXA6AKvDeL/Pej5O0kaRecdcDoHzOubaSDpA0KO5asqHYb4yWc85Jul9SC0kHee+XxFwSgMzUFvcEAYVuX0klkr4t+/GrhpJqOee29d63i7GujNSEkaC7JG0j6RDv/R9xF4Pscc7Vds7Vk1RLZR+yes65ou+4Q3LOreec6+Gca+icq+Wc6yTpWBX5TZYow2e3RrtHZb+stF3xZ6ikF1S2ErDoFHUnyDm3qaSzVXYhZjnnFqz4c3zMpSE7rpT0h6TLJZ2wIl8Za0XIFq+yqa/vJc2VdJOkvt7752KtCtnCZ7eG8t7/7r2fFf2RtEDSIu/9nLhry4Tz3sddAwAAQN4V9UgQAABApugEAQCARKITBAAAEolOEAAASKQqLVls1qyZLykpyVEpNdP06dNVWlrq4q6jIlzbzEyYMKHUe9887joqwvXNTDFcX65tZorh2kpc30xV9vpWqRNUUlKi8ePHZ15VArVv3z7uEiqFa5sZ59yMuGuoDK5vZorh+nJtM1MM11bi+maqsteX6TAAAJBIdIIAAEAi0QkCAACJRCcIAAAkEp0gAACQSHSCAABAItEJAgAAiUQnCAAAJBKdIAAAkEhV2jEayKUBAwZYvuqqqyx36NDB8iuvvGJ57bXXzk9hAIC86d69u2XvveWnn3466+/FSBAAAEgkOkEAACCRauR02OLFiy0vWbJEkjRu3DhrmzlzpuWTTz7Zcu3aNfKvo+D9+uuvkqTbb7/d2tZYY2X/fMKECZa//fZby9tvv30eqkN1lZaWSpKWLl1qbe+//77lww47zHJ43avi1FNPlSTdfffd1larVq2MXgtVt2zZMsvTpk2z3LdvX8svvvhiXmtCcbn22mstv/DCC5YvuOCCnL4vI0EAACCR6AQBAIBEKur5n2gaRZJuvvlmy2PGjLH83nvvrfY1wqmxcEUS8qd+/fqSpEMPPdTahg8fHlM1yNSsWbMsP/TQQ5bvueceSdLy5cutLZzWDKfAnHMZvXf072WdddaxtoEDB1quW7duRq+LyglvQWjdurXljTbayPKCBQssN2zYMD+FoeBFP7vD6bA111zTcteuXXP6/owEAQCARCqakaA5c+ZIkm677TZrC/Mff/xhOdxXYLPNNpMkrbvuutYW3mgb3kjZq1cvSVLz5s2zVTYqIer1R9cKxenyyy+3PGLEiFhqGDRokOWePXta3mKLLeIoJ/G+//57y/PmzbPMSBAi0aKlP//809oOOeQQy3vssUdO35+RIAAAkEh0ggAAQCIV3HTYokWLLIc3Nt51112SUodUyxPuHzN27FhJqXuUtGjRwvLs2bMtR6/NdFh+Rdf8o48+irkSVEc4hJ1uOqxly5aWL774YsvhDdPp9gl68803LT/zzDPVrhP5E96agOL15ZdfWg4XED3wwAOW11prrUq/XviZfvvttyVJ2267rbWF09q5xkgQAABIJDpBAAAgkQpuOuytt96yfP3111f6eeFQ2htvvGG5cePGkqSff/45C9UhF6KjTSZNmlThY999913Lm2yyiSROky8URxxxhOVffvllla+HU11VWR109tlnW95mm20sh3sNRU477TTLm266aaXfA7kR7vsU7iWE4hKe6v7ZZ59ZHjBggOUtt9yy0q934YUXWv7pp58kSaNGjbK2cOo81xgJAgAAiUQnCAAAJFLBTYdVdFxCq1atLO+3336Wwy23oymw0IwZM6pfHHKiUaNGklJPC442rvyrsD3aAPPII4/MYXWorHC6K91nMFMffvih5ehE+vJEU6SSVLt2wX17S7SPP/7Y8uabbx5jJaiq8PMcTnGGGxxWJDyiKlxtFn3fiGu6lJEgAACQSHSCAABAIhXcePGdd95peffdd7fcuXNnSakbHTZo0KDSrxvdgY7CddZZZ1kubzoMyRGdKRSeEfj777+v9jmXXHJJTmtCeuFU6DrrrGN57ty5lidPnpzXmlB9gwcPliS988471rbTTjtZLikpWe3zw+my6667zvKCBQssd+rUSVLuzwgrDyNBAAAgkQpuJCi6SVaSevfunbXXHTNmTNZeC7lX0VEKqDnCfb0uuugiyxMnTpRUuZsv9957b0n8W4lLvXr1LIfHpzz00ENxlINqmD9/vuVor746depY2yOPPGK5fv36q32tfv36WR46dKjlcAHDiy++mHmxWcB3DAAAkEh0ggAAQCIV3HRYVTz99NOWwyG88OTiaE+DCRMmpH2Nrl27WmbvisIRTmuE+1KgcP3666+Wn3zyScsVDXeH2+VXdK2bNGliOZxq2WuvvSSlDtsDqJwff/zR8gEHHGB59uzZklKntcK9+soTTZnddNNNab9+++23Z1RnLjASBAAAEolOEAAASKSCng6LTheXpB9++EGSdNVVV1nbiBEj0j6vopVFG2+8seVhw4at9rEAyhcOo++7776Wp02blpP3C1ceHXTQQTl5D+RGRUeeIPfCn42vvfaa5Y4dO6Z9TPQzcezYsda2/vrrWz755JMtL1q0yHJ0/FV4a0p4LNLBBx+cUf25wE99AACQSHSCAABAIhXEdNiyZcssf//995bD4fXvvvtOUurmTOG0VpcuXSw/9thjlsPtuSNLly61/MILL1g+7rjjJEm1atWqUv0AUoe+w1yRqmyMGa4IO//88y23bdu20u+HeDz44IOWBw0aFGMlyfXmm29ajo6rkFJXZYafwe22205S6mbDYX7iiScshyfDRz+vw6mzG2+8sVq15wojQQAAIJHoBAEAgESKbTosnAL7+OOPLe+6665pHx+dLr///vtb2xZbbGH5jz/+sPzpp59afu+991Z5rVmzZlk+9dRTLUebJYY11K5dEDOGiVOZKZJXX31VknTkkUfmpSasaoMNNrD8wQcfWH7qqacsRytP1lxzzSq99v333y9Juvrqq6tTIvKsc+fOljk7rDC89dZbklI3Qgw/j02bNrX8v//9z3J0lmffvn2t7ZlnnrEcTo2l26Q42mxRkjbbbDPL4ebF4XvHgZEgAACQSHkf5ohGgG677TZru/TSS9M+NrpRWZJOOukkSamnFf/++++Ww30H3n33Xct169aVlHpTVjjyFO4TtM8++0iSjj76aGsL9yVq2LBh2jo32mijtO3IXGWOzbj33nslSddcc421tWjRIqd1oXxrr7225TPOOKParxedKM9IUHEJf+MP/fnnn5bnzZsnKfXfDHInuhF9yy23tLbw6IoDDzxwtc8fMmSI5XDW5aWXXlrt88LRocMPP9xy3KM/IUaCAABAItEJAgAAiZSX6bDwJtdbb71VknTZZZdZW3TzlbRyu20pdR+DaBpsxowZ1nbmmWdafuONNyxvv/32lh9//HFJUuvWra1t8eLFls8991zLDzzwgKTU/SzC07BD4YnzU6dOTfsYZO7KK6+0fO211672sdG02F+fh+L24Ycfxl0CMlDePmvh1Eh4JBJy75hjjpGU+jO1cePGlX7+/PnzLb/zzjtpHxPuQRQuWoo0adKk0u+XT4wEAQCARKITBAAAEikv02HPP/+85WgaLFxpNWrUKMs777yz5SlTplgeOnSopNST48O71MO718NVZemG/KIVY5K0ww47WI6m6rp162Zt4VRLiG3fcyu8LigM0crOzz77zNqibfUlqU6dOtV+j2jvJ0nq3r17tV8P+de+fXvL4XEm4arcaGVS//7981dYgmX6WYpOhn/kkUes7ddff7W87bbbWt5jjz0yrC5ejAQBAIBEohMEAAASKS/TYb17916lLTzJ/Z///KflaBMtSfr8889X+7p33XWX5dNPP91yRSdRV2TvvfdOm5E/4ZTkNttsY3nSpEmrPPZf//qX5fDfWiFtyFWswpOho00pw5Ojf/nlF8tVmQ4Lp7Lff/99yz169LC8YMGCVZ5Xv359y+HGqShM4ZE233zzjeVwE1oUrkcffVSSNHDgQGsLj8qJjuMoZowEAQCARMrLSFBJSYnl6PDS6IYrqfze5AknnGA52ta7S5cu1hbuO1Dd0R8Urg4dOliePHnyKl/n2ufOKaecYjndYcThAoGq7DsS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WB1Qc9x2222WL7vssoxe49FHH612HRdccIHl9u3bS5LOPPNMa+vWrZvlJk2aVPv9kB3z58+3PGLEiAofX1JSIolbEwpddJTJCy+8YG3htX777bctd+7cOX+FZREjQQAAIJEKeiQovFHu7rvvliQde+yx1hbuR7H55ptb/vrrr1d5rV9++cXyqFGjLDMSlAzRzbzhDcBPPvmk5YEDB6Z9XrS/1E033ZTD6uIX3ahaGeutt57lvffeu9LP22abbSyHCxl++ukny2+++abl999/P+W/krTzzjtbbtu2baXfG7kR3RDdpUsXa4tupv2r9957z3I0yofCVqdOHUmp1yu8GXrmzJl5rynbGAkCAACJRCcIAAAkUkFPh4UOOeQQSdKOO+5obeFNWc2aNbOcbjos1LNnzyxXh0IxadIky48//rjlaO+ouXPnWlu0df/qjB49OovVFa5x48ZZDoe70+3Vs+aaa1qOFixUx+LFiy1vt912ltN9jp966inLTIfF77HHHpMkTZs2zdpOOOEEy0OGDLHcqFGj/BWGrLrkkkssjxw50vLnn38eRzlZxUgQAABIJDpBAAAgkYpmOixy8803Ww63Z4+29K+MJUuWZLUmxCPaz+bDDz+0toqmr9Zee23L5557ruVwldPf//53y7VrF91HJCNNmzZNm/MhXDWUbgqsXr16ls8666y81ITyhSvB3njjDUlSq1atrO2WW26xzBRYzRCu7AwNHTrU8oABAyxnY5o8XxgJAgAAiUQnCAAAJFLRjfXvtttull966SXLBxxwgOVweD2dK6+80vI999yTxeqQC3/88Yfl/v37W77xxhslSc2bN7e2fffd1/J1111nOdpMM1zZFE6NIfeWLVtm+eqrr7Y8aNCg1T5v6tSplqtyOj2yZ/z48ZbDk+GjFZZnnHGGtUUb7KFmCjfDDFd2vv7665YPPvjgfJZULYwEAQCARKITBAAAEqnopsOi1QhS6rRXeL5QRcLT6VH4whWBN9xwg+V+/fpJSj31PJzuQmH44osvJEn333+/tYXXNBROpfznP/+RJK2//vo5rA7lWbRokeWKVl2Gm9U2bty40u8Rbn5Z3ia34ecb8Stvk9lwaqyYMBIEAAASqaBHgubMmWO5Y8eOklK36V66dGlGrxu9FgpDtG9TeJP67bffbvnRRx+13LlzZ8vRsQlJ2cunmMyYMcPy9ttvLyn1xujyrLHGyt/LopugK3O8CbIv/HsPR9qXL19uObpe4T5b5YmO2AhfO7xB/quvvkr7vMsvv1ySNH/+fGtj/yFkCyNBAAAgkegEAQCARCroeYRvvvnGcnRzZaZTYKFwqiUcjkU8opOmw2NQevXqZXnHHXe0zNRXcXj88cctV2YaLBLeXNmuXTtJqceYHHPMMZYPOeQQyxtssEFGdaJ8kyZNsvzf//7XcjhlucUWW0gq/2bomTNnWg5vrh4+fPgqjw2nuKJ9vSTpk08+kSR1797d2p544gnL7PeF6mAkCAAAJBKdIAAAkEgFPbfQoUMHyw8//LAk6aSTTrK28DiFqgiHaBG/Cy+8UFLqapRTTz3VMlNgxSecuohWdP7vf/+zttmzZ1f6tV577bW0uXfv3pavvfZaSVKfPn2srUGDBlWoGFLqdGR5+/ZsvPHGls877zxJ0rrrrmttpaWllv/9739bHjZsmOUWLVpISv13cskll1j+/fffLUcnmP/000+V/H+BXAqPzagJKzcZCQIAAIlEJwgAACRS0cwzHHXUUZKkrbbaytrCzbNC4WqUI444QpL066+/5rA6VMcBBxwgSRozZoy1hcPko0aNsrzddtvlrzBkLFzdE01lz5s3z9rCz+4vv/xiOdxQ78Ybb5SUOvweCjft+8c//iEpdVO/p59+2nJNGLbPh2gVrpS6Ei8UbV4oST179pQkLVy40NrCVZ4jRoywHK7iOuussyRJV155pbWF02jhe0fPO/TQQ9O+FvKrpn2WGAkCAACJRCcIAAAkUtFMh0XCjfPKEw6fDxw4UFLqqpFx48ZZDofoGWLNvunTp1sOV5XUqlXL8nPPPScpdfXIueeea3mvvfayPGXKFMvrrbdeVmtFboWfrzCH/y7Cz/dBBx0kaeVnWEpdYZbOM888YzmahpNSV5WifB9//HGFj4mmwELh9PUrr7yS9nnvvvuu5VatWklKXYEWtf1VtPKP0+QLW3RGYLFhJAgAACRS0Y0EVUZ4Y3Q4AhSpW7eu5Zp2k1ecFixYIEnq2rWrtYUjN+FW9/vss4/ltdZaS5J0yimnWFs4EhTeRBu9h8RIUE33t7/9TZL00ksvWVu3bt0sh0c5pDN58uTcFFaD/fzzz5bDEfVw365QtOfaxIkT0z7v0UcftRyO9EQ3QXfp0qXC55V3gzYKy/rrrx93CRlhJAgAACQSnSAAAJBINXI67JZbblnt18N9LMo7/RhV17p1a0mpezI99NBDlsMpsHTuu+++tO1HH3205Q033LA6JaIIhaeW77rrrpYrmg5r06ZNzmpKgvBWgYpuGwivUfjY8ePHW472cpJWHnkUXqPwseEtC0AuMRIEAAASiU4QAABIpLxPh0XDoL169bK20047zXK0IqSqwlVD11133WofG+0/guzq37+/pJUnS0srjztZnWhIPDptXJK23HJLyzfccINlhskLS/i5C49I2GGHHSzvscce1XqP8HiMDz/8cLWPrV175be0Dh06VOt9k+jwww+3fOmll1oO9/AKp7WiVWHhfmuhQYMGWQ5Xf0WnyEdHo0hSo0aNMi0bBWDp0qVxl5ARRoIAAEAi0QkCAACJlPfpsGjr8wcffNDawq3an3zyScvNmjWz3LRpU0nSd999Z23hkQzhEG26E+Ovv/56ywy75kY0rRlOWb333nuWw1O9Q3PmzJEknXDCCdZ28803W1533XWzWieqJ5wCO/DAAy2H1/r333+v9vtEJ5Pfdddd1lbev6HIzjvvbHmrrbaqdg1JU6dOHcsNGza0HF7z8O+1KpvNpjtFvm3bthnVicLz2muvWQ43NS10jAQBAIBEyvtIUN++fSVJX375pbWF2+JvvfXWlsPfOKL9QUaNGmVt5d2MF/52Ev2mccEFF1hbePMksu/4449Pm2+//fY4ykGWhQdZhqM/ofD4heh4k3CUIbRkyRLL4V5RV1xxhaTyP+fhjbbRKEM4woyqCw+zff311y1Hh5hK0siRI1f7GhdeeKHlcGRup512slzeYakoTA0aNLAcXtMJEybEUU5WMRIEAAASiU4QAABIpLzPC22++eaSUo9QCPcMOuywwyyHU2Zhrkh4I21F+4oAqJqDDz7YcnjTciicVtl7770lSc2bN0/72OjGeEl68803K11HeKPtO++8I4lplmwKb1p+6qmnYqwEcatVq5bl8hYWhbeqcGM0AABAgaMTBAAAEim2ZVKXX3655XC77fDU8dD7778vSRoyZEjar6+zzjqWmQIDcmf33Xe3fM4551i+44470j6+KlNc6YSrOcNVSt27d7dcUlJSrfcAUDnhcTThCsJwL6liwkgQAABIJDpBAAAgkQpi18BwuPvEE09M+5ioffDgwXmpCUB6TZo0sRye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C/fhi0bgpZX7RElSaWmp5WjG5v3337e2TTfd1PKzzz5rmZEgAACAGNAJAgAAiZT36bBrr71WUuo+IqGuXbtaDm+YrMo02KJFiyxHw3HPPfdche/HzZXFJRqKXbhwYdqvs2V/fMIb4ps0abLK17/77jvL4b5c4bB7dBJ1eOzGgQcemNU6UXUPPvig5WhRQjhFEgqPRwhvqI32bYsWvEjSo48+ajncOw7xefvttyWlngp/zTXXWA4/r6+99toqzx83bpzlQt1/j5EgAACQSHSCAABAIuV9Oqxv376SUo83CPf+GD58uOXyttOvSDisetZZZ63y9fAk6kceeaTa74d4zJ07V5L0ySefpP16ly5dVvv88MT5GTNmWA6HcKNh+fL2oULFwuMyquKEE06QlHqKPFOc8bvhhhssv/HGG5JSpz+jU8ElqVevXpajPYUkaaeddpIkjR8/3to6duxo+Z133rG8ww47ZKNsZGCDDTaQJM2bN8/axowZYznd9LW08mfpZpttlusSq42RIAAAkEh0ggAAQCLlfTps1113lSSNHTs2q68bbsTWp0+fVb4enjh++eWXW2YKrPCFG3KFp1V//PHHq31eNJ0iSXvuuaeklasdJOnHH3+0/M0331gON3D74osvJEk333xzVctOtOXLl1t+9dVXJaUOnZfnxBNPtByuQkK8Zs2aZTn8PEYblobCjWmPOeYYy+lWB0WfSyl1FWB4rEq4sR7yK5quDL8/Rqe+S6nXL3T66adLklq0aJHD6rKDkSAAAJBIdIIAAEAixXaKfLaFK77Cu9Qj//nPfywfdNBBeakJ0pIlSyyHq7GiaSZJevPNNyWtPB/ur3777TfL4SnxFQnPrZkzZ84qX7/44osth5tmhiuQ0m30h4qFq4Luu+8+Sek/l39Vmccg/6KVmH8VngcVadmypeUrrrii0u/Rs2fPtK+B+IWrvMINLsvzj3/8I5flZBUjQQAAIJGKeiRo0KBBlsMbMddYY9W+XThShNyIRn1uu+02awv3bKroRuZQOAITjsyE+5GEN2hGLrvsMsu9e/e2vPHGG1f6vVF54SjdE088Yfnee++1HI3u7LPPPtYWfh5vuukmy+H+YSh84SKCSN26dTN6LUZdi8NXX31luaKfu8WgOKsGAACoJjpBAAAgkYpuOizckj3ccj0cigtvrnz66aclSc2aNctD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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# How many numbers to display.\n", "numbers_to_display = 25\n", "\n", "# Calculate the number of cells that will hold all the numbers.\n", "num_cells = math.ceil(math.sqrt(numbers_to_display))\n", "\n", "# Make the plot a little bit bigger than default one.\n", "plt.figure(figsize=(10, 10))\n", "\n", "# Go through the first numbers in a training set and plot them.\n", "for plot_index in range(numbers_to_display):\n", " # Extrace digit data.\n", " digit = data[plot_index:plot_index + 1].values\n", " digit_label = digit[0][0]\n", " digit_pixels = digit[0][1:]\n", "\n", " # Calculate image size (remember that each picture has square proportions).\n", " image_size = int(math.sqrt(digit_pixels.shape[0]))\n", " \n", " # Convert image vector into the matrix of pixels.\n", " frame = digit_pixels.reshape((image_size, image_size))\n", " \n", " # Plot the number matrix.\n", " plt.subplot(num_cells, num_cells, plot_index + 1)\n", " plt.imshow(frame, cmap='Greys')\n", " plt.title(digit_label)\n", " plt.tick_params(axis='both', which='both', bottom=False, left=False, labelbottom=False, labelleft=False)\n", "\n", "# Plot all subplots.\n", "plt.subplots_adjust(hspace=0.5, wspace=0.5)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Split the Data Into Training and Test Sets\n", "\n", "In this step we will split our dataset into _training_ and _testing_ subsets (in proportion 80/20%).\n", "\n", "Training data set will be used for training of our model. Testing dataset will be used for validating of the model. All data from testing dataset will be new to model and we may check how accurate are model predictions." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "# Split data set on training and test sets with proportions 80/20.\n", "# Function sample() returns a random sample of items.\n", "pd_train_data = data.sample(frac=0.8)\n", "pd_test_data = data.drop(pd_train_data.index)\n", "\n", "# Convert training and testing data from Pandas to NumPy format.\n", "train_data = pd_train_data.values\n", "test_data = pd_test_data.values\n", "\n", "# Extract training/test labels and features.\n", "num_training_examples = 6000\n", "x_train = train_data[:num_training_examples, 1:]\n", "y_train = train_data[:num_training_examples, [0]]\n", "\n", "x_test = test_data[:, 1:]\n", "y_test = test_data[:, [0]]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Init and Train Logistic Regression Model\n", "\n", "> ☝🏻This is the place where you might want to play with model configuration.\n", "\n", "- `polynomial_degree` - this parameter will allow you to add additional polynomial features of certain degree. More features - more curved the line will be.\n", "- `max_iterations` - this is the maximum number of iterations that gradient descent algorithm will use to find the minimum of a cost function. Low numbers may prevent gradient descent from reaching the minimum. High numbers will make the algorithm work longer without improving its accuracy.\n", "- `regularization_param` - parameter that will fight overfitting. The higher the parameter, the simplier is the model will be.\n", "- `polynomial_degree` - the degree of additional polynomial features (`x1^2 * x2, x1^2 * x2^2, ...`). This will allow you to curve the predictions.\n", "- `sinusoid_degree` - the degree of sinusoid parameter multipliers of additional features (`sin(x), sin(2*x), ...`). This will allow you to curve the predictions by adding sinusoidal component to the prediction curve.\n", "- `normalize_data` - boolean flag that indicates whether data normalization is needed or not." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "# Set up linear regression parameters.\n", "max_iterations = 10000 # Max number of gradient descent iterations.\n", "regularization_param = 10 # Helps to fight model overfitting.\n", "polynomial_degree = 0 # The degree of additional polynomial features.\n", "sinusoid_degree = 0 # The degree of sinusoid parameter multipliers of additional features.\n", "normalize_data = True # Whether we need to normalize data to make it more unifrom or not. \n", "\n", "# Init logistic regression instance.\n", "logistic_regression = LogisticRegression(x_train, y_train, polynomial_degree, sinusoid_degree, normalize_data)\n", "\n", "# Train logistic regression.\n", "(thetas, costs) = logistic_regression.train(regularization_param, max_iterations)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Print Training Results\n", "\n", "Let's see how model parameters (thetas) look like. For each digit class (from 0 to 9) we've just trained a set of 784 parameters (one theta for each image pixel). These parameters represents the importance of every pixel for specific digit recognition. " ] }, { "cell_type": "code", "execution_count": 7, "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
0123456789...775776777778779780781782783784
0-9.7725790.00.00.00.00.00.00.00.00.0...-0.009417-0.007525-0.019028-0.015672-0.0112550.00.00.00.00.0
1-12.9192640.00.00.00.00.00.00.00.00.0...-0.007120-0.004079-0.000066-0.000032-0.0000070.00.00.00.00.0
2-7.2626800.00.00.00.00.00.00.00.00.0...0.0003850.000191-0.0001550.0001120.0002140.00.00.00.00.0
3-7.5402220.00.00.00.00.00.00.00.00.0...-0.037224-0.019561-0.005837-0.0018350.0001260.00.00.00.00.0
4-9.9325850.00.00.00.00.00.00.00.00.0...-0.1045040.000216-0.001270-0.033175-0.0324750.00.00.00.00.0
5-7.6354570.00.00.00.00.00.00.00.00.0...-0.020391-0.014374-0.005743-0.035149-0.0328780.00.00.00.00.0
6-9.0472950.00.00.00.00.00.00.00.00.0...-0.0034560.000079-0.000917-0.022326-0.0218540.00.00.00.00.0
7-10.4917230.00.00.00.00.00.00.00.00.0...0.058497-0.0420110.0867800.1614910.1565860.00.00.00.00.0
8-6.3110990.00.00.00.00.00.00.00.00.0...-0.005436-0.006730-0.001873-0.025549-0.0385800.00.00.00.00.0
9-8.1991280.00.00.00.00.00.00.00.00.0...-0.0048380.010311-0.007995-0.073160-0.0563800.00.00.00.00.0
\n", "

10 rows × 785 columns

\n", "
" ], "text/plain": [ " 0 1 2 3 4 5 6 7 8 9 ... 775 \\\n", "0 -9.772579 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... -0.009417 \n", "1 -12.919264 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... -0.007120 \n", "2 -7.262680 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.000385 \n", "3 -7.540222 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... -0.037224 \n", "4 -9.932585 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... -0.104504 \n", "5 -7.635457 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... -0.020391 \n", "6 -9.047295 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... -0.003456 \n", "7 -10.491723 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.058497 \n", "8 -6.311099 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... -0.005436 \n", "9 -8.199128 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... -0.004838 \n", "\n", " 776 777 778 779 780 781 782 783 784 \n", "0 -0.007525 -0.019028 -0.015672 -0.011255 0.0 0.0 0.0 0.0 0.0 \n", "1 -0.004079 -0.000066 -0.000032 -0.000007 0.0 0.0 0.0 0.0 0.0 \n", "2 0.000191 -0.000155 0.000112 0.000214 0.0 0.0 0.0 0.0 0.0 \n", "3 -0.019561 -0.005837 -0.001835 0.000126 0.0 0.0 0.0 0.0 0.0 \n", "4 0.000216 -0.001270 -0.033175 -0.032475 0.0 0.0 0.0 0.0 0.0 \n", "5 -0.014374 -0.005743 -0.035149 -0.032878 0.0 0.0 0.0 0.0 0.0 \n", "6 0.000079 -0.000917 -0.022326 -0.021854 0.0 0.0 0.0 0.0 0.0 \n", "7 -0.042011 0.086780 0.161491 0.156586 0.0 0.0 0.0 0.0 0.0 \n", "8 -0.006730 -0.001873 -0.025549 -0.038580 0.0 0.0 0.0 0.0 0.0 \n", "9 0.010311 -0.007995 -0.073160 -0.056380 0.0 0.0 0.0 0.0 0.0 \n", "\n", "[10 rows x 785 columns]" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Print thetas table.\n", "pd.DataFrame(thetas)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAj8AAAJBCAYAAACphNSGAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4xLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvDW2N/gAAIABJREFUeJzs3XeUVfW9/vHPFkT6UKR3kN67hSYEERSwxBo1lmjUGDUarylmxUSTeK9XvfYEYyEiRo2xIyJERZoiUqX33ntV8Pz+0PzW3d/PkzuHMnNm8n2/1nLdu5+1Z9hz5uxzvjnz7M9OMpmMAQAAxOK4XB8AAABAYWLxAwAAosLiBwAARIXFDwAAiAqLHwAAEBUWPwAAICosfgAAQFRY/ByBJEmqJEnyWpIke5IkWZEkyaW5PiaguEiS5KYkST5LkuRAkiTP5fp4gOImSZITkiR5+tv3n11JksxIkmRgro+rOCmZ6wMoph43sy/NrIaZdTCzd5IkmZnJZL7I7WEBxcJaM7vXzAaYWZkcHwtQHJU0s1Vm1tvMVprZIDN7OUmStplMZnkuD6y4SJjwfHiSJClnZtvMrE0mk1n4bfa8ma3JZDI/y+nBAcVIkiT3mlndTCZzZa6PBSjukiSZZWa/yWQyr+b6WIoD/ux1+JqZ2cF/Lny+NdPMWufoeAAAEUuSpIZ9897EXx+yxOLn8JU3s51BtsPMKuTgWAAAEUuS5Hgze8HMhmcymfm5Pp7igsXP4dttZhWDrKKZ7crBsQAAIpUkyXFm9rx900G9KceHU6yw+Dl8C82sZJIkTf9X1t74uBEAUEiSJEnM7Gn75sKb8zOZzFc5PqRihcXPYcpkMnvM7O9m9tskScolSXKamQ21b1bfAPKRJEnJJElKm1kJMyuRJEnpJEm48hQ4PE+aWUszG5zJZPbl+mCKGxY/R+ZG++YS3Y1m9qKZ3cBl7kDW7jKzfWb2MzO77Nv//66cHhFQjCRJ0sDMfmjfjFpZnyTJ7m//+16OD63Y4FJ3AAAQFT75AQAAUWHxAwAAosLiBwAARIXFDwAAiAqLHwAAEJXDmq1Rvnz5TNWqVQvqWFDMrVy5cnMmk6mW6+MoyipWrJipUaNGrg8DRdTixYs5h/JRpkyZTF5eXq4PA0XUhg0bsjqHDmvxU7VqVfvZz7hxObQbb7xxRa6PoairUaOGPfjgg7k+DBRRQ4YM4RzKR15enl122WW5PgwUUQ888EBW5xB/9gIAAFFh8QMAAKLC4gcAAESFmwkeYyVKlHDZa6+95rITTjghtX311Ve7fTZu3OiygwcPuoxblODfyTc3q05T59WhQ4dS25wHyLUyZcq47Ljj/GcMX375ZWr766+/dvt89ZW/SXu9evVctnv3bpdt377dZQsWLHBZ9+7dU9t79uxx+yjqXMv2/FM/ay7wyQ8AAIgKix8AABAVFj8AACAqLH4AAEBU/m0Kz6popoqTe/fuzfd7lStXLqvv1aBBA5c1a9bMZX379nXZqlWrUtsrVvi5TKoYpo6tZEn/a9y3b5/LwpKdGSVRHL7wXChdurTbp3Llyi5T52ilSpVcpoqe4fliZrZr167/8zjNzEqVKpXV91fnQViozhbnVPEWXozyr6jX5+OPPz6rrGLFiqltVVqeOHGiy1TxX72uq3/z2muvddmWLVvy/f7qvWTbtm0u279/v8vUubBz506XhT9D2bJl3T7HGp/8AACAqLD4AQAAUWHxAwAAosLiBwAARKVYFp5ViVGVE1UhOZyQqUqYqhQ9ffp0l73++usu69ixo8saNWrksry8vNR2y5Yt3T6rV6922datW11Wq1Ytl6mfQU0aDR1pyRPFX7Vq1VymCsnz589PbauC6AsvvOAyVfxv1aqVy1RJUhX9w/NbFTPVsc2bN89lqjRat25dl23YsMFlRWViLQ6fek3MdsqxKvqvW7fOZep1fOHChantSy65xO3Tv39/l6nzShWZy5cv77LnnnvOZQMHDkxth+9LZmYjRoxwWdWqVV126aWXuuyjjz5ymXrMC6Pg7I6j0P9FAACAHGLxAwAAosLiBwAARCVnnR/1d/Js74ir/o6vBpepv3u+9957qe3wb69mZqeddprLNm/e7LImTZq4bPny5S7r2bOny8I77Kq/Cy9btsxl1atXd5nqahw4cCCrYwvv/tuiRQu3jxpKhdxTv5eGDRu6TA0uU8/nYcOGueyiiy5yWdhPq1mzpttHDUGrUqWKyzZu3Ogy1b9RP0M4yG3GjBluH9X7U53BSZMmuSzb3lzt2rVT2zt27HD7MPiwaAqHDZrpXqXqQqr9BgwY4LJRo0a5rEaNGqlt1WlT5/ddd93lsnfffddl77//vst69+7tsvB9Yvbs2W6fG264wWXhcEQzszFjxrisS5cuLlPn1eLFi1Pb6mdX/cOjwSc/AAAgKix+AABAVFj8AACAqLD4AQAAUSm0wnN4x1dVflR3J1eZokpUc+fOdVlYcDv//PPdPqpA/NZbb7lMlUZVIfL55593WViSVMVPVSqrUKGCy1RZM/z+ZrpEFg6Zo5hZfKiBZKr4n81dpc3MnnnmGZfdd999LgsHhaqCctu2bV2mLmhYunSpy8K7xpvpiwvCgXLqNUANWVOlfnVxhDo2df6Fd+Q+6aST3D7qDvSca7k3btw4lzVu3Nhl6jnZo0cPl1111VUue+CBB1wWvieoO6Kr8/bRRx91mboo4c4773TZhAkTXBZeeKMsWrTIZeq9T134oAZGhmVvM3+uqcdDrQUOHjzosmzxyQ8AAIgKix8AABAVFj8AACAqLH4AAEBUCq3wHJYdVZn3xBNPdJkqOanirrqbupoEPX78+NT2J5984vZRk2JViVFNj23fvr3L1L8RTpZu2rSp22f9+vUuW7NmjctUkVQVWjt16uSysHgeTnz+V3JxF17kT11IoO5iXqdOHZep4nL37t1dNnny5NS2KmaeccYZLlOFZPU8VdQE3LCkrO7qrp7zqqzZuXNnl6mLBtTPGk6f3rRpk9tHFZ5ViRYFK7wgRT1P1fuQKr+PHj3aZVdeeaXL1O85fF6qEnD9+vVdpu4WoN6v7r//fpedeuqpLgvfX9W5oQrg6o728+fPd5l6LNXPVbdu3dS2eu9Wr09Hcw7xyQ8AAIgKix8AABAVFj8AACAqLH4AAEBUCqTwnE0JSU2nVVMd1RRUVXhWRURVBAtLU6oEVqpUKZepnyksOpqZffbZZy5TBcgVK1aktlXRrFatWi5TxTilcuXKLlPHu2PHjtS2Kk9v2LAh369DwQufg2qa+NatW12mLgZQZXpVKFSl33DKsfo6lannnzq/q1ev7jJ1gURYoFal6OnTp7tMTXhWx6bOP1Vc3rZt2/95XCg6wgs11AUkaqJxnz59XKZeK8eOHeuyW2+91WVTp05NbY8cOdLto84D9ZxUx3HhhRe6TE1g7tChQ2p78eLFbh/1mnLKKae4TL1PqP3URTXh+7d6P1evKUeDT34AAEBUWPwAAICosPgBAABRYfEDAACiUmgTnsNyppoQrMqEy5cvd5kqKU+ZMsVlTZo0cVlYqlZlZFXyVCWttWvXuuzrr792mZq6G5ZX1UTOm266yWVq4q4qg+7ZsyerYwt/rrZt27p9VCkVuacKz9WqVXOZmpaqCoUffPCBywYMGOCycNqtOm9V8V8VFtUEd3XOqwno4fTYsERqZta1a1eXqedz1apVXaZK0OpCgrBwqoqfCudV4QsvGFGTm8Pp+2ZmlSpVcpl6Tvbt29dlw4cPd9m4ceNS2+p5qorSqlCtXtcXLFjgMvWzvvPOO6ntH/3oR24f9Xi8/PLLLlOT5FevXu2y22+/3WX16tVLbX/88cduH+VoziE++QEAAFFh8QMAAKLC4gcAAESFxQ8AAIhKzgrPyqFDh1zWqlUrl6kJqipbsmRJvv+GmuZ84MABl82ZM8dlqsisJnCqsnTjxo1T26rInM00WTOzZcuWuUwVWpXw5z948KDbh2JmwWrYsKHLwgngZv4cUlPHv/rqq6z+TVVEVOeQKh6Gz3H1XFPnkPr+qqyf7fTwsPAcTp42M2vTpo3L3n//fZepyelqCrYqQYcT59XFHOrxwLFTunRpl4WvsWb+vOrVq5fbR70Pqenhf/vb31zWvn17l6nX8euvvz7ff1MVlFWRWU1wV68N6v0qnCL94IMPun3q1KnjMnVhTOfOnV2mXmc+/PBDl4XvQ+r7T5gwwWVHg09+AABAVFj8AACAqLD4AQAAUWHxAwAAolIghWdVbg4LWGoqpZrsmpeX5zJVBm3QoIHLZs2a5bI+ffrk+29Onz7dZapMqabp1q1b12WqTBmWt0466SS3jyp9zZ0712Vbt251mSq8lS9f3mVhWVUVnsPpm2b6ccORmTZtmsvCIqKZ/52qIroq16vCpXq+qdKlmsAclkvVc1J9nZo6rqZKq2JmzZo1XRaWiNVrxapVq1zWsmVLl6nXIzWRWmXhOTN79my3T6NGjbL6Xjgy2RTRzbK7wENdBLN7926XdevWzWXqggN1LoevxWoq+JgxY1xWv359l6k7HqiCtppO/vTTT6e2r7zySrePuqBm48aNLlu3bp3L1PGq5334GqheA9T7rbpDQ7b45AcAAESFxQ8AAIgKix8AABCVQhtyGPYVVCfltNNOc5m6U6z6O636O2KzZs1cNn/+/NS2+luuuoOv+rtt7969XaZ6B2rYYnhHYNXVyPbvmequ3epvvqr7EfaR1GN7NH9XRf7CYX1muoOiejQh1TlQ30t1JLId0Bn2xNRzvnbt2lkdhxoIqIYmqs5PeGyqs6SGC4Z3YTfTz3H1/ZSwe6WG06nOD44d1SdTWTj48Pnnn3f7TJo0yWVvvfWWy9TzSD131Xm7ePHi1LYa0qiGC15wwQUuUz+n6jupIYEdOnRIbauhwqNHj3aZOjfUe4fqRalhp2Ff6LPPPnP73HbbbS5Tv79s8ckPAACICosfAAAQFRY/AAAgKix+AABAVAqt8ByWvtTAJVX6UgVOVeYNi8xmejhfWPpVhSx159wWLVq4TJU6VYFTDc0Kv3bz5s1uH/V4hEU5M333YvUYqSy867UqfqqCGgqWGhQaUgXibDN1gYAq5qvffZMmTVLbqhStCsrquasuaFCvDeoCie7du6e21XBBNQhSnQfqTvL79u1zmSp6hiXXs88+2+2jXscYclj4wgs8Bg0a5PYZMmSIy9RFJaeccorL1PNNPcfDO6C3bt3a7fP3v//dZWqgqDq/VQlaDUOsWLFialuVltWQXjWEUJ3f6oKirl27uiwsj7/22mtun1/84hcuUwNLs8UnPwAAICosfgAAQFRY/AAAgKiw+AEAAFEpkMKzmiQcFjjVXdInT57sMnVHWVVy2r9/v8vWr1/vsrCwqMpoasKzKkmqEqYqvKnCczhtM5z4bKZLrypr2LChy1RxTf1eRo4cmdru1KmT20cV6tTPjmNHTYpVv9NQtr8rVdz99NNPXRaWm83Mtm7dmtpWU2FVWVhNW1bn3x/+8AeXzZkzx2Xh1PU+ffq4fdTPqR4jdd5mUzo3y256vSo8o2BVrVrVZePGjUtt//SnP3X7qPcmNaX5ww8/dJm6QEC9d6xevTq1rS7YUa/X6jwIL1oxM2vQoIHLxo4d67LwdUado6effrrLVPG6V69eWe03ffp0l4UXSKi7M6iLEtS5nC0++QEAAFFh8QMAAKLC4gcAAESFxQ8AAIhKgRSe1ZTjsFCopigvXbrUZeHkRzOz5cuXu0yV29R0yfDfbd++vdtHTa8MS55muqSsjlcVVcPp0+r7q/KcKnt/9tlnLlMFS1UOC6fz1q1b1+2zcOFCl+HYUWVbVZoNn0clSpRw+6iitCprqudkly5dXKbOhRNPPDG1rZ7z6mIDdWzf+c53XBZObjYzmzlzpsvC0qia6K6mKKsiqXos1e9AXbwQPpY7d+50+6jp06qoimNny5YtLgsn2I8YMcLto57zasrxL3/5S5epcvDQoUPzPTb1/FDl5muuuSbf72VmNmPGDJep82rlypWp7Q0bNrh9VKbO7zPOOMNl6n2oWrVqLnvyySdT2/369XP7qEyVuLPFJz8AACAqLH4AAEBUWPwAAICosPgBAABRKZDCs1KxYsXUtpomqwpNqtysitF79uxxmZqsGZYzw/KmmS5Jqkm36vurknJYKjbzZccVK1a4fVThcvHixS7Ly8tzWbbTMMPpvGpaNIXnwqcmJGczSfiEE05wWbaTwtW5oC4kCM+hadOmuX1U+Vidy2vXrnWZ+tlVCbVt27apbXXuha87ZnoavHo81PfL5rFUv4PwWM100R0FK3wdf+aZZ9w+vXv3dpl6vzrrrLNcpiaKjxo1Kt/j2rx5s8v69+/vMjUR/dRTT3WZmhitysfh87JWrVpuH3UBk7oLwjvvvOOySy65xGXZTLxWj+NTTz3lskaNGrksW3zyAwAAosLiBwAARIXFDwAAiAqLHwAAEJUCKTyraalhgUkVa9XUSFV+LF++vMtUmWvbtm0uCwtvU6dOdfuoyZ2qCKamvarjUEXPsDA2ZswYt48qV6qp1WpKtSrDhqUyM7PWrVuntlXxDsWbek4eOHAgq/3U9NhwQuvGjRvdPpMmTXKZKv2qwrM6DlXqb9CgQWpbTaJVFxuoSdOqfKz2UxcNhF+rXv9UaVRdpIEjo0rm6jFft25daltNPZ4wYYLLzj33XJep4q66MEaVpadMmZLaHjx4sNtHTX1WF+Oo6dPTp093mbqLQPh8Vt9fXTTQvHlzl6nXFFX2Vq8XV1xxRWr7vffec/uoCzKOBp/8AACAqLD4AQAAUWHxAwAAosLiBwAAROWoC8+qWKuEJUA1wVEVFsOCmpmeOqvKiap4GE4+VuVKVTQuWTK7h2rOnDn5/ptmvgStJmaqnz0seZqZrVq1ymXqsWzWrFm+X6tKaygawqK/Kt+q6cWqDKqsWbPGZY0bN3ZZWPRv2rSp26d06dIumzt3rst69eqV7/c306XO8JxUZU31+rRr1y6XKepr1etAuF84AdtMl03VY4Qjo84FlYW/mw4dOrh9xo0b57LnnnvOZQMHDnSZev1Ur+PhRSrqYp+wFG1m1qJFC5ep139V5FbCgrYqcavzSk11Vz/7+PHjXXbRRRe5LLw46aabbnL7qAnS6r01W3zyAwAAosLiBwAARIXFDwAAiEqh3dU9/Ptrp06d3D6qE6C6MOqOtWo4n+oJ1KlTJ7W9c+dOt4/q7ahBT+pvoervntWrV3dZ+DdOtY/6XpUrV3aZGkR32mmnuUz9Hfjhhx9Obau+kxoWxh2pC5bqm4SZ6rSp55Hq/KjvX7t2bZepoZqTJ0/O9+tUN0Z9r2w7Euq5G/YG1b+phhyq/o16jqvHTXWqwr6hel1Q/RM17A3HzsGDB11WpUqV1HbLli3dPkOGDMn368z0kMrRo0e7TL0Wh70z1a1T733qeRoOHTXTAxLVeRW+D6lzedGiRVkdW79+/VymHiM19Pftt99ObatennrvU+/L2eKTHwAAEBUWPwAAICosfgAAQFRY/AAAgKgcdeFZFV9VabZChQqpbTXkUJWX1LA+VZZWQ6LU9wuLZZs2bXL7/OUvf3FZ3bp1XabuNK0Kp+rYwsKYKnOpcpsaRKcKder3ooriYTlTDWhTAyRVqRPHjjo/wt+DGtCpfn/qfFSDQtXQPfWcCZ+rqhisBhWq59F5553nMjW4TJ2n4UUO6ljVXeMVdS4PGjTIZdncJT7bfzPbwanInzoX1Otn+Lr7/PPPu3327duX1fd69913XXbNNde4bOXKlS5bvXp1anvFihVuH1U+VufoQw895DL13O3Zs6fLwotl1PtGq1atXKZen9T5F15gZGbWsGFDl4WPx969e90+4ZBXM/2aki0++QEAAFFh8QMAAKLC4gcAAESFxQ8AAIhKgTTuVJEvnNioiszqjrKq3KzKx2o69MKFC10WltRUYUrdOVdNdlUluHBippmeVhn+u6oorYqqaj9VPv7iiy9cpkp1YQlOHb8qAKrpwjgyatqyOhfCiwZUqVg9J1VZWO03depUl9WqVctlS5cuTW2rKc2qmK9+JvUcV2VHNcU8vJv1smXL3D6tW7d2mZqmu2DBApep4rJ6PMJzWd1lWxVJVYETR0a9HqkJz0uWLEltq8nb3bp1c5l6v1KTlV988UWXqcJw+L42a9Yst496nqq7FjRr1sxl6v1Q3a3+u9/9bmpbnQfqgoZPPvnEZfPmzXOZuoO7KkGH77lNmzZ1+6jXFPVakS0++QEAAFFh8QMAAKLC4gcAAESFxQ8AAIhKgRSe1RTKcPLstGnT3D4nnniiy1QBt0+fPi5TE1rVZM3du3entlXhOZwCaqYLb6pUrEp2qtTZr1+/1Pb06dPdPlWqVHGZKvbNnj3bZWqq9Nlnn+2ysPC3ceNGt48qtKrCLI4dddHA+++/n9pWZU11vqhpzqo4qYr5zZs3d1n4u1cXA5x55pkuU1PM1fH+9a9/dVmvXr1cFhbFO3bs6PZRrwtjx451WViENTP74Q9/6DJVMlcXEoTURFwuGihY6nkZvr717dvX7aNew5X69eu7TE1WVncMCN8jmzRpku8+ZrqQ/OMf/9hl6j1szpw5LgvfJ9SFBeq1/owzznBZ586dXRZObjYzGzlypMtatmyZ2lbv3er9UP2Os8UnPwAAICosfgAAQFRY/AAAgKiw+AEAAFEpkMLzzp07XRYWn9RUSjUBdtGiRS5TpVxVKlYFy9q1a6e2Vck6LEWbmb3yyisuU9OWGzZs6DI1kTosOKupl2oyr5qi2aBBA5epMuz27dtdph5zFC41/VdNLg0Llvfff7/b5+STT3aZKnCqIrA6hyZOnOiy8IIDVU5U554qTn700UcuUxN2u3bt6rIxY8akttVzXk2iVcd2ySWXuExNtl23bp3Lwtc79fuk3FywVKFc/f7Ccyh8DpmZtW/f3mVqiv5rr73mMjUBXE2CDi+0UWVedaFJzZo1Xfbxxx+7TF3woi58CKeiz5gxw+0zZMgQl6kp5urfbNeuncvUa1uYqan36k4Dar9s8ckPAACICosfAAAQFRY/AAAgKix+AABAVAqk8KzKZ2GhK7yFvZnZlClTXNa/f3+XhSUtMz1t86STTnLZwoULU9tq6qUqfqoiW4cOHVzWuHFjl02ePNllagJnSJXb1OOhpkOHE7XNdNEsLJGpYqYqyqnyGY4dVd5t1KhRavuBBx5w+6iC4VNPPeUyVdz9zne+4zJVKAzLn2oSrTqH1JT0AQMGuExdcKAucghfB6644gq3z9y5c13WtGlTl4UTZs3MZs2a5TJVfA1/fvW7U6+JKHzh81JNKt66davL1NTxZ555xmXqvGrdurXLwhK0uihh5syZLlOT39V0cjURXV28EJb/zznnHLePmvKuLnJQ733qgoN69eq5LHw/VI+jupDgaO40wCc/AAAgKix+AABAVFj8AACAqLD4AQAAUSmQwrMSTqtU04ZV+VhN2wynNJuZrVixwmUVKlRwWceOHf/PbTNdrlT/5p49e1ymJmSq6Z3hZGU1zVmVilXBS02sVce2f/9+l3311VepbVUqo9xc+NTvYe3ataltNfV427ZtLlNTn8MJs2b6AoEFCxa4LCwCd+rUye2jnn9q0q0ql6pzrUaNGi4LLwhQZVBVZO7evbvL1OOtSttqanBYClf7qIsNULDUhOTwOfjkk0+6fe677z6XqdfAxx9/3GUDBw50mbqbQTipX70fque8uhhAXZSg7rIwdOhQl7344ov5/psvvfSSyz7//HOXnXfeeS5TFyKpi4fCiyHU8avvdTT45AcAAESFxQ8AAIgKix8AABCVQuv8hML+gplZv379XKa6MOqO1OrviKoDEHZc1N/i1VA/1QlQd0Tv0qVLvv+mme9mqN6OGoymvteuXbtcpoZmqeFrYYdIfR2KJvV3d9XlKVWqlMtUD23Hjh0uU+dVmzZtUtuqG6Pu+qyeW2pooDpe1SEaPHhwaludj6ozqAYfquNQ1OMbnlf0e4qu8P3k/PPPd/uoXo3q7fTp08dl6rVYve6GQ35Vx0W954Tnnpk+R1evXu0y9Z572WWXpbaHDx/u9qlevbrLLr/8cpf17t3bZeFQYTP9nh4OCj3W/R6FT34AAEBUWPwAAICosPgBAABRYfEDAACikrPCsyruqqKjGlSlCoXqLuaqRBwWFlVJUg20Usehhpmpn0EVQtevX5/aVmVQNbxK3XVdFeqy/VpVJEXRFP7+1PNKleTVc0uVDtXzQw3VDM8PVdasW7euyzZv3pzVsam7qavXi5B6zqvSqHqMsi2Kq0wNlkTxoF7r1YUE6uKZRYsWuUydQ+p5GZ676jVcnd+qyKyez9kW+GfPnp3aVoNO1XGo4128eLHL1OuMOl51nhY0PvkBAABRYfEDAACiwuIHAABEhcUPAACISs4Kz4oqMquylaKKuyoLC5bq+6vytCpkqTtSh0Xmf/W14URLtU+2RWaVKdmURlF0hUVBVRxUVKlYFT2zfY5nQxUd1bmmCsTq58rmZ832tUL9nOrcUBkXCMQp28n3aj/1vAxfs9VzMtsS8NF8behoyvvFrfjPJz8AACAqLH4AAEBUWPwAAICosPgBAABRSQ6nGJUkySYzW1Fwh4NirkEmk6mW64MoyjiHkA/OoXxwDiEfWZ1Dh7X4AQAAKO74sxcAAIgKix8AABAVFj8AACAqLH4AAEBUWPwAAICosPgBAABRYfEDAACiwuIHAABEhcUPAACICosfAAAQFRY/AAAgKix+AABAVFj8AACAqLD4AQAAUWHxAwAAosLiBwAARIXFDwAAiAqLHwAAEBUWPwAAICosfgAAQFRY/AAAgKiw+AEAAFFh8QMAAKLC4gcAAESFxQ8AAIgKix8AABAVFj8AACAqLH4AAEBUWPwAAICosPgBAABRYfEDAACiwuIHAABEhcUPAACICosfAAAQFRY/AAAgKix+AABAVFj8AACAqLD4AQAAUWHxAwAAosLiBwAARIXFDwAAiAqLHwAAEBUWPwAAICosfgAAQFRY/AAAgKiw+AEAAFFh8QMAAKLC4geaziY0AAAgAElEQVQAAESFxQ8AAIgKix8AABAVFj8AACAqLH6OQJIkI5IkWZckyc4kSRYmSfKDXB8TUBwlSdI0SZL9SZKMyPWxAMVJkiQffnvu7P72vwW5PqbihMXPkfmDmTXMZDIVzWyImd2bJEnnHB8TUBw9bmZTc30QQDF1UyaTKf/tf81zfTDFCYufI5DJZL7IZDIH/rn57X9NcnhIQLGTJMnFZrbdzMbl+lgAxIXFzxFKkuSJJEn2mtl8M1tnZqNyfEhAsZEkSUUz+62Z3ZbrYwGKsT8kSbI5SZKJSZL0yfXBFCcsfo5QJpO50cwqmFlPM/u7mR34v78CwP9yj5k9nclkVuf6QIBi6k4za2xmdcxsmJm9lSQJf4HIEoufo5DJZA5lMpkJZlbXzG7I9fEAxUGSJB3M7Dtm9lCujwUorjKZzCeZTGZXJpM5kMlkhpvZRDMblOvjKi5K5voA/k2UNDo/QLb6mFlDM1uZJImZWXkzK5EkSatMJtMph8cFFGcZM0tyfRDFBZ/8HKYkSaonSXJxkiTlkyQpkSTJADO7xChtAtkaZt/8j4UO3/73RzN7x8wG5PKggOIiSZJKSZIMSJKkdJIkJZMk+Z6Z9TKz0bk+tuKCT34OX8a++RPXH+2bxeMKM7s1k8m8mdOjAoqJTCaz18z2/nM7SZLdZrY/k8lsyt1RAcXK8WZ2r5m1MLND9s2FN+dkMpmFOT2qYiTJZDK5PgYAAIBCw5+9AABAVFj8AACAqLD4AQAAUWHxAwAAosLiBwAAROWwLnUvW7ZsplKlSgV1LCjm1q1btzmTyVTL9XEUZWXKlMnk5eXl+jBQRG3YsIFzKB9lypTJVKxYMdeHgSJq48aNWZ1Dh7X4qVSpkl1zzTVHflT4t3bvvfeuyPUxFHV5eXl2xRVX5PowUETdf//9nEP5qFixon3ve9/L9WGgiHrooYeyOof4sxcAAIgKix8AABAVbm9RCL69eWNKNpO1S5b0vx6VffXVVy77+uuvj+jfBPITPp/Vc1IpW7asyw4cOOCyypUru0x1PLZu3Zra3rVrl9vnyy+/dJk6N4BcOtL3CDOz447zn2Go7ODBg4d/YP/G+OQHAABEhcUPAACICosfAAAQFRY/AAAgKv/WhWdVIitRokS+X6f2qVGjhss2btzoMlWmLFWqlMvCMpsqt6mCmsooN+Ofsnl+m+lCpCokq6GmnTp1Sm0vWLDA7aOKxnv37nVZz549XbZ8+XKXffTRRy4744wzUtvbtm1z+6hMXSCgqDJ2tl+LOKnzqkKFCi47dOhQvl9XpUoVl6nXevW1aj91fof7qfNl586dLitXrpzL1Pvtvn37sspy8X7FJz8AACAqLH4AAEBUWPwAAICosPgBAABRKVKF52wnVZ544okuU4VkVbqcPHlyartMmTJun+3bt7tMlTDVcbRv395lCxcuzPff2LRpk9unYcOGLqtVq5bLVAlT/ez79+/P6mtRfKmioyoiHn/88Vl9P3X+hc+ZE044Iat/c/DgwS5T5cc6deq4TJU1TzrppNS2KijPnj3bZap4rY5XFT3VeVW1atXU9urVq90+iIMqN6vX7PB5FE4rNzMbPXq0y/r37+8y9X6lziFVZm7evHlqOzynzMymTJniMvW+od5fVq5c6bK6deu6LHwNUefoscYnPwAAICosfgAAQFRY/AAAgKjkrPOjhrFVr17dZerviFu2bHHZ888/77IePXq4bPHixantli1bun3U322bNGnisvHjx7tM9QQGDRrksrfeeiu1rXoTq1atclnr1q1dNmbMmKyO4/e//73LRo4cmdrmjtfFh/q7uOqk5OXluSwcsmame0A7duxw2fz581Pba9eudfu0adPGZVOnTnVZ7dq1XTZ9+nSXhb0aM7PHH388td2nTx+3j3o81HGo4aGqc/HTn/7UZevWrUttq9c29Xgj91SXTPXcVCdT9UVnzJjhsrZt27pMDcgNqf6oOufV++GiRYtcpt7Dwud4+fLl3T6qs/Tmm2+6TJ3zqkOk+rPhz6p6c2ro49Hgkx8AABAVFj8AACAqLH4AAEBUWPwAAICoFFrhOSyWqQGBqgj1zjvvuGzgwIEuO/fcc1126qmnuiwczqQKz2vWrHHZfffd57KbbrrJZWrQ2oMPPuiybt26pbZLly7t9lFlUzXM8Xvf+57LVIHz6aefdlmHDh1S22ogo7rjLsXo3FMFZVWSD3/HZrro+cEHH7js5JNPdtnEiRNT26rUuHv3bpep5+67777rMlVu/sc//uGyv//976ntzZs3u3369u3rMjU8VB2vOq/U8z4c1KgKs+p3pQYromDVrFkzta1er9UFL/Xr13fZggULXFa5cmWXqfLuZ599ltpu1qyZ26dp06YuU0M7K1as6LLw/cVMn2vh16p9LrvsMpepn1M9bmoAo3rMw9K22kcVtqdNm+aybPHJDwAAiAqLHwAAEBUWPwAAICosfgAAQFQKrfAcFgVVCUxNOR4yZIjLVFFw/fr1Lrv88stdVqpUqdS2uutspUqVXFaypH+ozjrrLJddcsklLjv99NNddsopp6S2w8nTZmaNGzd22dy5c12mptiqwpiaSNq5c+fUtpogqh4jFL5du3altlVJcunSpS5TJWg1tfWLL75wmSoMX3zxxaltVTRWE8aXLVvmso4dO7qsa9euLlOl7SuuuCK1rV5T1L+piqRq4q6aLv/oo4+6LCxGq7tWq0nWahowClb4O33llVfcPupCGfX7U3c2V+9h6gKaLl26pLbV6/Uzzzzjsl/84hcuW7JkicvUxQvqgoNevXqlttX5qCa4q7vQq7vGqwsJ2rVr57INGzakttVFNuEFDmZmvXv3dlm2+OQHAABEhcUPAACICosfAAAQFRY/AAAgKoddeA7LxiVKlHD7qOmx48ePT22rUnF4W3szXRZTkzVbt27tMjX1+brrrkttz5o1y+2jCr6q+Pnf//3fLvvZz37mMjXlcvr06antcEqsmS5rzps3z2W///3vXfbxxx+7rE+fPi4LJ0ur6bcUnouGcIKqKhiqTJUT1YUE69atc9lbb73lsvPOOy+1rc7HG264wWXvvfeey9SEdVXMVMcWXoQwYcIEt0/58uVdpi4aqFOnjstUCVUVLMOS6x//+Ee3j5qSy4TnwleuXLnUtnr+DRo0yGUjRoxw2ZlnnumyTz75xGXqtT2c8KxK+M2bN3fZiy++6DI1zV9dDKHeq8PSfXhRhZm+eEG9T6gLatRzXBWow+L50KFD3T5hSdxMX8yRLT75AQAAUWHxAwAAosLiBwAARIXFDwAAiMpRT3g+7ji/flIlw7DAlO20xscee8xlqnysCliqsPjmm2+mtpcvX+72UQVl9f0rVqzoMlWg/vzzz10WTnRWZW/1/StXruyyV1991WVq6rMqjYY/6/z5890+FDMLnzqvqlWrltoeO3as2yec2G1mlpeX57I///nPLlOly4suushl4fNIFREXLVrkMjU9PJz8bmb2xhtvuExNWw6LpKpwGU6wNTObPHmyy1SpU03rvf3221327rvvprZPPvlkt4+awqumbKNgha+fTZo0cftMmzbNZY0aNXKZmkK8Y8cOl6nnVnieqmnfVapUcZmawKzOIVWWVncRCC8SUBcrhRfFmJkdOnQoq+9ftWpVl6nHIzxetY96/1JTtrPFJz8AACAqLH4AAEBUWPwAAICosPgBAABROerCsyrDqomys2fPTm2rMvKvfvUrl/Xs2dNlaqLlnDlzXFazZk2XhWXsO++80+2jpnmG02TNzHbv3u0yVaAOp4qamV1yySWpbTVZ8/jjj3eZKmOrMmXdunVdNnr0aJddc801qW312Kpin8pwZFShUD2+YaH39NNPd/uowqWa+hyWp810iVFNhZ05c2ZqWz0n1UUJatLtnj17XKZK/eq8Ci9CUGXvF154wWVt27Z12erVq12mfvYvvvjCZf369Uttq8Jst27dXKbOeRSs8EIQdR5s3LjRZer9Sj2PVJlefb+wWKyef2rquCpBq9f/DRs2uKx+/fouCy8IyPb1X12AoM4N9W+q16OJEyemtn/yk5+4fdRFPOq1M1t88gMAAKLC4gcAAESFxQ8AAIgKix8AABCVwy48h+UnNRFSlRh79OiR2j7xxBPdPqq0rIpmqhB5xhlnuEwVsMKvVSWqNWvWuEwVzRo0aOCy4cOHu+yss85yWVgUV1M6W7Zs6TJVglOTeV9++WWXrVy50mXhY66m8KJgqaJxNkXMdu3auX3U80NNc960aZPLOnTo4LJsJh9XqlTJ7TNu3DiXtWnTxmXqogRVzFcTrz/55JPUtrooQT2O6vVJTY9Vrz2qYBkWTtX5yAUCRUP42q7Kt2qy94IFC1w2bNgwl6kpx+r58Mc//jG1rS6eUdOnf/e737lMnVfq+6n3q9q1a6e2t2zZ4vZRrynqHFIXYKjjaNGihcvuu+++1PY999zj9lElaHUc2eKTHwAAEBUWPwAAICosfgAAQFSOesih+pub+lv5vffem9pWAw1Vv0D1IVRPRw0Mmzt3rsvCu1Srf7NVq1YuU/0KdcfrH/7why5T/YewOxAOgTQza9asmcvU3eU7derkshUrVrhs2bJlLgs7Pgw0LHzqzsRqiFg4gEz10NT5eOaZZ7pMDWNTfS81aHPt2rWpbXWOhsNEzfRzUvUh5s+f77Jszu/wNcbM7IMPPnCZetxU92jevHkuU0Pbxo8fn9o+++yz3T6qx4TCF75+qp6Yen5Mnz7dZaoLo3qragho+JqtBgOrc+jkk0922fnnn+8ydS6r3lL4vFfnsjr3LrjgApep90jVB1TvdatWrUptq9eFsWPHuizsEh8OPvkBAABRYfEDAACiwuIHAABEhcUPAACIylEXnlX5uFGjRi772c9+ltpWw8LU4MOrr77aZeEdYM30kMCKFSu6LBxCtWjRIrfPU0895bKqVau6TN25Wg0mbN26tcuefPLJ1Pa5557r9gmHuP0r6nFTw91+85vfuCwsjarHEYVPDV8Ln4MLFy50+6hz46STTnKZGhSq7iytiroVKlRIbU+aNMnto8qV6jmpnm9Lly51mbqr++WXX57anjVrVlZfp0rLDzzwgMvuuOMOl6nXu3CYqiqlqn9TDR1FwQofc3WehYV+M11aVoMx1XuCKjOHFwWpkrUamKguaFAXL4QFYjOzbt26uSy82EINQlTfa8qUKS5Tj5EaGFmvXj2XhUNX1TmkjuNo8MkPAACICosfAAAQFRY/AAAgKix+AABAVI668KyokmE4sfHaa691+wwdOtRlqlSmvv++fftc1r17d5e99957qe1Bgwa5fdR0XVWCU5MqVRFMZeGdeFXZ9LrrrnPZgw8+6DJVeC5VqpTL1NRP9bgh99TvL5zGev/997t91NTxzZs3u+yll15ymSrlqgm44aRwVXRUhcUBAwa4rGfPni7LZrq1mS98q3NIXXzx+eefuywsT5vpO8mrqfHh46Ymuvfu3dtlFJ4LlppOHv5O1WunuhO5eh6VK1fOZeq5W6JECZeFk6YfeeQRt486tuuvv95lahJ0eFGCmZ6aHL7+T5061e2jXovUa4+6M4J6D1YXGYUXZajXHTVxXZXJs8UnPwAAICosfgAAQFRY/AAAgKiw+AEAAFEpkMKzEpbP1CTMm2++2WVqoqWasvrrX//aZWqi7K9+9avU9vDhw90+eXl5Lqtbt25W+6kps6eccorLKlWqlNpesmSJ20eV1lS57fXXX3fZ3Xff7bI333zTZeGETyVJEpdlMpl8vw7HVljUVZPDy5Yt67JRo0a5rH379i5TBVE1bTmcYq5KnurrypQp4zJVbFTPt//8z/90WTgVVxUuw0m6Zr44bqanqauJuHXq1HHZLbfcktq+99573T5hSRwFT722he8n1atXd/s0a9bMZepiAPX6rC6MUcfxyiuvpLbVxS3z5893mXo+q++vJkZ/+umnLtuyZUtqW5WiP/roI5epKc3q2FasWOEy9V4Xlv/VhUjqwoqjwSc/AAAgKix+AABAVFj8AACAqLD4AQAAUSmQwrMqw4aTNa+88kq3jyodqknQc+bMcdk999zjsrFjx7osnLappr2qMqgqOqoJnKrgdejQIZfdcMMNqW31s3//+9932fnnn+8yVVRVk6BVefzMM89Mbe/cudPtM23aNJepwhuOHVUeXLBgQWpbFZ7VxFP13FVFz3BispkvN6uvVYVqRZV+1TTd3/zmNy4rXbq0yzp27JjaVhPiP/vsM5fVrl3bZX369HHZ4sWLXaamPoeF78mTJ7t9+vXr57Jt27a5DAUrnBSuLhBYv369y9TvXT2P1Lmgzr9wwrMqT6vzW01rVwV+VSrO5jgmTZrk9lHHps5bNQlarQXU+RFeUPTxxx/ne6xmZjt27HBZtvjkBwAARIXFDwAAiAqLHwAAEBUWPwAAICpHXXjet2+fy9TE16+//jq1PXXqVLePmkqpyraqgNWzZ0+XqUJyeGzhxGczPaFVlZbVcdx///0uU1Ofw0mg77//vtunR48eLmvbtq3LVDlMTdNVZbbGjRunttWUXFUGVYU6HDthMd/Ml/9VWVM9d8866yyXvfzyyy5TRc+TTz4532NTz4+KFSu6TE11f/jhh12mysHq/AunpKtzT128oDJVnJw+fbrL1Dn/wAMPpLbVJHWVoWCpcyh8Hs2ePdvt06BBA5epMn3lypVddtlll7lMXUgQFpfVZGh1IYsqXvfq1ctl4QRpM7MmTZq4bOPGjfl+f1VazrYErS4AateunctOOOGE1LZ6LVKT348Gn/wAAICosPgBAABRYfEDAACiwuIHAABE5agLz6qIqLJ169altlXBS33drl27XKaKVWpaavny5V0WFjG7dOni9lETpFWps3fv3i7785//7LIPP/zQZWHhTf2cYUncTBfq1GTNNWvWuOy8885zWfi4qaLZ9u3bXYaCpc6FmTNnprbV1OOf/OQnLlOTXT/66COXqQngSjj1ed68eW4fNYn2t7/9rcvUc7x58+YuU5Oa27Rpk9oOp8Sa6Qsy1DT1Zs2auey2225z2fjx41129tlnp7Zfe+01t4+a2K0uSsCRUUVdpVy5cqlt9Zx/5plnXPbee++5LHz+melS8ZAhQ1wWTmVWzw814Tl8HzXT5586r9RrQ3iBi7oYQD1Ge/fuzWo/VW5W74fhuVC1alW3j/qZjqYEzSc/AAAgKix+AABAVFj8AACAqBx150f9zS0cnGTm/x6oOj9qmNKIESNcpu40/dhjj7lM9XnCgVCrVq1y+4SD/8zMOnXq5DJ1d9pXX33VZWrY4qeffpra/v3vf+/2UZkaaKg6DOpvsk899ZTLwrvaq8Fu6nes+lQ4dtRzJhyWpoYG/ulPf3LZwIEDXTZo0CCXqT6LOifD80Pdbbl///4uU3efvvDCC12mOgwPPfSQy8LnbufOnd0+mzZtcpnq76muW9gPMfP9HjPfI1QdPNU9Uj0PHDtqaG7YRatevbrbRw28VH0W9f3VQFHV3wsHKWbbqxk2bJjLVHdMDUhU52T4Or569Wq3j3o+L1u2zGWNGjVymXrvqF+/vsvC1xQ1RFc9HkeDT34AAEBUWPwAAICosPgBAABRYfEDAACictSFZ1UKvPnmm132xBNPpLZVgVgNXrv00ktdpgYgheVHM10+e/vtt1PbamigGrI2d+5clz333HMuu/jii12m7qZ+1VVXpbYXLFjg9lGPo7pbryq+qqFfd9xxh8vCArgqyqnSmirx4dhRA73COx+rYmatWrVcpu4o/h//8R8uq127tsuWL1/usrDsqErR6rmrLnJQd9AOXyvMzNq2beuysGCpCqhqeKEq66tBnurxOHjwoMvCAYzh3ebNzLZu3eoyHDvqfFEF/nAwofp9jhw50mUffPCBy9Tz+a677sr33zTzz9X9+/e7fdRrrLoYR2Uvvviiy1S5O3yuquG4inqPVOeQuhhHnX9jxoxJbavhiF9++WVWx5YtPvkBAABRYfEDAACiwuIHAABEhcUPAACIylEXnlUJ6a233nLZuHHjUttvvPGG20fdTTfbyajqbrfq7spLly5NbT/yyCNuny1btrisQoUKLlOTL9Ud4UuUKOGysGimptqqiZkXXHCBy1RZWt3xW32/8OdS07lVofVYT9tEmirIhlOfS5b0p+91113nMjXFXH1t165dXabuCN+hQ4d8v384jdrM7Pbbb3dZOOncTE99Vne4njp1ampbFY3VXarVubZ48WKXqcLztm3bXBZeXKB+diaiFyx1UYZ6zoRTxtUkYXUHd0VdVKLu6q6K1+FzXJ1Dt9xyi8tef/11l1WrVs1laoK7unghnHitLnipV6+ey5S8vDyXqfNbTZEOX3vUe6aaZL179+6sjk3hkx8AABAVFj8AACAqLH4AAEBUWPwAAICoHHXhWdmzZ4/Lbr311tT23Xff7fY588wzXRYW1MzMVq5c6bKePXu67JRTTnHZzp07U9vdunVz+6jytCo8z58/32WqqBVOgDUza9GiRWpblTBVgaxp06Yua9iwoctUoTUszJr5AudXX33l9lE/e/g4ouCFRX9VHFTUOaQmyo4dO9Zlapr6Cy+8kNpWE2a7d+/usrCgbKan5J522mkuW7FihcvCf3f9+vVuH5WpkquaVK9eZ1RxOTzXjvUkWhwZVYIOi8Xq+T1jxgyXqbsPPPnkky575513XNaxY8d8j23atGlun8cff9xl6rytWLGiy9RFQWraeXhxT5cuXdw+alq0Klmron+fPn1cpkrK4fuQes1S72lHg09+AABAVFj8AACAqLD4AQAAUWHxAwAAonLUDSI15VgVZMNJqw0aNHD7hNOXzcwOHTrkMlX62rRpk8vuuusul1199dWp7WHDhrl9VJF08ODBWR2H+tpatWq5bNasWantiy66yO1TvXp1l40ePdplqrStHg81vTN8fHft2uX2UROeUfjC34MqNW7YsMFlqpy4fft2l6lp6mvWrHFZOPV50qRJbp+6deu6TJ3LqiytLhooW7asy0JqSrMq5jdv3txl6vXok08+cZma/h7+XKpEyzlUsNTjq55v4fuVmnqspiOrAv/nn3/usosvvthl6kKC8GIWNV1dTelX5Wb1c6pys7pAJ5wkP2LECLfPjh07XKamPrdr185lixYtctnXX3/tsl69eqW21QUO6mc/GnzyAwAAosLiBwAARIXFDwAAiAqLHwAAEJUCmfB8wgknuOyWW25Jbffo0cPt07dvX5ep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c9m2bdtcpnTq1MllqsgdTodesGCB26datWouq1+/vstU+Uzt17dvX5ddeeWVqe2BAwe6ffDvp0KFCi5TBXtVpgzLiWo6uZriqi4uUOetKnpmU6o+msKz+tpsJ6eH/4YqZ6N4y7bIrDI1sVwVkkOqoJzt3Qdef/11lw0ePNhl4fkdFqDN9Htws2bNXKYeo9WrV7tMvc7s37/fZQWNT34AAEBUWPwAAICosPgBAABRKVKdn7y8PJepv0Hu3LnTZervkmow4Xe+853Udt26dd0+7du3d5m6Y7T6W2uPHj1cpv7uedttt6W21d9333jjDZdNmDDBZV26dHGZuuP8Aw884LLnn38+tf3222+7fdTjjaJJdQ7KlSvnMjVoTHXTqlSp4rKyZcvmexzly5d3WZkyZVz25Zdfukz9DOpcC3sCqiukeghqP/Wzq76QysLehOovcMf5oqly5couU8/JXr16uSx87TTTz131vhZ2SNU+DRs2dNmwYcNcprp0t9xyi8teffVVlzVp0iS1rc7R9957z2VNmzZ12dSpU12muqfqMRo1alRq+/rrr3f7LF++3GVHg09+AABAVFj8AACAqLD4AQAAUWHxAwAAolJoheeweKiGm6ny8cKFC13WokULl23evNll7dq1c1k4LG3p0qVuH1XIUuUzVeqcM2eOy9q2beuysPCmBmGpTBXAN2zY4DJ1vM2bN3fZtGnTUtvqcZw9e7bLwuGIKBpUYbF27doumzx5sstUSV6V9cOhhup52rJlS5dt377dZatWrXKZKmh///vfd1nXrl3z/f7r16932eLFi12mHrfPP//cZWo45MaNG1PbqoBK4bloUkNu1fMvfJ00Mxs3bpzL1EU2F110kctGjBiR2lbvVeeee67LLrjgApc9++yzLvuf//kfl6l/49NPP01t16hRw+2j3m/VBRMzZ850Wb169VymLqB5/PHHU9sffvih20cV0dV5my0++QEAAFFh8QMAAKLC4gcAAESFxQ8AAIhKoRWewxKgKgCq8pkq4KqvbdCggcumTJnisqpVq6a2Gzdu7PZRE1pVcVIVnlVZWk3JnT59emr7/fffd/sMHTrUZar4uWXLFpepwpiaYhuW1FSpTJXg1NRPFKzwTumqmKl+f+r5rEqMqkyvyrthMVqdB9ne6V1NTG7UqJHL7rvvPpeFP+tVV13l9lGvH+o8UFOf165d67IOHTq4TF28EVI/J3d/L3zhhTfqOaneEyZOnOiyl19+2WVhkdnM7He/+53LwufbkCFD3D7quXbvvfe6TF3QsGnTJpep97CnnnoqtT1p0iS3zyOPPOIyVexW78HZlqBfeuml1La66726iEfd8SBbfPIDAACiwuIHAABEhcUPAACICosfAAAQlUIrPIfFMlWIVBNa69ev77KKFSu6rFatWi6rXLmyy8IyZTjh0sysffv2LhswYIDLwinNZmbHH3+8y8Kp0mZm1apVS22feeaZbh9VzFTfv06dOi5Thdbx48e7rEuXLqltVcxUhc4XX3zRZShYYQFXFdHDacNmuvwYFu7NzG6//XaXqSJ+WDT+xz/+4fZRFyXcdNNNLjvjjDNcpl4HBg8e7LLHHnsstf3qq6+6fWrWrJnVse3evdtlqsCphMVzVURXvxdVskbBCgv8avr+qFGjXHbOOee47KOPPnLZggULXLZr1y6XLVmyJLV9+eWXu33Uc+bGG290WbNmzVymztts7qAwcuRIt496b927d6/LwouJzPR78BtvvOGycCL1nXfe6fY5/fTTXaZeP+6//36XKXzyAwAAosLiBwAARIXFDwAAiAqLHwAAEJVCKzyHJUA1CVlleXl5LlNTbD/44AOXtWrVymXhFOk2bdq4fU488USXPf300y5Tk5tbt27tsp07d7qsW7duqe2mTZu6fVT5+JNPPnGZ+lpV4DzttNNc1rlz59T2F1984faZP3++y1Qp/N1333UZjowq5YaTlNUkZHW+PPfcc1nt99e//tVlH3/8scvC55uaRKsm56qp42r6tJoq3bt3b5eFFyGsW7fO7aOmNIcTqs3Mrr/+epepn33u3LkuK1ky/TLapEkTt0+207hx7ITTnM3MypYtm9pWr/UtW7Z02ZNPPumyvn37ukwVqNXrfzjlWE1XX758ucvUa716T1AF6ltvvdVlq1evTm2r92D1PFUXAKnXrHCCtJk+v3/5y1+mttVE97feestlixcvdlm2+OQHAABEhcUPAACICosfAAAQFRY/AAAgKkddeFalMlV2DKeZqgKgml68Zs0al1WoUCGrYytdunS+x6EmTavyWf/+/V2mJnyqwpgqwTVu3Di13bBhQ7fPnDlzXBZOBjXTBbKZM2e6TBX5wjLzvHnz3D7q94ljZ9WqVS5TU8zDqeDD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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# How many numbers to display.\n", "numbers_to_display = 9\n", "\n", "# Calculate the number of cells that will hold all the numbers.\n", "num_cells = math.ceil(math.sqrt(numbers_to_display))\n", "\n", "# Make the plot a little bit bigger than default one.\n", "plt.figure(figsize=(10, 10))\n", "\n", "# Go through the thetas and print them.\n", "for plot_index in range(numbers_to_display):\n", " # Extrace digit data.\n", " digit_pixels = thetas[plot_index][1:]\n", "\n", " # Calculate image size (remember that each picture has square proportions).\n", " image_size = int(math.sqrt(digit_pixels.shape[0]))\n", " \n", " # Convert image vector into the matrix of pixels.\n", " frame = digit_pixels.reshape((image_size, image_size))\n", " \n", " # Plot the number matrix.\n", " plt.subplot(num_cells, num_cells, plot_index + 1)\n", " plt.imshow(frame, cmap='Greys')\n", " plt.title(plot_index)\n", " plt.tick_params(axis='both', which='both', bottom=False, left=False, labelbottom=False, labelleft=False)\n", "\n", "# Plot all subplots.\n", "plt.subplots_adjust(hspace=0.5, wspace=0.5)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Analyze Gradient Descent Progress\n", "\n", "The plot below illustrates how the cost function value changes over each iteration. You should see it decreasing. \n", "\n", "In case if cost function value increases it may mean that gradient descent missed the cost function minimum and with each step it goes further away from it.\n", "\n", "From this plot you may also get an understanding of how many iterations you need to get an optimal value of the cost function." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Draw gradient descent progress for each label.\n", "labels = logistic_regression.unique_labels\n", "for index, label in enumerate(labels):\n", " plt.plot(range(len(costs[index])), costs[index], label=labels[index])\n", "\n", "plt.xlabel('Gradient Steps')\n", "plt.ylabel('Cost')\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Calculate Model Training Precision\n", "\n", "Calculate how many of training and test examples have been classified correctly. Normally we need test precission to be as high as possible. In case if training precision is high and test precission is low it may mean that our model is overfitted (it works really well with the training data set but it is not good at classifying new unknown data from the test dataset). In this case you may want to play with `regularization_param` parameter to fighth the overfitting." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Training Precision: 96.6833%\n", "Test Precision: 90.4500%\n" ] } ], "source": [ "# Make training set predictions.\n", "y_train_predictions = logistic_regression.predict(x_train)\n", "y_test_predictions = logistic_regression.predict(x_test)\n", "\n", "# Check what percentage of them are actually correct.\n", "train_precision = np.sum(y_train_predictions == y_train) / y_train.shape[0] * 100\n", "test_precision = np.sum(y_test_predictions == y_test) / y_test.shape[0] * 100\n", "\n", "print('Training Precision: {:5.4f}%'.format(train_precision))\n", "print('Test Precision: {:5.4f}%'.format(test_precision))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Plot Test Dataset Predictions\n", "\n", "In order to illustrate how our model classifies unknown examples let's plot first 64 predictions for testing dataset. All green digits on the plot below have been recognized corrctly but all the red digits have not been recognized correctly by our classifier. On top of each digit image you may see the class (the number) that has been recognized on the image." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# How many numbers to display.\n", "numbers_to_display = 64\n", "\n", "# Calculate the number of cells that will hold all the numbers.\n", "num_cells = math.ceil(math.sqrt(numbers_to_display))\n", "\n", "# Make the plot a little bit bigger than default one.\n", "plt.figure(figsize=(15, 15))\n", "\n", "# Go through the first numbers in a test set and plot them.\n", "for plot_index in range(numbers_to_display):\n", " # Extrace digit data.\n", " digit_label = y_test[plot_index, 0]\n", " digit_pixels = x_test[plot_index, :]\n", " \n", " # Predicted label.\n", " predicted_label = y_test_predictions[plot_index][0]\n", "\n", " # Calculate image size (remember that each picture has square proportions).\n", " image_size = int(math.sqrt(digit_pixels.shape[0]))\n", " \n", " # Convert image vector into the matrix of pixels.\n", " frame = digit_pixels.reshape((image_size, image_size))\n", " \n", " # Plot the number matrix.\n", " color_map = 'Greens' if predicted_label == digit_label else 'Reds'\n", " plt.subplot(num_cells, num_cells, plot_index + 1)\n", " plt.imshow(frame, cmap=color_map)\n", " plt.title(predicted_label)\n", " plt.tick_params(axis='both', which='both', bottom=False, left=False, labelbottom=False, labelleft=False)\n", "\n", "# Plot all subplots.\n", "plt.subplots_adjust(hspace=0.5, wspace=0.5)\n", "plt.show()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.0" } }, "nbformat": 4, "nbformat_minor": 2 } ================================================ FILE: notebooks/logistic_regression/multivariate_logistic_regression_fashion_demo.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Multivariate Logistic Regression Demo\n", "\n", "_Source: 🤖[Homemade Machine Learning](https://github.com/trekhleb/homemade-machine-learning) repository_\n", "\n", "> ☝Before moving on with this demo you might want to take a look at:\n", "> - 📗[Math behind the Logistic Regression](https://github.com/trekhleb/homemade-machine-learning/tree/master/homemade/logistic_regression)\n", "> - ⚙️[Logistic Regression Source Code](https://github.com/trekhleb/homemade-machine-learning/blob/master/homemade/logistic_regression/logistic_regression.py)\n", "\n", "**Logistic regression** is the appropriate regression analysis to conduct when the dependent variable is dichotomous (binary). Like all regression analyses, the logistic regression is a predictive analysis. Logistic regression is used to describe data and to explain the relationship between one dependent binary variable and one or more nominal, ordinal, interval or ratio-level independent variables.\n", "\n", "Logistic Regression is used when the dependent variable (target) is categorical.\n", "\n", "For example:\n", "\n", "- To predict whether an email is spam (`1`) or (`0`).\n", "- Whether online transaction is fraudulent (`1`) or not (`0`).\n", "- Whether the tumor is malignant (`1`) or not (`0`).\n", "\n", "> **Demo Project:** In this example we will train clothes classifier that will recognize clothes types (10 categories) from `28x28` pixel images." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# To make debugging of logistic_regression module easier we enable imported modules autoreloading feature.\n", "# By doing this you may change the code of logistic_regression library and all these changes will be available here.\n", "%load_ext autoreload\n", "%autoreload 2\n", "\n", "# Add project root folder to module loading paths.\n", "import sys\n", "sys.path.append('../..')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Import Dependencies\n", "\n", "- [pandas](https://pandas.pydata.org/) - library that we will use for loading and displaying the data in a table\n", "- [numpy](http://www.numpy.org/) - library that we will use for linear algebra operations\n", "- [matplotlib](https://matplotlib.org/) - library that we will use for plotting the data\n", "- [math](https://docs.python.org/3/library/math.html) - math library that we will use to calculate sqaure roots etc.\n", "- [logistic_regression](https://github.com/trekhleb/homemade-machine-learning/blob/master/homemade/logistic_regression/logistic_regression.py) - custom implementation of logistic regression" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# Import 3rd party dependencies.\n", "import numpy as np\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "import matplotlib.image as mpimg\n", "import math\n", "\n", "# Import custom logistic regression implementation.\n", "from homemade.logistic_regression import LogisticRegression" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Load the Data\n", "\n", "In this demo we will use a sample of [Fashion MNIST dataset in a CSV format](https://www.kaggle.com/zalando-research/fashionmnist).\n", "\n", "Fashion-MNIST is a dataset of Zalando's article images—consisting of a training set. Each example is a 28x28 grayscale image, associated with a label from 10 classes. Zalando intends Fashion-MNIST to serve as a direct drop-in replacement for the original MNIST dataset for benchmarking machine learning algorithms. It shares the same image size and structure of training and testing splits.\n", "\n", "Instead of using full dataset with 60000 training examples we will use cut dataset of just 5000 examples that we will also split into training and testing sets.\n", "\n", "Each row in the dataset consists of 785 values: the first value is the label (a category from 0 to 9) and the remaining 784 values (28x28 pixels image) are the pixel values (a number from 0 to 255).\n", "\n", "Each training and test example is assigned to one of the following labels:\n", "\n", "- 0 T-shirt/top\n", "- 1 Trouser\n", "- 2 Pullover\n", "- 3 Dress\n", "- 4 Coat\n", "- 5 Sandal\n", "- 6 Shirt\n", "- 7 Sneaker\n", "- 8 Bag\n", "- 9 Ankle boot" ] }, { "cell_type": "code", "execution_count": 3, "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
labelpixel1pixel2pixel3pixel4pixel5pixel6pixel7pixel8pixel9...pixel775pixel776pixel777pixel778pixel779pixel780pixel781pixel782pixel783pixel784
02000000000...0000000000
19000000000...0000000000
26000000050...000304300000
30000120000...3000010000
43000000000...0000000000
54000545535...7874375000
64000000000...14000000000
75000000000...0000000000
84000000320...1000000000
98000000000...2032141660000000
\n", "

10 rows × 785 columns

\n", "
" ], "text/plain": [ " label pixel1 pixel2 pixel3 pixel4 pixel5 pixel6 pixel7 pixel8 \\\n", "0 2 0 0 0 0 0 0 0 0 \n", "1 9 0 0 0 0 0 0 0 0 \n", "2 6 0 0 0 0 0 0 0 5 \n", "3 0 0 0 0 1 2 0 0 0 \n", "4 3 0 0 0 0 0 0 0 0 \n", "5 4 0 0 0 5 4 5 5 3 \n", "6 4 0 0 0 0 0 0 0 0 \n", "7 5 0 0 0 0 0 0 0 0 \n", "8 4 0 0 0 0 0 0 3 2 \n", "9 8 0 0 0 0 0 0 0 0 \n", "\n", " pixel9 ... pixel775 pixel776 pixel777 pixel778 pixel779 \\\n", "0 0 ... 0 0 0 0 0 \n", "1 0 ... 0 0 0 0 0 \n", "2 0 ... 0 0 0 30 43 \n", "3 0 ... 3 0 0 0 0 \n", "4 0 ... 0 0 0 0 0 \n", "5 5 ... 7 8 7 4 3 \n", "6 0 ... 14 0 0 0 0 \n", "7 0 ... 0 0 0 0 0 \n", "8 0 ... 1 0 0 0 0 \n", "9 0 ... 203 214 166 0 0 \n", "\n", " pixel780 pixel781 pixel782 pixel783 pixel784 \n", "0 0 0 0 0 0 \n", "1 0 0 0 0 0 \n", "2 0 0 0 0 0 \n", "3 1 0 0 0 0 \n", "4 0 0 0 0 0 \n", "5 7 5 0 0 0 \n", "6 0 0 0 0 0 \n", "7 0 0 0 0 0 \n", "8 0 0 0 0 0 \n", "9 0 0 0 0 0 \n", "\n", "[10 rows x 785 columns]" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Load the data.\n", "data = pd.read_csv('../../data/fashion-mnist-demo.csv')\n", "\n", "# Laets create the mapping between numeric category and category name.\n", "label_map = {\n", " 0: 'T-shirt/top',\n", " 1: 'Trouser',\n", " 2: 'Pullover',\n", " 3: 'Dress',\n", " 4: 'Coat',\n", " 5: 'Sandal',\n", " 6: 'Shirt',\n", " 7: 'Sneaker',\n", " 8: 'Bag',\n", " 9: 'Ankle boot',\n", "}\n", "\n", "# Print the data table.\n", "data.head(10)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Plot the Data\n", "\n", "Let's peek first 25 rows of the dataset and display them as an images to have an example of clothes we will be working with." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "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82b2GZI+v3odp3wBiQPuDCRtY68Qgps990fivDkZSV88OYTg2oQzAIwC8BqA1wGMScsQQhiHZBB/P+37MpvURmNzOfgzgFWQmBZPRf3r+N8AbkASnPABgC+RjMcAgNT/504A2/E5U1PZDkhMZZORmFXPReI03WpY1uTeMTGztwHsEkJ4u5HHd0LyNbRSCGF8U96bmH/Sr5FZAFYNIXzQ2vcjhKgfGptFa9PhcymYWWck0QyN6mSibWJmu1qSz2QxJCHyryMJ+RRCtAM0Nou2QIefBKUhtOe29n2IJucnqDjJrgpgv1AGtaYQHQSNzaItUApzmBBCCCFETTq8JkgIIYQQIg9NgoQQQghRSuod/goAXbt2DX379m2mW0n49ttKZvUpU6ZE2c12yy5byYnXuXPnWtsB4IsvKskwZ86snUi4d+/eUf7BD5p3Hjh+/HjMmDGjzeewaYm6rcb331dSkXz88cdR/vrrr6PM9bzQQgsBAFZYoZLjq7nrsyajR4+eEUKoK+txm6At1G97pD3Ur+q2cbSHugVavn55vH3nnXcAAAssUFnQ3cddIPu+Znr0SJJ5L7poJRdjNu9p81Pf+m3QJKhv374YNWpUvfbll1VDfvy0adOifPbZZ0f5m2++AQAccMABsax///61tgPA66+/HuXrr7++1j1cfPHFUV58cU46W5vG/g5n0KBBDT6mNWhI3TYXPHm94IILovzBB5Wod54o9eyZJI0+4YQTYhl3upbAzCZU36v1aQv12x5pD/Wrum0c7aFugca/d5mGvLsmTqzkoNxxxx0BAEsssUQsYyUCKxm+++67KJ9xxhkAgA022CCW8eQpDx7bm+Jjtr7126BJUDXqM2HwSc4///nPWHbNNddEedasWVFeaqmlouwvyCuuuKLqffDsdMklk8SwXIndunWLcp8+lezfRx99NADg0EMPrfo7RNPx5JNJVvXtttsull177bVRPvbYY6PMk93zzz8fALDYYovFsqeeeirKW265Za1rNcUgIURHoCEvHf4gffjhh6N8ww03AMi+GOuDj+dHHXVULOOx/9JLL43y8ssvX+e5mvrl2VHIG9PGjRsX5VtuuSXKzz//fJT79esX5fXWWw8AcPfdd8ey5557Lspsmdl5552jfPvttwOovFMBYPXVK3lRN9lkkygPHToUQNay05KoxQghhBCilGgS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CYG/+KJcneSTTz4JMpvk11yznMVg5ZVXBpAf201Na+jf5uzbjz7KErivuuqqoS01/y5dujTIliF+9dVrSkbcuLSGvgUar3+//rqc9Pvjj8vJ9Tt06NBgx7CxDwALFy6MHqOxxndt+7dOi6BevXrhmWeeqf9ZLQN2Md95p5xE8rPPPgtyly5dgrzWWms13YlVYMstt2zuU6gVzdm3rRnn3NzKWzU/Td2/vLBZvDjL2v/SSy+FtkceeSTIPBnvtttuQe7bty8AoHPnzo12npVoDf1b377lPrJFSaytJu68804AwCabbBLa2rdvH2R+CL7++uvV9r3ddtuhEvayu9xyDWu4aA19CzTe2H3//feDfM899wT5Rz/6UYMdg192Lr744iD/+Mc/DnJjje/a9m+Lrh3Gg+aWW24BAGy00UahrWvXcvmQv//970Hedtttgzxq1KhaHy/mJF6biUCIImDjg8cEP+R4DE6ePDnIjz/+OICyZgcAPv20XK9xvfXKdRJvuqmcs800R/vtt19oO+6444LMD96q51j1PEV16jLfff7550HmOfX5558HACxZsiS0DRhQrpbDL6TvvvtukE2DtPHGG4e2c889N8iDBpVrdjb04kdk3HZbyC+ceylhlnVBdMkllwT5tddeCzIvunhB1Bzo7hJCCCFEIdEiSAghhBCFpMWZw15++eUg/+tf/wry6adn9fZWW2216PfYBHbdddcF+cEHsxI17GuQQupzIfJUMi+deeaZQWbfHjaP/OUvWSko9uGbMWNGkN94440gb7311kFed911AQAvvPBCaOOxzWN+5MhUYXORImZm4j78/e9/H+SxY8tl+9gJ2kycbJqcPXt2kD/44IMgs6+QOU/PnVt227j66quDzP4qv/nNbwAAW2yxRY2/B5BLQ13o3bt3kLnP/vnPfwZ5n332AQB07Bj3L07NDzNnZkmib7755tC27777BnmNNdao72k3ONIECSGEEKKQtAhN0FdffRXkp59+Osj8JrLKKqsAiK/0gfwq9LDDDgvyRRddBCDvUN2zZ89lPGMhBJAPaX/llVeCfPbZZwfZnKc33XTT0Na9e/cgpzRITz75JABg1113DW1/+tOfgnzAAQcs07kXhdo4i5933nkAgGnTpoU2DpseMWJEkDfccMMgn3TSSQDyju4c9s7av0WLFgXZtufQb5bffvvt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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# How many images to display.\n", "numbers_to_display = 25\n", "\n", "# Calculate the number of cells that will hold all the images.\n", "num_cells = math.ceil(math.sqrt(numbers_to_display))\n", "\n", "# Make the plot a little bit bigger than default one.\n", "plt.figure(figsize=(10, 10))\n", "\n", "# Go through the first images in a training set and plot them.\n", "for plot_index in range(numbers_to_display):\n", " # Extrace image data.\n", " digit = data[plot_index:plot_index + 1].values\n", " digit_label = digit[0][0]\n", " digit_pixels = digit[0][1:]\n", "\n", " # Calculate image size (remember that each picture has square proportions).\n", " image_size = int(math.sqrt(digit_pixels.shape[0]))\n", " \n", " # Convert image vector into the matrix of pixels.\n", " frame = digit_pixels.reshape((image_size, image_size))\n", " \n", " # Plot the image matrix.\n", " plt.subplot(num_cells, num_cells, plot_index + 1)\n", " plt.imshow(frame, cmap='Greys')\n", " plt.title(label_map[digit_label])\n", " plt.tick_params(axis='both', which='both', bottom=False, left=False, labelbottom=False, labelleft=False)\n", "\n", "# Plot all subplots.\n", "plt.subplots_adjust(hspace=0.5, wspace=0.5)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Split the Data Into Training and Test Sets\n", "\n", "In this step we will split our dataset into _training_ and _testing_ subsets (in proportion 80/20%).\n", "\n", "Training data set will be used for training of our model. Testing dataset will be used for validating of the model. All data from testing dataset will be new to model and we may check how accurate are model predictions." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "# Split data set on training and test sets with proportions 80/20.\n", "# Function sample() returns a random sample of items.\n", "pd_train_data = data.sample(frac=0.8)\n", "pd_test_data = data.drop(pd_train_data.index)\n", "\n", "# Convert training and testing data from Pandas to NumPy format.\n", "train_data = pd_train_data.values\n", "test_data = pd_test_data.values\n", "\n", "# Extract training/test labels and features.\n", "num_training_examples = 3000\n", "x_train = train_data[:num_training_examples, 1:]\n", "y_train = train_data[:num_training_examples, [0]]\n", "\n", "x_test = test_data[:, 1:]\n", "y_test = test_data[:, [0]]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Init and Train Logistic Regression Model\n", "\n", "> ☝🏻This is the place where you might want to play with model configuration.\n", "\n", "- `polynomial_degree` - this parameter will allow you to add additional polynomial features of certain degree. More features - more curved the line will be.\n", "- `max_iterations` - this is the maximum number of iterations that gradient descent algorithm will use to find the minimum of a cost function. Low numbers may prevent gradient descent from reaching the minimum. High numbers will make the algorithm work longer without improving its accuracy.\n", "- `regularization_param` - parameter that will fight overfitting. The higher the parameter, the simplier is the model will be.\n", "- `polynomial_degree` - the degree of additional polynomial features (`x1^2 * x2, x1^2 * x2^2, ...`). This will allow you to curve the predictions.\n", "- `sinusoid_degree` - the degree of sinusoid parameter multipliers of additional features (`sin(x), sin(2*x), ...`). This will allow you to curve the predictions by adding sinusoidal component to the prediction curve.\n", "- `normalize_data` - boolean flag that indicates whether data normalization is needed or not." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "# Set up linear regression parameters.\n", "max_iterations = 10000 # Max number of gradient descent iterations.\n", "regularization_param = 25 # Helps to fight model overfitting.\n", "polynomial_degree = 0 # The degree of additional polynomial features.\n", "sinusoid_degree = 0 # The degree of sinusoid parameter multipliers of additional features.\n", "normalize_data = True # Whether we need to normalize data to make it more unifrom or not. \n", "\n", "# Init logistic regression instance.\n", "logistic_regression = LogisticRegression(x_train, y_train, polynomial_degree, sinusoid_degree, normalize_data)\n", "\n", "# Train logistic regression.\n", "(thetas, costs) = logistic_regression.train(regularization_param, max_iterations)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Print Training Results\n", "\n", "Let's see how model parameters (thetas) look like. For each digit class (from 0 to 9) we've just trained a set of 784 parameters (one theta for each image pixel). These parameters represents the importance of every pixel for specific digit recognition. " ] }, { "cell_type": "code", "execution_count": 7, "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
0123456789...775776777778779780781782783784
0-6.188828-0.098811-0.087328-0.0158620.0240450.1214920.058710-0.0429910.026648-0.019745...-0.051891-0.0396980.2646720.0986610.1243770.036166-0.053816-0.046484-0.026023-0.013350
1-6.474232-0.002895-0.002513-0.009509-0.0117430.117668-0.0482270.0624390.0229600.149320...0.1538830.079365-0.033011-0.0196750.017837-0.025347-0.026005-0.003478-0.002177-0.009066
2-5.334694-0.003845-0.037747-0.110560-0.115551-0.028090-0.106846-0.041750-0.220657-0.049796...-0.0029400.1597900.1637780.0863340.027404-0.098383-0.014745-0.0877770.1672040.146124
3-6.609060-0.010289-0.009757-0.029398-0.002841-0.0138530.0654440.1528620.039919-0.109553...0.070574-0.0616890.028969-0.204451-0.200882-0.112483-0.078020-0.024253-0.008831-0.001139
4-5.9653230.000036-0.0073200.0105270.044382-0.019542-0.009529-0.0236220.027513-0.055903...0.0137630.171588-0.147751-0.0459850.0865050.0588490.084423-0.070254-0.055217-0.002108
5-11.772900-0.000465-0.001262-0.037732-0.001665-0.004291-0.001232-0.010755-0.021838-0.059554...-0.061065-0.070279-0.038202-0.073953-0.083174-0.073595-0.013555-0.012098-0.091695-0.005742
6-4.9228260.142705-0.033088-0.002464-0.113538-0.093484-0.035009-0.0450160.0473470.026366...-0.0962200.025678-0.108178-0.043293-0.179027-0.0507550.0832610.115971-0.025531-0.170215
7-9.278711-0.000367-0.000285-0.000301-0.000410-0.000456-0.000550-0.001178-0.003780-0.007860...-0.050218-0.051179-0.013316-0.013148-0.005308-0.005978-0.005408-0.006201-0.003152-0.000013
8-5.977974-0.000269-0.040986-0.061915-0.019404-0.0659370.1229670.0331920.1070720.096812...0.0658970.037445-0.0309710.014127-0.048779-0.025388-0.033395-0.028944-0.0363000.002200
9-7.507192-0.000174-0.000325-0.001354-0.000743-0.001619-0.001899-0.005294-0.011630-0.013474...-0.033911-0.029371-0.015877-0.003029-0.0042740.012986-0.0011000.0162880.117543-0.000238
\n", "

10 rows × 785 columns

\n", "
" ], "text/plain": [ " 0 1 2 3 4 5 6 \\\n", "0 -6.188828 -0.098811 -0.087328 -0.015862 0.024045 0.121492 0.058710 \n", "1 -6.474232 -0.002895 -0.002513 -0.009509 -0.011743 0.117668 -0.048227 \n", "2 -5.334694 -0.003845 -0.037747 -0.110560 -0.115551 -0.028090 -0.106846 \n", "3 -6.609060 -0.010289 -0.009757 -0.029398 -0.002841 -0.013853 0.065444 \n", "4 -5.965323 0.000036 -0.007320 0.010527 0.044382 -0.019542 -0.009529 \n", "5 -11.772900 -0.000465 -0.001262 -0.037732 -0.001665 -0.004291 -0.001232 \n", "6 -4.922826 0.142705 -0.033088 -0.002464 -0.113538 -0.093484 -0.035009 \n", "7 -9.278711 -0.000367 -0.000285 -0.000301 -0.000410 -0.000456 -0.000550 \n", "8 -5.977974 -0.000269 -0.040986 -0.061915 -0.019404 -0.065937 0.122967 \n", "9 -7.507192 -0.000174 -0.000325 -0.001354 -0.000743 -0.001619 -0.001899 \n", "\n", " 7 8 9 ... 775 776 777 \\\n", "0 -0.042991 0.026648 -0.019745 ... -0.051891 -0.039698 0.264672 \n", "1 0.062439 0.022960 0.149320 ... 0.153883 0.079365 -0.033011 \n", "2 -0.041750 -0.220657 -0.049796 ... -0.002940 0.159790 0.163778 \n", "3 0.152862 0.039919 -0.109553 ... 0.070574 -0.061689 0.028969 \n", "4 -0.023622 0.027513 -0.055903 ... 0.013763 0.171588 -0.147751 \n", "5 -0.010755 -0.021838 -0.059554 ... -0.061065 -0.070279 -0.038202 \n", "6 -0.045016 0.047347 0.026366 ... -0.096220 0.025678 -0.108178 \n", "7 -0.001178 -0.003780 -0.007860 ... -0.050218 -0.051179 -0.013316 \n", "8 0.033192 0.107072 0.096812 ... 0.065897 0.037445 -0.030971 \n", "9 -0.005294 -0.011630 -0.013474 ... -0.033911 -0.029371 -0.015877 \n", "\n", " 778 779 780 781 782 783 784 \n", "0 0.098661 0.124377 0.036166 -0.053816 -0.046484 -0.026023 -0.013350 \n", "1 -0.019675 0.017837 -0.025347 -0.026005 -0.003478 -0.002177 -0.009066 \n", "2 0.086334 0.027404 -0.098383 -0.014745 -0.087777 0.167204 0.146124 \n", "3 -0.204451 -0.200882 -0.112483 -0.078020 -0.024253 -0.008831 -0.001139 \n", "4 -0.045985 0.086505 0.058849 0.084423 -0.070254 -0.055217 -0.002108 \n", "5 -0.073953 -0.083174 -0.073595 -0.013555 -0.012098 -0.091695 -0.005742 \n", "6 -0.043293 -0.179027 -0.050755 0.083261 0.115971 -0.025531 -0.170215 \n", "7 -0.013148 -0.005308 -0.005978 -0.005408 -0.006201 -0.003152 -0.000013 \n", "8 0.014127 -0.048779 -0.025388 -0.033395 -0.028944 -0.036300 0.002200 \n", "9 -0.003029 -0.004274 0.012986 -0.001100 0.016288 0.117543 -0.000238 \n", "\n", "[10 rows x 785 columns]" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Print thetas table.\n", "pd.DataFrame(thetas)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Illustrate Hidden Layers Perceptrons\n", "\n", "Each perceptron in the hidden layer learned something from the training process. What it learned is represented by input theta parameters for it. Each perceptron in the hidden layer has 28x28 input thetas (one for each input image pizel). Each theta represents how valuable each pixel is for this particuar perceptron. So let's try to plot how valuable each pixel of input image is for each perceptron based on its theta values. " ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAj8AAAJBCAYAAACphNSGAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4xLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvDW2N/gAAIABJREFUeJzs3Xe0HeV1x/09qkhCQgL13ruEOhIgJBkjiunNgDHGKxADAduvu4Pxio0d864EEztxWXZwpYTeq2gCAQIJ1FDvHTXUEOp33j8gWZm9f/jMvTi5ue/z/aylFc/O3HPmnDPPzMM5v9mT5XluAAAAqahX2xsAAADwv4nJDwAASAqTHwAAkBQmPwAAIClMfgAAQFKY/AAAgKQw+QEAAElh8lMDWZYdnWXZQ1mW7cmybHWWZZfV9jYBdUWWZddnWTYzy7L9WZb9oba3B6hrsixrnGXZ7R+df3ZnWTY7y7LTa3u76pIGtb0BddQvzOyAmbUzs2Fm9kSWZXPyPJ9fu5sF1AkbzOxHZnaqmTWp5W0B6qIGZrbWzCaY2RozO8PM7s2ybEie56tqc8PqiowOz9WTZVkzM9tuZoPzPF/yUe3PZrY+z/Pv1OrGAXVIlmU/MrPOeZ5fWdvbAtR1WZbNNbMf5Hn+QG1vS13Az17V19fMDv3nxOcjc8xsUC1tDwAgYVmWtbMPz038+lASk5/qO9LMdrnaTjNrXgvbAgBIWJZlDc3sTjP7Y57ni2p7e+oKJj/V976ZtXC1Fma2uxa2BQCQqCzL6pnZn+3DDOr1tbw5dQqTn+pbYmYNsizr899qxxpfNwIA/pdkWZaZ2e324YU3F+R5frCWN6lOYfJTTXme7zGzB83sh1mWNcuy7AQzO8c+nH0DqCDLsgZZlh1hZvXNrH6WZUdkWcaVp0D1/MrMBpjZWXme763tjalrmPzUzHX24SW6m83sbjO7lsvcgdK+Z2Z7zew7Znb5R//7e7W6RUAdkmVZNzP7kn3YauXdLMve/+jf52p50+oMLnUHAABJ4ZsfAACQFCY/AAAgKUx+AABAUpj8AACApDD5AQAASalWb42WLVvmHTp0KNTU1WL79u0LtUOHDhWWP/jgg7BOo0aNQq1Zs2ahtn///lBr2LBhqO3a5e9CYdayZcvC8vbt28M6RxxxRKi1atUq1OrXrx9qe/fGdgtqO+rVK8471XOq17l169ZQO+aYY0LNv06z8tvrHT58ONTU575mzZqteZ63qfiACWvSpEneooVvEB592L/sL9uxY0eotWkT3/7du2PzcTVe1FhQ61VVVf3FZTM9ltVj+XFgpvfTBg3iocofZ9RjqTHUuHHjUFNj9Oijj67Reur9UDVl8+bNjKEKmjVrlvvjsdo/mjRpUvGx1HlI/Z06p6n9Q41Jtb/54/jOnTvDOoMGxdtFqvWOOuqoUFPHdXXu8Ptz8+bxLk3qsY488shQU8c19b6pc52fH6jxoo6J6ty0fv36UmOoWpOfDh062B/+8IdCzW+0mdnixYtDbfPmzYXlWbNmhXW6desWascdd1yoLVmyJNT8pMzM7Pnnnw+1c889t7B87733hnX69esXahdccEGoqUnH7NmzQ+3ZZ58NtaZNmxaW1Y6+dOnSUPvd734XaldeeWWonX322aGmdtiFCxcWltWkRp0U1Xpf+tKXVociClq0aGGf+1zlVhzqYO4H/wMPxJs3X3PNNaE2derUUGvXrl2oPfjgg6XW8wdDdXDs0qVLqLVv3z7U/Dgw0wdztR1+31WPpcZQ3759Q02N0YsvvjjU1DHlkksuKSyrCZc6yaox9C//8i+MoQpatWpl119fvJND69atw3qDBw8ONT9BnjlzZlhn2LBhobZoUbxllto/HnnkkVBT+9tvfvObwvKTTz4Z1nnxxRdD7amnngq1008/PdTeeeedUPvtb38balOmTCksT5o0KayzYMGCUDv++OND7dRTTw21+fNj+zt1ft22bVthWY0h9R8377//fqh9+9vfLjWG+NkLAAAkhckPAABICpMfAACQlGplfg4ePGibNm0q1F577bWwXu/evUPN/7Z64YUXhnWGDx8eairAqfI36rdW9bvk97///cKyzwCZ6ezRww8/HGoqm6CyDiqj5ENwKuClfhu9/fbbQ+3aa68NNfUZDBgwINR8FqFsuLlMIBc1p97fgweLN22eMGFCWGfVqlWhNmbMmFBTOa6vfOUroabC0rfeemthuWfPnmEdte+q9fzxxEwHntV67733XmFZhaxPO+20UFu7dm2oXXTRRaGmLrYYPXp0qPnPReUg1efJrYVq5sCBA+EzVO/5unXrQu1Tn/pUYdnvy2Zm3/3ud0PtzjvvDLW2bduG2gsvvBBq6jl8Xs1n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+M2PiIiINAonPyIiItIonPyIiIhIo3DyIyIiIo2iU4bn9vb2cuyxx1a0AwcOpHr79u1L2pYtWyrl+Dml/NfIFqGUyw0bNiTtggsuqHUeCxYsqJQpNXLQoEFJa2trSxqlIR955JFJ+/7775N29dVXV8pkEidzJSV31k0CJaNZNN+SKY6MpGPGjEmatGbr1q3lkUceqWjXXHNNqkfPr2/fvpXyaaedVuvvYppsKaX861/5/x7qf2TgjG2GTPjUJslAPGDAgFp/S+0yvkPItEz3iN5ZdA3nnXde0mixRVxIMHny5FQn3rNS2MAprenWrVsyupIBlxbV9O7du1KmfkDvu7jQpxRup5SGT8859mUahygVnNoRtUky2E+aNClpMRGekvvJ7L1///5a5xHH/VJKGTduXNKiWZo+i54nmcLr4jc/IiIi0iic/IiIiEijcPIjIiIijcLJj4iIiDSKTic8x/RVMmWRySkmK1M6MhmDTz/99KTRMQlKwD3llFMq5R9//DHVIePnxo0bk0bJnRMnTkzaX3/9lbR4XEpMJvMqGT/JQEYGTjq3mPRL6daU8EnGOGnNEUcckRKXyTz41VdfJS0aLMn4T8ZMokePHkmjvkb1Yr964oknUp2YHFtKKddee23SyExJycfULmM69IQJE1IdSuGlY5511llJowUClAh//fXXV8pkSr3yyiuTRknW0hpKSaf3EfWhuJiFnjEZ4qMxuBROW6b3LvXvPXv2VMo0ptGiEmpbcbeAUnjhDe0iEI3itLDn559//sfHJGjRTjSF05hJ8wN6P9XFb35ERESkUTj5ERERkUbh5EdEREQaRac8P7t37y5vv/12RevXr1+q161bt6TF3/Tod1AKJaRgNDrmJZdckrSHHnooadHzQzs8L1u2LGldu3ZNGnkT6DfIuJNwKXn3bfJIxN+FS+H79uSTTyZtxowZSdu8eXPSooeBdvam37G3bduWNGnN7t27y5tvvlnRZs6cmerFELRSShk/fnylPHDgQPz8CAWBkXeMnin99h79bzE4rhQOCl26dGnSaDduam/U/+g9EJk7d27S4n0shcPpyIcxbdq0pMX3HV0T+RUeffTRpElrunbtmjykcVwqhUPxYoAhhSNSyCF5fur66ygMMY519K6nY9I1kU+H/D30edEXVff9QddOHlXa6Z3OLfpnaRw988wzk0bv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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# How many images to display.\n", "numbers_to_display = 9\n", "\n", "# Calculate the number of cells that will hold all the images.\n", "num_cells = math.ceil(math.sqrt(numbers_to_display))\n", "\n", "# Make the plot a little bit bigger than default one.\n", "plt.figure(figsize=(10, 10))\n", "\n", "# Go through the thetas and print them.\n", "for plot_index in range(numbers_to_display):\n", " # Extrace thetas data.\n", " digit_pixels = thetas[plot_index][1:]\n", "\n", " # Calculate image size (remember that each picture has square proportions).\n", " image_size = int(math.sqrt(digit_pixels.shape[0]))\n", " \n", " # Convert image vector into the matrix of pixels.\n", " frame = digit_pixels.reshape((image_size, image_size))\n", " \n", " # Plot the thetas matrix.\n", " plt.subplot(num_cells, num_cells, plot_index + 1)\n", " plt.imshow(frame, cmap='Greys')\n", " plt.title(plot_index)\n", " plt.tick_params(axis='both', which='both', bottom=False, left=False, labelbottom=False, labelleft=False)\n", "\n", "# Plot all subplots.\n", "plt.subplots_adjust(hspace=0.5, wspace=0.5)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Analyze Gradient Descent Progress\n", "\n", "The plot below illustrates how the cost function value changes over each iteration. You should see it decreasing. \n", "\n", "In case if cost function value increases it may mean that gradient descent missed the cost function minimum and with each step it goes further away from it.\n", "\n", "From this plot you may also get an understanding of how many iterations you need to get an optimal value of the cost function." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Draw gradient descent progress for each label.\n", "labels = logistic_regression.unique_labels\n", "for index, label in enumerate(labels):\n", " plt.plot(range(len(costs[index])), costs[index], label=label_map[labels[index]])\n", "\n", "plt.xlabel('Gradient Steps')\n", "plt.ylabel('Cost')\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Calculate Model Training Precision\n", "\n", "Calculate how many of training and test examples have been classified correctly. Normally we need test precission to be as high as possible. In case if training precision is high and test precission is low it may mean that our model is overfitted (it works really well with the training data set but it is not good at classifying new unknown data from the test dataset). In this case you may want to play with `regularization_param` parameter to fighth the overfitting." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Training Precision: 93.8000%\n", "Test Precision: 83.8000%\n" ] } ], "source": [ "# Make training set predictions.\n", "y_train_predictions = logistic_regression.predict(x_train)\n", "y_test_predictions = logistic_regression.predict(x_test)\n", "\n", "# Check what percentage of them are actually correct.\n", "train_precision = np.sum(y_train_predictions == y_train) / y_train.shape[0] * 100\n", "test_precision = np.sum(y_test_predictions == y_test) / y_test.shape[0] * 100\n", "\n", "print('Training Precision: {:5.4f}%'.format(train_precision))\n", "print('Test Precision: {:5.4f}%'.format(test_precision))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Plot Test Dataset Predictions\n", "\n", "In order to illustrate how our model classifies unknown examples let's plot first 64 predictions for testing dataset. All green clothes on the plot below have been recognized corrctly but all the red clothes have not been recognized correctly by our classifier. On top of each image you may see the clothes class (type) that has been recognized on the image." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# How many numbers to display.\n", "numbers_to_display = 64\n", "\n", "# Calculate the number of cells that will hold all the numbers.\n", "num_cells = math.ceil(math.sqrt(numbers_to_display))\n", "\n", "# Make the plot a little bit bigger than default one.\n", "plt.figure(figsize=(15, 15))\n", "\n", "# Go through the first numbers in a test set and plot them.\n", "for plot_index in range(numbers_to_display):\n", " # Extrace digit data.\n", " digit_label = y_test[plot_index, 0]\n", " digit_pixels = x_test[plot_index, :]\n", " \n", " # Predicted label.\n", " predicted_label = y_test_predictions[plot_index][0]\n", "\n", " # Calculate image size (remember that each picture has square proportions).\n", " image_size = int(math.sqrt(digit_pixels.shape[0]))\n", " \n", " # Convert image vector into the matrix of pixels.\n", " frame = digit_pixels.reshape((image_size, image_size))\n", " \n", " # Plot the number matrix.\n", " color_map = 'Greens' if predicted_label == digit_label else 'Reds'\n", " plt.subplot(num_cells, num_cells, plot_index + 1)\n", " plt.imshow(frame, cmap=color_map)\n", " plt.title(label_map[predicted_label])\n", " plt.tick_params(axis='both', which='both', bottom=False, left=False, labelbottom=False, labelleft=False)\n", "\n", "# Plot all subplots.\n", "plt.subplots_adjust(hspace=0.5, wspace=0.5)\n", "plt.show()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.0" } }, "nbformat": 4, "nbformat_minor": 2 } ================================================ FILE: notebooks/neural_network/multilayer_perceptron_demo.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Neural Network (Multilayer Perceptron) Demo\n", "\n", "_Source: 🤖[Homemade Machine Learning](https://github.com/trekhleb/homemade-machine-learning) repository_\n", "\n", "> ☝Before moving on with this demo you might want to take a look at:\n", "> - 📗[Math behind the Neural Networks](https://github.com/trekhleb/homemade-machine-learning/tree/master/homemade/neural_network)\n", "> - ⚙️[Neural Network Source Code](https://github.com/trekhleb/homemade-machine-learning/blob/master/homemade/neural_network/multilayer_perceptron.py)\n", "\n", "**Artificial neural networks (ANN)** or connectionist systems are computing systems vaguely inspired by the biological neural networks that constitute animal brains. The neural network itself isn't an algorithm, but rather a framework for many different machine learning algorithms to work together and process complex data inputs. Such systems \"learn\" to perform tasks by considering examples, generally without being programmed with any task-specific rules.\n", "\n", "A **multilayer perceptron (MLP)** is a class of feedforward artificial neural network. An MLP consists of, at least, three layers of nodes: an input layer, a hidden layer and an output layer. Except for the input nodes, each node is a neuron that uses a nonlinear activation function. MLP utilizes a supervised learning technique called backpropagation for training. Its multiple layers and non-linear activation distinguish MLP from a linear perceptron. It can distinguish data that is not linearly separable.\n", "\n", "> **Demo Project:** In this example we will train handwritten digits (0-9) classifier using simple multilayer perceptron." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# To make debugging of multilayer_perceptron module easier we enable imported modules autoreloading feature.\n", "# By doing this you may change the code of multilayer_perceptron library and all these changes will be available here.\n", "%load_ext autoreload\n", "%autoreload 2\n", "\n", "# Add project root folder to module loading paths.\n", "import sys\n", "sys.path.append('../..')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Import Dependencies\n", "\n", "- [pandas](https://pandas.pydata.org/) - library that we will use for loading and displaying the data in a table\n", "- [numpy](http://www.numpy.org/) - library that we will use for linear algebra operations\n", "- [matplotlib](https://matplotlib.org/) - library that we will use for plotting the data\n", "- [math](https://docs.python.org/3/library/math.html) - math library that we will use to calculate sqaure roots etc.\n", "- [neural_network](https://github.com/trekhleb/homemade-machine-learning/blob/master/homemade/neural_network/multilayer_perceptron.py) - custom implementation of multilayer perceptron" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# Import 3rd party dependencies.\n", "import numpy as np\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "import matplotlib.image as mpimg\n", "import math\n", "\n", "# Import custom multilayer perceptron implementation.\n", "from homemade.neural_network import MultilayerPerceptron" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Load the Data\n", "\n", "In this demo we will be using a sample of [MNIST dataset in a CSV format](https://www.kaggle.com/oddrationale/mnist-in-csv/home). Instead of using full dataset with 60000 training examples we will use cut dataset of just 10000 examples that we will also split into training and testing sets.\n", "\n", "Each row in the dataset consists of 785 values: the first value is the label (a number from 0 to 9) and the remaining 784 values (28x28 pixels image) are the pixel values (a number from 0 to 255)." ] }, { "cell_type": "code", "execution_count": 3, "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
label1x11x21x31x41x51x61x71x81x9...28x1928x2028x2128x2228x2328x2428x2528x2628x2728x28
05000000000...0000000000
10000000000...0000000000
24000000000...0000000000
31000000000...0000000000
49000000000...0000000000
52000000000...0000000000
61000000000...0000000000
73000000000...0000000000
81000000000...0000000000
94000000000...0000000000
\n", "

10 rows × 785 columns

\n", "
" ], "text/plain": [ " label 1x1 1x2 1x3 1x4 1x5 1x6 1x7 1x8 1x9 ... 28x19 28x20 \\\n", "0 5 0 0 0 0 0 0 0 0 0 ... 0 0 \n", "1 0 0 0 0 0 0 0 0 0 0 ... 0 0 \n", "2 4 0 0 0 0 0 0 0 0 0 ... 0 0 \n", "3 1 0 0 0 0 0 0 0 0 0 ... 0 0 \n", "4 9 0 0 0 0 0 0 0 0 0 ... 0 0 \n", "5 2 0 0 0 0 0 0 0 0 0 ... 0 0 \n", "6 1 0 0 0 0 0 0 0 0 0 ... 0 0 \n", "7 3 0 0 0 0 0 0 0 0 0 ... 0 0 \n", "8 1 0 0 0 0 0 0 0 0 0 ... 0 0 \n", "9 4 0 0 0 0 0 0 0 0 0 ... 0 0 \n", "\n", " 28x21 28x22 28x23 28x24 28x25 28x26 28x27 28x28 \n", "0 0 0 0 0 0 0 0 0 \n", "1 0 0 0 0 0 0 0 0 \n", "2 0 0 0 0 0 0 0 0 \n", "3 0 0 0 0 0 0 0 0 \n", "4 0 0 0 0 0 0 0 0 \n", "5 0 0 0 0 0 0 0 0 \n", "6 0 0 0 0 0 0 0 0 \n", "7 0 0 0 0 0 0 0 0 \n", "8 0 0 0 0 0 0 0 0 \n", "9 0 0 0 0 0 0 0 0 \n", "\n", "[10 rows x 785 columns]" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Load the data.\n", "data = pd.read_csv('../../data/mnist-demo.csv')\n", "\n", "# Print the data table.\n", "data.head(10)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "RangeIndex: 10000 entries, 0 to 9999\n", "Columns: 785 entries, label to 28x28\n", "dtypes: int64(785)\n", "memory usage: 59.9 MB\n" ] } ], "source": [ "data.info()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Plot the Data\n", "\n", "Let's peek first 25 rows of the dataset and display them as an images to have an example of digits we will be working with." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkEAAAJBCAYAAABBBGGtAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4xLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvDW2N/gAAIABJREFUeJzs3Xm8leP+//H3pVKaJCUybVNCSJL5cAwNMicyz1RCZsdx0ODLMYVCxkJmJ47wM5wiMpe5UkQhSpuUojRcvz9296drae323muvte619v16Ph49vM+11/A53a29r31d93VdznsvAACApFkj7gIAAADiQCcIAAAkEp0gAACQSHSCAABAItEJAgAAiUQnCAAAJBKdIAAAkEhF3wlyzr3unFvknFuw4s+UuGtCdjjnmjrnnnHOLXTOzXDOHRd3Tcgu59xWKz6/I+KuBdnjnOvjnBvvnFvsnBsedz3ILufcNs65Mc65ec65r5xzR8RdU6aKvhO0Qh/vfcMVf7aOuxhkzR2S/pTUQtLxku5yzm0Xb0nIsjskfRB3Eci6HyQNlPRA3IUgu5xztSX9V9LzkppKOkvSCOdcq1gLy1BN6QShhnHONZDUTdK/vPcLvPfjJD0n6cR4K0O2OOd6SPpV0ui4a0F2ee9Heu+flfRz3LUg61pLailpkPd+mfd+jKS3VKTfm2tKJ+g651ypc+4t59y+cReDrGglaan3fmrQ9okkRoJqAOdcY0n9JV0Ydy0Aqs1JahN3EZmoCZ2gyyRtLmlDSfdIGuWc2yLekpAFDSXN/0vbPEmNYqgF2TdA0v3e++/jLgRAlUyR9JOkS5xzdZxzHSXtI6l+vGVlpug7Qd7797z3v3nvF3vvH1TZsNxBcdeFalsgqfFf2hpL+i2GWpBFzrm2kg6QNCjuWgBUjfd+iaTDJXWVNEvSRZKelFSUv9DUjruAHPAqG5pDcZsqqbZzbivv/Zcr2naUNDHGmpAd+0oqkfStc04qG/Wr5Zzb1nvfLsa6AFSC9/5TlY3+SJKcc29LejC+ijJX1CNBzrkmzrlOzrl6zrnazrnjJf1N0ktx14bq8d4vlDRSUn/nXAPn3J6SDpP0cLyVIQvukbSFpLYr/gyV9IKkTnEWhexZ8f24nqRaKuvg1luxqgg1gHNuhxXXtL5z7mJJG0gaHnNZGSnqTpCkOipbhjlHUqmkcyUd/pebaVG8ektaS2Xzz49J6uW9ZySoyHnvf/fez4r+qGzqc5H3fk7ctSFrrpT0h6TLJZ2wIl8Za0XIphMl/aiy7837SzrQe7843pIy47z3cdcAAACQd8U+EgQAAJAROkEAACCR6AQBAIBEohMEAAASiU4QAABIpCrt29CsWTNfUlKSo1JqpunTp6u0tLTgN2/k2mZmwoQJpd775nHXURGub2aK4fpybTNTDNdW4vpmqrLXt0qdoJKSEo0fPz7zqhKoffv2cZdQKVzbzDjnZsRdQ2VwfTNTDNeXa5uZYri2Etc3U5W9vkyHAQCARKITBAAAEolOEAAASCQ6QQAAIJHoBAEAgESiEwQAABKJThAAAEgkOkEAACCRqrRZIhC37777zvJtt90mSRo0aJC1XXDBBZbPP/98yxtvvHEeqgMAFBNGggAAQCLRCQIAAIlUdNNhy5cvt7x48eIKH//ggw9KkhYuXGhtkyZNsnzrrbdavuKKKyRJQ4YMsba11lrL8s0332y5V69eVSkb1TBz5kzLO+20k+Vff/1VkuTcyvNpw+sZXXtJmjNnTi5LRMwmT54sSTrggAOs7eOPP7bcvHnBn5OZePfee6/lnj17Wo6+50+ZMsXaWrVqlb/CUKMxEgQAABKJThAAAEikgpgOmzdvnuVly5ZZ/uSTTyy/8sorklZOgUjSPffck9H7lZSUWL7oooss33///ZKktdde29r23ntvy/vtt19G74eqmzFjhuV9993X8ty5cy1H02Dh9apbt67ln376yfLXX38tSdp0002trVatWtkruAb58ssvLYd/3x06dIijnEp57733JEn7779/zJWgKkaPHm35wgsvtLzGGqv+fh5OewPZwkgQAABIpNhGgr7//nvLbdu2tRz+5plN4W8W0YiPlHrj8+mnny5JWm+99aytYcOGlrm5MjeWLFkiKXX0p3PnzpbDvYHSCf/9XHvttZb32msvy1tttZWk1NHD6HojVfjb+RdffGG50EaCvPeWo9GrqVOnxlUOMhBer0WLFsVYCVZn+vTplocPH275pZdesvzBBx+s8rxHHnnEcrhX26uvvmr5lFNOkZQ6Q5NPjAQBAIBEohMEAAASKbbpsHXXXddyixYtLGc6HdaxY8e0rz1y5EhJqTfMhjfaIn6XXHKJpNT9mapi7NixlsP9oI444gjL0b+Djz76KKP3SJLbb7/dcvi5KjQLFiywfN1110lKPSqF6evCFe3Vds0116T9ert27SxHi2IaNGiQ87qQ6q233pIkHX300dY2e/Zsy+GU9JFHHmk5uoXhhBNOSPu64fOiPdzuuOOOLFRcdYwEAQCARKITBAAAEim26bBwVVZ4t/nTTz9teffdd7fcrVu3VV4jXP3z3//+1/Kaa65pedasWZJWnjiOwhCu+BoxYoSk1CHSUDitFf47iIZaw1UH22yzjeXLLrvMcvTvqrz3wErhXl2FLDxaIRJefxSWr776yvJBBx0kSfrll1/SPvb666+3HO4DhtwIj6MKV4J17dpVUurU8+GHH2554MCBlqMVuNLK7yGnnXaatT3++ONp33uPPfbIsOrsYCQIAAAkEp0gAACQSAVxbMYuu+xieYcddrAcTmtdeumlkqQbbrjB2gYMGJD2saH1119f0srVI4hPVU6DP/744y2Hp0tHq0rC9h49elhb/fr1Lbds2dJytFnmww8/bG2XX3655XBKLYl++OEHy+F1KmTpplIOPPDAGCpBZdx3332W022AGq4u+vvf/56XmlDmtddes9ypU6dVvn7MMcdYfuCBByyHq65D48aNk1T+FFi4MWJ4u0McGAkCAACJRCcIAAAkUkFMh4XKG15bZ511VmkLN3ULT3vntOHCUVpaavnf//635XBTzGizzM0228zaevXqZTmc6gzPCQtzZf3++++Wb7zxRsvhv6Ukijakk1L/jgpNuBnmZ599tsrXw41SEb/yPm/R9HR4vcLbG5B74fe8Cy64wHL48/Oqq66SlLrStryf0aG+ffuu9utPPPGE5fAWhjgwEgQAABKp4EaCyhP1LN9//31re+aZZyxPnDjRcps2bfJXGFaxdOlSyxdffLHlaD8gKXXvj5dfflmStOWWW1pbdLJ8Ln3zzTc5f49i8fnnn6dtz2S0LZf++c9/Wg5v5o4WVJS3QAL5Ey10kKTDDjtstY8Nj81o3bp1rkrCCkOHDrUcjv6EozvhQpN//OMfkqQ6deqkfb3we/0nn3xi+csvv5SUui9bOPLUvn37KteeK4wEAQCARKITBAAAEqlopsOiYe577rnH2kaPHm05HHYNt/Xec889JaXuRcCN07n17bffWg6nwELvvvuu5VatWq3y9fBYFcRn1113zev7LV682PKE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UlKi8ePHZ15VArVv3z7uEiqFa5sZ59yMuGuoDK5vZorh+nJtM1MM11bi+maqsteX6TAAAJBIdIIAAEAi0QkCAACJRCcIAAAkEp0gAACQSHSCAABAItEJAgAAiUQnCAAAJBKdIAAAkEhV2jEayKUBAwZYvuqqqyx36NDB8iuvvGJ57bXXzk9hAIC86d69u2XvveWnn3466+/FSBAAAEgkOkEAACCRauR02OLFiy0vWbJEkjRu3DhrmzlzpuWTTz7Zcu3aNfKvo+D9+uuvkqTbb7/d2tZYY2X/fMKECZa//fZby9tvv30eqkN1lZaWSpKWLl1qbe+//77lww47zHJ43avi1FNPlSTdfffd1larVq2MXgtVt2zZMsvTpk2z3LdvX8svvvhiXmtCcbn22mstv/DCC5YvuOCCnL4vI0EAACCR6AQBAIBEKur5n2gaRZJuvvlmy2PGjLH83nvvrfY1wqmxcEUS8qd+/fqSpEMPPdTahg8fHlM1yNSsWbMsP/TQQ5bvueceSdLy5cutLZzWDKfAnHMZvXf072WdddaxtoEDB1quW7duRq+LyglvQWjdurXljTbayPKCBQssN2zYMD+FoeBFP7vD6bA111zTcteuXXP6/owEAQCARCqakaA5c+ZIkm677TZrC/Mff/xhOdxXYLPNNpMkrbvuutYW3mgb3kjZq1cvSVLz5s2zVTYqIer1R9cKxenyyy+3PGLEiFhqGDRokOWePXta3mKLLeIoJ/G+//57y/PmzbPMSBAi0aKlP//809oOOeQQy3vssUdO35+RIAAAkEh0ggAAQCIV3HTYokWLLIc3Nt51112SUodUyxPuHzN27FhJqXuUtGjRwvLs2bMtR6/NdFh+Rdf8o48+irkSVEc4hJ1uOqxly5aWL774YsvhDdPp9gl68803LT/zzDPVrhP5E96agOL15ZdfWg4XED3wwAOW11prrUq/XviZfvvttyVJ2267rbWF09q5xkgQAABIJDpBAAAgkQpuOuytt96yfP3111f6eeFQ2htvvGG5cePGkqSff/45C9UhF6KjTSZNmlThY999913Lm2yyiSROky8URxxxhOVffvllla+HU11VWR109tlnW95mm20sh3sNRU477TTLm266aaXfA7kR7vsU7iWE4hKe6v7ZZ59ZHjBggOUtt9yy0q934YUXWv7pp58kSaNGjbK2cOo81xgJAgAAiUQnCAAAJFLBTYdVdFxCq1atLO+3336Wwy23oymw0IwZM6pfHHKiUaNGklJPC442rvyrsD3aAPPII4/MYXWorHC6K91nMFMffvih5ehE+vJEU6SSVLt2wX17S7SPP/7Y8uabbx5jJaiq8PMcTnGGGxxWJDyiKlxtFn3fiGu6lJEgAACQSHSCAABAIhXcePGdd95peffdd7fcuXNnSakbHTZo0KDSrxvdgY7CddZZZ1kubzoMyRGdKRSeEfj777+v9jmXXHJJTmtCeuFU6DrrrGN57ty5lidPnpzXmlB9gwcPliS988471rbTTjtZLikpWe3zw+my6667zvKCBQssd+rUSVLuzwgrDyNBAAAgkQpuJCi6SVaSevfunbXXHTNmTNZeC7lX0VEKqDnCfb0uuugiyxMnTpRUuZsv9957b0n8W4lLvXr1LIfHpzz00ENxlINqmD9/vuVor746depY2yOPPGK5fv36q32tfv36WR46dKjlcAHDiy++mHmxWcB3DAAAkEh0ggAAQCIV3HRYVTz99NOWwyG88OTiaE+DCRMmpH2Nrl27WmbvisIRTmuE+1KgcP3666+Wn3zyScsVDXeH2+VXdK2bNGliOZxq2WuvvSSlDtsDqJwff/zR8gEHHGB59uzZklKntcK9+soTTZnddNNNab9+++23Z1RnLjASBAAAEolOEAAASKSCng6LTheXpB9++EGSdNVVV1nbiBEj0j6vopVFG2+8seVhw4at9rEAyhcOo++7776Wp02blpP3C1ceHXTQQTl5D+RGRUeeIPfCn42vvfaa5Y4dO6Z9TPQzcezYsda2/vrrWz755JMtL1q0yHJ0/FV4a0p4LNLBBx+cUf25wE99AACQSHSCAABAIhXEdNiyZcssf//995bD4fXvvvtOUurmTOG0VpcuXSw/9thjlsPtuSNLly61/MILL1g+7rjjJEm1atWqUv0AUoe+w1yRqmyMGa4IO//88y23bdu20u+HeDz44IOWBw0aFGMlyfXmm29ajo6rkFJXZYafwe22205S6mbDYX7iiScshyfDRz+vw6mzG2+8sVq15wojQQAAIJHoBAEAgESKbTosnAL7+OOPLe+6665pHx+dLr///vtb2xZbbGH5jz/+sPzpp59afu+991Z5rVmzZlk+9dRTLUebJYY11K5dEDOGiVOZKZJXX31VknTkkUfmpSasaoMNNrD8wQcfWH7qqacsRytP1lxzzSq99v333y9Juvrqq6tTIvKsc+fOljk7rDC89dZbklI3Qgw/j02bNrX8v//9z3J0lmffvn2t7ZlnnrEcTo2l26Q42mxRkjbbbDPL4ebF4XvHgZEgAACQSHkf5ohGgG677TZru/TSS9M+NrpRWZJOOukkSamnFf/++++Ww30H3n33Xct169aVlHpTVjjyFO4TtM8++0iSjj76aGsL9yVq2LBh2jo32mijtO3IXGWOzbj33nslSddcc421tWjRIqd1oXxrr7225TPOOKParxedKM9IUHEJf+MP/fnnn5bnzZsnKfXfDHInuhF9yy23tLbw6IoDDzxwtc8fMmSI5XDW5aWXXlrt88LRocMPP9xy3KM/IUaCAABAItEJAgAAiZSX6bDwJtdbb71VknTZZZdZW3TzlbRyu20pdR+DaBpsxowZ1nbmmWdafuONNyxvv/32lh9//HFJUuvWra1t8eLFls8991zLDzzwgKTU/SzC07BD4YnzU6dOTfsYZO7KK6+0fO211672sdG02F+fh+L24Ycfxl0CMlDePmvh1Eh4JBJy75hjjpGU+jO1cePGlX7+/PnzLb/zzjtpHxPuQRQuWoo0adKk0u+XT4wEAQCARKITBAAAEikv02HPP/+85WgaLFxpNWrUKMs777yz5SlTplgeOnSopNST48O71MO718NVZemG/KIVY5K0ww47WI6m6rp162Zt4VRLiG3fcyu8LigM0crOzz77zNqibfUlqU6dOtV+j2jvJ0nq3r17tV8P+de+fXvL4XEm4arcaGVS//7981dYgmX6WYpOhn/kkUes7ddff7W87bbbWt5jjz0yrC5ejAQBAIBEohMEAAASKS/TYb17916lLTzJ/Z///KflaBMtSfr8889X+7p33XWX5dNPP91yRSdRV2TvvfdOm5E/4ZTkNttsY3nSpEmrPPZf//qX5fDfWiFtyFWswpOho00pw5Ojf/nlF8tVmQ4Lp7Lff/99yz169LC8YMGCVZ5Xv359y+HGqShM4ZE233zzjeVwE1oUrkcffVSSNHDgQGsLj8qJjuMoZowEAQCARMrLSFBJSYnl6PDS6IYrqfze5AknnGA52ta7S5cu1hbuO1Dd0R8Urg4dOliePHnyKl/n2ufOKaecYjndYcThAoGq7DsS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WB1Qc9x2222WL7vssoxe49FHH612HRdccIHl9u3bS5LOPPNMa+vWrZvlJk2aVPv9kB3z58+3PGLEiAofX1JSIolbEwpddJTJCy+8YG3htX777bctd+7cOX+FZREjQQAAIJEKeiQovFHu7rvvliQde+yx1hbuR7H55ptb/vrrr1d5rV9++cXyqFGjLDMSlAzRzbzhDcBPPvmk5YEDB6Z9XrS/1E033ZTD6uIX3ahaGeutt57lvffeu9LP22abbSyHCxl++ukny2+++abl999/P+W/krTzzjtbbtu2baXfG7kR3RDdpUsXa4tupv2r9957z3I0yofCVqdOHUmp1yu8GXrmzJl5rynbGAkCAACJRCcIAAAkUkFPh4UOOeQQSdKOO+5obeFNWc2aNbOcbjos1LNnzyxXh0IxadIky48//rjlaO+ouXPnWlu0df/qjB49OovVFa5x48ZZDoe70+3Vs+aaa1qOFixUx+LFiy1vt912ltN9jp966inLTIfF77HHHpMkTZs2zdpOOOEEy0OGDLHcqFGj/BWGrLrkkkssjxw50vLnn38eRzlZxUgQAABIJDpBAAAgkYpmOixy8803Ww63Z4+29K+MJUuWZLUmxCPaz+bDDz+0toqmr9Zee23L5557ruVwldPf//53y7VrF91HJCNNmzZNm/MhXDWUbgqsXr16ls8666y81ITyhSvB3njjDUlSq1atrO2WW26xzBRYzRCu7AwNHTrU8oABAyxnY5o8XxgJAgAAiUQnCAAAJFLRjfXvtttull966SXLBxxwgOVweD2dK6+80vI999yTxeqQC3/88Yfl/v37W77xxhslSc2bN7e2fffd1/J1111nOdpMM1zZFE6NIfeWLVtm+eqrr7Y8aNCg1T5v6tSplqtyOj2yZ/z48ZbDk+GjFZZnnHGGtUUb7KFmCjfDDFd2vv7665YPPvjgfJZULYwEAQCARKITBAAAEqnopsOi1QhS6rRXeL5QRcLT6VH4whWBN9xwg+V+/fpJSj31PJzuQmH44osvJEn333+/tYXXNBROpfznP/+RJK2//vo5rA7lWbRokeWKVl2Gm9U2bty40u8Rbn5Z3ia34ecb8Stvk9lwaqyYMBIEAAASqaBHgubMmWO5Y8eOklK36V66dGlGrxu9FgpDtG9TeJP67bffbvnRRx+13LlzZ8vRsQlJ2cunmMyYMcPy9ttvLyn1xujyrLHGyt/LopugK3O8CbIv/HsPR9qXL19uObpe4T5b5YmO2AhfO7xB/quvvkr7vMsvv1ySNH/+fGtj/yFkCyNBAAAgkegEAQCARCroeYRvvvnGcnRzZaZTYKFwqiUcjkU8opOmw2NQevXqZXnHHXe0zNRXcXj88cctV2YaLBLeXNmuXTtJqceYHHPMMZYPOeQQyxtssEFGdaJ8kyZNsvzf//7XcjhlucUWW0gq/2bomTNnWg5vrh4+fPgqjw2nuKJ9vSTpk08+kSR1797d2p544gnL7PeF6mAkCAAAJBKdIAAAkEgFPbfQoUMHyw8//LAk6aSTTrK28DiFqgiHaBG/Cy+8UFLqapRTTz3VMlNgxSecuohWdP7vf/+zttmzZ1f6tV577bW0uXfv3pavvfZaSVKfPn2srUGDBlWoGFLqdGR5+/ZsvPHGls877zxJ0rrrrmttpaWllv/9739bHjZsmOUWLVpISv13cskll1j+/fffLUcnmP/000+V/H+BXAqPzagJKzcZCQIAAIlEJwgAACRS0cwzHHXUUZKkrbbaytrCzbNC4WqUI444QpL066+/5rA6VMcBBxwgSRozZoy1hcPko0aNsrzddtvlrzBkLFzdE01lz5s3z9rCz+4vv/xiOdxQ78Ybb5SUOvweCjft+8c//iEpdVO/p59+2nJNGLbPh2gVrpS6Ei8UbV4oST179pQkLVy40NrCVZ4jRoywHK7iOuussyRJV155pbWF02jhe0fPO/TQQ9O+FvKrpn2WGAkCAACJRCcIAAAkUtFMh0XCjfPKEw6fDxw4UFLqqpFx48ZZDofoGWLNvunTp1sOV5XUqlXL8nPPPScpdfXIueeea3mvvfayPGXKFMvrrbdeVmtFboWfrzCH/y7Cz/dBBx0kaeVnWEpdYZbOM888YzmahpNSV5WifB9//HGFj4mmwELh9PUrr7yS9nnvvvuu5VatWklKXYEWtf1VtPKP0+QLW3RGYLFhJAgAACRS0Y0EVUZ4Y3Q4AhSpW7eu5Zp2k1ecFixYIEnq2rWrtYUjN+FW9/vss4/ltdZaS5J0yimnWFs4EhTeRBu9h8RIUE33t7/9TZL00ksvWVu3bt0sh0c5pDN58uTcFFaD/fzzz5bDEfVw365QtOfaxIkT0z7v0UcftRyO9EQ3QXfp0qXC55V3gzYKy/rrrx93CRlhJAgAACQSnSAAAJBINXI67JZbblnt18N9LMo7/RhV17p1a0mpezI99NBDlsMpsHTuu+++tO1HH3205Q033LA6JaIIhaeW77rrrpYrmg5r06ZNzmpKgvBWgYpuGwivUfjY8ePHW472cpJWHnkUXqPwseEtC0AuMRIEAAASiU4QAABIpLxPh0XDoL169bK20047zXK0IqSqwlVD11133WofG+0/guzq37+/pJUnS0srjztZnWhIPDptXJK23HJLyzfccINlhskLS/i5C49I2GGHHSzvscce1XqP8HiMDz/8cLWPrV175be0Dh06VOt9k+jwww+3fOmll1oO9/AKp7WiVWHhfmuhQYMGWQ5Xf0WnyEdHo0hSo0aNMi0bBWDp0qVxl5ARRoIAAEAi0QkCAACJlPfpsGjr8wcffNDawq3an3zyScvNmjWz3LRpU0nSd999Z23hkQzhEG26E+Ovv/56ywy75kY0rRlOWb333nuWw1O9Q3PmzJEknXDCCdZ28803W1533XWzWieqJ5wCO/DAAy2H1/r333+v9vtEJ5Pfdddd1lbev6HIzjvvbHmrrbaqdg1JU6dOHcsNGza0HF7z8O+1KpvNpjtFvm3bthnVicLz2muvWQ43NS10jAQBAIBEyvtIUN++fSVJX375pbWF2+JvvfXWlsPfOKL9QUaNGmVt5d2MF/52Ev2mccEFF1hbePMksu/4449Pm2+//fY4ykGWhQdZhqM/ofD4heh4k3CUIbRkyRLL4V5RV1xxhaTyP+fhjbbRKEM4woyqCw+zff311y1Hh5hK0siRI1f7GhdeeKHlcGRup512slzeYakoTA0aNLAcXtMJEybEUU5WMRIEAAASiU4QAABIpLzPC22++eaSUo9QCPcMOuywwyyHU2Zhrkh4I21F+4oAqJqDDz7YcnjTciicVtl7770lSc2bN0/72OjGeEl68803K11HeKPtO++8I4lplmwKb1p+6qmnYqwEcatVq5bl8hYWhbeqcGM0AABAgaMTBAAAEim2ZVKXX3655XC77fDU8dD7778vSRoyZEjar6+zzjqWmQIDcmf33Xe3fM4551i+44470j6+KlNc6YSrOcNVSt27d7dcUlJSrfcAUDnhcTThCsJwL6liwkgQAABIJDpBAAAgkQpi18BwuPvEE09M+5ioffDgwXmpCUB6TZo0sRye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C/fhi0bgpZX7RElSaWmp5WjG5v3337e2TTfd1PKzzz5rmZEgAACAGNAJAgAAiZT36bBrr71WUuo+IqGuXbtaDm+YrMo02KJFiyxHw3HPPfdche/HzZXFJRqKXbhwYdqvs2V/fMIb4ps0abLK17/77jvL4b5c4bB7dBJ1eOzGgQcemNU6UXUPPvig5WhRQjhFEgqPRwhvqI32bYsWvEjSo48+ajncOw7xefvttyWlngp/zTXXWA4/r6+99toqzx83bpzlQt1/j5EgAACQSHSCAABAIuV9Oqxv376SUo83CPf+GD58uOXyttOvSDisetZZZ63y9fAk6kceeaTa74d4zJ07V5L0ySefpP16ly5dVvv88MT5GTNmWA6HcKNh+fL2oULFwuMyquKEE06QlHqKPFOc8bvhhhssv/HGG5JSpz+jU8ElqVevXpajPYUkaaeddpIkjR8/3to6duxo+Z133rG8ww47ZKNsZGCDDTaQJM2bN8/axowZYznd9LW08mfpZpttlusSq42RIAAAkEh0ggAAQCLlfTps1113lSSNHTs2q68bbsTWp0+fVb4enjh++eWXW2YKrPCFG3KFp1V//PHHq31eNJ0iSXvuuaeklasdJOnHH3+0/M0331gON3D74osvJEk333xzVctOtOXLl1t+9dVXJaUOnZfnxBNPtByuQkK8Zs2aZTn8PEYblobCjWmPOeYYy+lWB0WfSyl1FWB4rEq4sR7yK5quDL8/Rqe+S6nXL3T66adLklq0aJHD6rKDkSAAAJBIdIIAAEAixXaKfLaFK77Cu9Qj//nPfywfdNBBeakJ0pIlSyyHq7GiaSZJevPNNyWtPB/ur3777TfL4SnxFQnPrZkzZ84qX7/44osth5tmhiuQ0m30h4qFq4Luu+8+Sek/l39Vmccg/6KVmH8VngcVadmypeUrrrii0u/Rs2fPtK+B+IWrvMINLsvzj3/8I5flZBUjQQAAIJGKeiRo0KBBlsMbMddYY9W+XThShNyIRn1uu+02awv3bKroRuZQOAITjsyE+5GEN2hGLrvsMsu9e/e2vPHGG1f6vVF54SjdE088Yfnee++1HI3u7LPPPtYWfh5vuukmy+H+YSh84SKCSN26dTN6LUZdi8NXX31luaKfu8WgOKsGAACoJjpBAAAgkYpuOizckj3ccj0cigtvrnz66aclSc2aNctD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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# How many numbers to display.\n", "numbers_to_display = 25\n", "\n", "# Calculate the number of cells that will hold all the numbers.\n", "num_cells = math.ceil(math.sqrt(numbers_to_display))\n", "\n", "# Make the plot a little bit bigger than default one.\n", "plt.figure(figsize=(10, 10))\n", "\n", "# Go through the first numbers in a training set and plot them.\n", "for plot_index in range(numbers_to_display):\n", " # Extract digit data.\n", " digit = data[plot_index:plot_index + 1].values\n", " digit_label = digit[0][0]\n", " digit_pixels = digit[0][1:]\n", "\n", " # Calculate image size (remember that each picture has square proportions).\n", " image_size = int(math.sqrt(digit_pixels.shape[0]))\n", " \n", " # Convert image vector into the matrix of pixels.\n", " frame = digit_pixels.reshape((image_size, image_size))\n", " \n", " # Plot the number matrix.\n", " plt.subplot(num_cells, num_cells, plot_index + 1)\n", " plt.imshow(frame, cmap='Greys')\n", " plt.title(digit_label)\n", " plt.tick_params(axis='both', which='both', bottom=False, left=False, labelbottom=False, labelleft=False)\n", "\n", "# Plot all subplots.\n", "plt.subplots_adjust(hspace=0.5, wspace=0.5)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Split the Data Into Training and Test Sets\n", "\n", "In this step we will split our dataset into _training_ and _testing_ subsets (in proportion 80/20%).\n", "\n", "Training data set will be used for training of our model. Testing dataset will be used for validating of the model. All data from testing dataset will be new to model and we may check how accurate are model predictions." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "# Split data set on training and test sets with proportions 80/20.\n", "# Function sample() returns a random sample of items.\n", "pd_train_data = data.sample(frac=0.8)\n", "pd_test_data = data.drop(pd_train_data.index)\n", "\n", "# Convert training and testing data from Pandas to NumPy format.\n", "train_data = pd_train_data.values\n", "test_data = pd_test_data.values\n", "\n", "# Extract training/test labels and features.\n", "num_training_examples = 1700\n", "\n", "x_train = train_data[:num_training_examples, 1:]\n", "y_train = train_data[:num_training_examples, [0]]\n", "\n", "x_test = test_data[:, 1:]\n", "y_test = test_data[:, [0]]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Init and Train MLP Model\n", "\n", "> ☝🏻 This is the place where you might want to play with model configuration.\n", "\n", "> ⚠️ Be aware though that the training of the neural network with current parameters may take up to 15 minutes depending on the hardware. \n", "\n", "- `layers` - configuration of the multilayer perceptron layers (array of numbers where every number represents the number of nayron in specific layer).\n", "- `max_iterations` - this is the maximum number of iterations that gradient descent algorithm will use to find the minimum of a cost function. Low numbers may prevent gradient descent from reaching the minimum. High numbers will make the algorithm work longer without improving its accuracy.\n", "- `regularization_param` - parameter that will fight overfitting. The higher the parameter, the simplier is the model will be.\n", "- `normalize_data` - boolean flag that indicates whether data normalization is needed or not.\n", "- `alpha` - the size of gradient descent steps. You may need to reduce the step size if gradient descent can't find the cost function minimum. " ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Configure neural network.\n", "layers = [\n", " 784, # Input layer - 28x28 input pixels.\n", " 25, # First hidden layer - 25 hidden units.\n", " 10, # Output layer - 10 labels, from 0 to 9.\n", "];\n", "normalize_data = True # Flag that detects whether we want to do features normalization or not.\n", "epsilon = 0.12 # Defines the range for initial theta values.\n", "max_iterations = 300 # Max number of gradient descent iterations.\n", "regularization_param = 3 # Helps to fight model overfitting.\n", "alpha = 0.1 # Gradient descent step size.\n", "\n", "# Init neural network.\n", "multilayer_perceptron = MultilayerPerceptron(x_train, y_train, layers, epsilon, normalize_data)\n", "\n", "# Train neural network.\n", "(thetas, costs) = multilayer_perceptron.train(regularization_param, max_iterations, alpha)\n", "\n", "plt.plot(range(len(costs)), costs)\n", "plt.xlabel('Gradient Steps')\n", "plt.ylabel('Cost')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Illustrate Hidden Layers Perceptrons\n", "\n", "Each perceptron in the hidden layer learned something from the training process. What it learned is represented by input theta parameters for it. Each perceptron in the hidden layer has 28x28 input thetas (one for each input image pizel). Each theta represents how valuable each pixel is for this particuar perceptron. So let's try to plot how valuable each pixel of input image is for each perceptron based on its theta values. " ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "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YcIESfW1y9eYD/v//e9/o73CCitE+7e/bfjarbLKKrHt17/+dbTf9773RZsPmmeccYak+o14n332iTZvUFzb/XDE9fznP/95tHke3t+HPvSh2HbeeedF+zWveU20OSY8rl772jAzrj2gbbjhhn2+b6XGeNx7770lSddff31s94PLuuuuG9t47+NDh8H1kdfijW9sGUVzjHjubrLJJrGN85X3ihtvvDHa7iuuJezrG25oVfnwOP3xj38c2x5/vGXyvcYaa0TbL3I8jn/961+xzfd7Sdpnn33mq3979RBUSokFhBfiPe95jyRpnXXWiW133HFHtLfdtuUn6JPjpHnooVYJE95UzznnnGh70vCi9nRD46R/17sappaf+lTLwuCWW26J9gc+0DLQ9E2TDNQf//jHaG+11VbR5qJ65513SpLuv//+tn/vBEyePDkWofXXXz+2/+Y3v5Ek/fOfrZIya621VrQ56fzA9PTTT8c2PiyeddZZ0d5hhx3m2QdvxHyj4eRqt8j94Ac/iG1bb711tDlBf/KTn8xzPGuuuabagQ++vjnyAY5vTZ2CF154IRZAjk3PlZtuuim2cR5zgXnLW94iSVp11VVjG29yfNHgQ6z7jHPQN0+p/tD5iU98Itq33nqrJGm77baLbe5Hqf5wvOWWW0qqPzBxIfVL1Nz78839kUceaXvsnYCBAwfGuDYzI0nnnnuupPpLwnLLLRdtPpS4T/mSwYeHX/2qVSaKN9edd95ZUn0csF84l/jw1I6lIlP04Q9/ONoer3/6059im188+Xf+rtR66OaDM9eSTsHQoUPjZYz3R/fr8su3vFz54Mq563WR6yofiN7xjndE+8EHH4y2++Gqq66KbT4Wqf7SwvvCz372M0n1ezHnGB+q/fL7tre9LbbxODkurr322mj7QeuBBx6IbW9/+9vVW2RMUCKRSCQSia5EPgQlEolEIpHoSvQ2MFqrrbaapLpuaLrRFJhUpystF0ktepQBrqRJSbUxbsTUJqlqUnGUOShxWc5gkOzdd98dbUob//nPvEVvKalQj6QEs/3220uqU5WOCaJs2JcxYMCAkC0Y22XZkteJ9DJjQn75y19KktZbb73Ydt1110WbMRqUMh3Pdfvtt8c2atQM0GSMygc/+MF5jpf7o4TnfmAfcUyQlrcMIynipDjefZ6dhHHjxoX2zjlmidLx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//77R/vhhx+unY8kvf/974/2X//612h//OMfj/b9998vSXrd61reXaeddlq0zz///H+rA7DsssvqBz9oFF3mgucbPse8H+Al6T//afmdLbNMI7uWi9UjjzwSbS54fBj1CxMXM7583HLLLdHmfFtrrbUkSbfddlts23TTTaPN8/jtbxuWJBy7/B5vHhtttFG0vXbxJs9xseKKK/b5/h07dmzMp5133jm2e27y3FZfffVo8/qtscYakqS//KXlBsGHkre85S3R5trtscDx8/TTT0eba8WDDz4Yba8RfFHhjY9jzONjs802i21+YZWkv/3tb9HmOuXz/uAHPxjb/vznP0d7hx126PN9KzXm1b777iup/qLoG/5rXxs+hbXrwoeZ17zmNZKk++5rGd9vtdVW0ea9lt/zfLvhhpYh9XLLLRdtPth4vkrSL37xi3n2ceedd0b73nvvjatO3ekAACAASURBVLbvq1wTfvazlrMB7+2LL754tB977DFJ9YdA9u8JJ5wwX/2bclgikUgkEomuRK+YoFGjRsVb0te+9rXYbtqZLM4xxxwTbb7hm8khdcandz5Z8k3ET3v//GertMk73vGOaPOt5s1vfnO0zfT897//nWebJF155ZXR9puqn5ql+tPtGWecEW0yGaagf/SjH8W2D33oQ5LqT799GTNnzowna9LLfvs3EyfVGR1+1qwBGTEyCWT8Lr/88mj7TW38+PGxjWwe+8jXVWqxDfzshAkTon3WWWdF229QZATN4El16eSOO+6Itt+cSOuvttpq0Tbj19cxe/bseNPmG7cZMve9JC2//PLRJiPnz5CN5XWjRP73v/892mYGPvzhD8e2n//859Hm75Gl9Zwls8jfpbTp75Edfu973xttzkOzRlJrDfnTn1rGwv/4xz/USVh88cW1/fbbS6pfE8ufXJf5pky27p577pEkveENb4htnFdmzKR6n2+44YaS6m/uZH8oT/D3zDiRYSUj+Na3vjXaZoXYR2T2yMrzPrDOOutIqvf3euutp07DtGnT4nrtsccesf3SSy+VJL3nPe+pfdbg2uy5yXvm7bffHm0qO7yP+Xsf+EDLaJrzkczUAw88EO1VVllFUv1+zvs8+4zhBQZlPcqovP+//e1vl1Rnvyj3zi+SCUokEolEItGVyIegRCKRSCQSXYleyWHTpk2LgCZSzQ899JAk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5+UY5bzpeVyq25XzNd8rvA5/hmOQc3Oj95FU7yON5hqp43NzpxZB/fr104YbbihJ2mmnnfhjkqSvfe1r+didd96Z2xtttFFuv/3225Kkv/0tF4zV6NGjc5s3//GP56SU+s9//iNJWmutepHnP/3pT7nNF/Oaa66Z2zboX//619muVypP/t/61rcklQ3Hh/7cc/UM46uuumpu//3vf5ckfexj9ZQM7hx77rmnWgGLLLKITjnlFEnSM888k4+/9VYtgzlfWoccckhu//a3v81t23a11VbLxx5++OHc5gvKz1qS/vCHP0gqT5hLLbVUbnMw8zoWW2wxSfXnL5Un8S984Qu5fe+990qSPvGJemJSLtY++clP5vZ1112X2x78Sy+9dD620kor5fYGG2zwoloAgwYN0n777SepvNEwvvnNb+b2n//859weNWpUbq++ei1XGseSF85SeXxwYt5iiy0kSa+++mo+9vzzz+c2+8u1116b23vssYck6amnnsrHOMZo69/85jeSpB122KHhNbhvStL//lfPi+gX64or1otg33bbbbl90kknNb19F154YY0YMUJS+T79cuAcx8XK66+/ntt+eay99tr5GMcVX3yf/exnc9t25MtniSWWyO3f/e53ub3eeuvltvsCnzvfGXwneN7wu0cqzwnsjxzfiy9eq+Lwj3/8Y7ZzSdLee+/d9LaVyu9dvmP9nGmnz3zmM7n90EMPlc4hSeuss04+xnftTTfdlNsTJ07Mbdvsc5/7XD52zTXX5Db7wj331Ct5rLzyypLKi9lnn302t7/61a/mtt/R//d//5ePcUHkd79UIxWMN998U1J5U7P55pvzNzpk304tgrp27Zo7ERcKnmy4muRC41//+lduewXIhRFv4vbbb8/tZZddNrf9MnrllXpme67qn3iinm9pyJAhuf3kk09KKk/W2267bW6fd955ue2HyhUtBxvvicZ/7LFaxQwumPxC50ukmTFlypT8cuAL34sRdsRf//rXuf3SSy/ltl+uDzzwQD42fPjw3Gaf4UvQ/WbMmDH5GCfofffdN7dfe62emf3666+XJB188MEN74k7S0+2/F0PVKk8UR522GG5ff75tdx5yy23XD7GF0KroFevXnmC5AvGNvnVr36Vj+266665zReTxy4nNi5svvjFL+Y2x/Tvf19L1MsNDF+OHFfrr79+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Yvv36NEjH+vTp09uv/VWPT8XP+O+zX7CaxgzZszooigWUZNj0KBBxcc+VgsUaW+cGnyGY8fW86V5nNKmQ4YMyW3al/BY4fOmbWg/jnk/Z84PtINtw3viMd4Hz8s5ZsCAAZLKfZZ988UXX2x6+9K2Y8aMycfdjzlGPR9KZdsOHMjAnxpoZz53ns+/x/mVbdqW74xGvzdq1KiG12l78HfZfzjveg7jcT4Tnvell15qettKUp8+fQo/r0bPk8+S/Zxju72xadBm/J6fvd9nktS/f//c5ljiOWwf9huOf871vn7atL01AfuQf4/3zPHf0bm5U4ugxRZbTOeff74k6emn69Fob7/9tqTyy5ET0GqrrZbbDz30kKTyw9l8881zm4uL119/Pbf9UB5++OF8bJ111sltTuz33ntvbi++eC2JJQcQF2Wf/nQ9H9S//vUvSdLnP//5fIwGYOe4//77c/vLX/6ypLIx7rjjDknSBRdcoFbAQgstpAMOOECStMgi9X7zuc99TpJ06qmn5mNrrrlmbq+4Yr1unm301FNP5WN33XVXbnOQDB06NLd32203SdLFF1+cj/3nP/+Z7e+S9OKLL+b2Jz/5SUnSZz/72XzMNpSkBx54ILdt86WWqkdHr7rqqrl9zjn1AtPuM1J9AvVvSdLzzz+f21dccUX9gpoYH/vYx3TZZbXMDZxgJk6cONtnn3mmngT91lvrKa+22GILSWWbDh8+PLf5guGLyXbguPrTn/6U27QfF9vPPfdc6Xclaemll87td955J7c9MfNF+t///je3OZfw5f+1r31NkvS3v+XajaVF9z777NP09qVtr766nqjefd1jWCr3bdp2k002kVSeR+++++7cXmaZZXKbdrzmmmskledXvuz+7//+L7f//ve/5/ZGG200232MHDkytzk/uL3CCivkY36PSOU5eptttsltv4Ouu+66fMybeEnaf//9m962Um2RsOeetdqgHCt+B2+44Yb5GPs5F/ZcPBkco+1tUPzsf/vb3+ZjX/3qV3ObC2W+Vz3mP/Wpei5GrgP4XnTfo025JuAcxXeL74n37LWIJF155ZUdsm/IYYFAIBAIBCqJTjFB48ePzyzL1ltvPdvfuZq88sorc/vRRx/N7SWWWEJSnT2RpMceq2e7XmmllRr+tpmjhRdeOB8jK8TdInc7Zh+4wyE9+uCD9XIo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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Setup the number of layer we want to display.\n", "# We want to display the first hidden layer.\n", "layer_number = 1 \n", "\n", "# How many perceptrons to display.\n", "num_perceptrons = len(thetas[layer_number - 1])\n", "\n", "# Calculate the number of cells that will hold all the images.\n", "num_cells = math.ceil(math.sqrt(num_perceptrons))\n", "\n", "# Make the plot a little bit bigger than default one.\n", "plt.figure(figsize=(10, 10))\n", "\n", "# Go through the perceptrons plot what they've learnt.\n", "for perceptron_index in range(num_perceptrons):\n", " # Extract perceptron data.\n", " perceptron = thetas[layer_number - 1][perceptron_index][1:]\n", "\n", " # Calculate image size (remember that each picture has square proportions).\n", " image_size = int(math.sqrt(perceptron.shape[0]))\n", " \n", " # Convert image vector into the matrix of pixels.\n", " frame = perceptron.reshape((image_size, image_size))\n", " \n", " # Plot the image matrix.\n", " plt.subplot(num_cells, num_cells, perceptron_index + 1)\n", " plt.imshow(frame, cmap='Greys', vmin=np.amin(frame), vmax=np.amax(frame))\n", " plt.title('Percep. #%s' % perceptron_index)\n", " plt.tick_params(axis='both', which='both', bottom=False, left=False, labelbottom=False, labelleft=False)\n", "\n", "# Plot all subplots.\n", "plt.subplots_adjust(hspace=0.5, wspace=0.5)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Calculate Model Training Precision\n", "\n", "Calculate how many of training and test examples have been classified correctly. Normally we need test precission to be as high as possible. In case if training precision is high and test precission is low it may mean that our model is overfitted (it works really well with the training data set but it is not good at classifying new unknown data from the test dataset). In this case you may want to play with `regularization_param` parameter to fighth the overfitting." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Training Precision: 96.9412%\n", "Test Precision: 89.3000%\n" ] } ], "source": [ "# Make training set predictions.\n", "y_train_predictions = multilayer_perceptron.predict(x_train)\n", "y_test_predictions = multilayer_perceptron.predict(x_test)\n", "\n", "# Check what percentage of them are actually correct.\n", "train_precision = np.sum(y_train_predictions == y_train) / y_train.shape[0] * 100\n", "test_precision = np.sum(y_test_predictions == y_test) / y_test.shape[0] * 100\n", "\n", "print('Training Precision: {:5.4f}%'.format(train_precision))\n", "print('Test Precision: {:5.4f}%'.format(test_precision))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Plot Test Dataset Predictions\n", "\n", "In order to illustrate how our model classifies unknown examples let's plot first 64 predictions for testing dataset. All green digits on the plot below have been recognized correctly but all the red digits have not been recognized correctly by our classifier. On top of each digit image you may see the class (the number) that has been recognized on the image." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# How many numbers to display.\n", "numbers_to_display = 64\n", "\n", "# Calculate the number of cells that will hold all the numbers.\n", "num_cells = math.ceil(math.sqrt(numbers_to_display))\n", "\n", "# Make the plot a little bit bigger than default one.\n", "plt.figure(figsize=(15, 15))\n", "\n", "# Go through the first numbers in a test set and plot them.\n", "for plot_index in range(numbers_to_display):\n", " # Extract digit data.\n", " digit_label = y_test[plot_index, 0]\n", " digit_pixels = x_test[plot_index, :]\n", " \n", " # Predicted label.\n", " predicted_label = y_test_predictions[plot_index][0]\n", "\n", " # Calculate image size (remember that each picture has square proportions).\n", " image_size = int(math.sqrt(digit_pixels.shape[0]))\n", " \n", " # Convert image vector into the matrix of pixels.\n", " frame = digit_pixels.reshape((image_size, image_size))\n", " \n", " # Plot the number matrix.\n", " color_map = 'Greens' if predicted_label == digit_label else 'Reds'\n", " plt.subplot(num_cells, num_cells, plot_index + 1)\n", " plt.imshow(frame, cmap=color_map)\n", " plt.title(predicted_label)\n", " plt.tick_params(axis='both', which='both', bottom=False, left=False, labelbottom=False, labelleft=False)\n", "\n", "# Plot all subplots.\n", "plt.subplots_adjust(hspace=0.5, wspace=0.5)\n", "plt.show()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.0" } }, "nbformat": 4, "nbformat_minor": 2 } ================================================ FILE: notebooks/neural_network/multilayer_perceptron_fashion_demo.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Neural Network (Multilayer Perceptron) Demo\n", "\n", "_Source: 🤖[Homemade Machine Learning](https://github.com/trekhleb/homemade-machine-learning) repository_\n", "\n", "> ☝Before moving on with this demo you might want to take a look at:\n", "> - 📗[Math behind the Neural Networks](https://github.com/trekhleb/homemade-machine-learning/tree/master/homemade/neural_network)\n", "> - ⚙️[Neural Network Source Code](https://github.com/trekhleb/homemade-machine-learning/blob/master/homemade/neural_network/multilayer_perceptron.py)\n", "\n", "**Artificial neural networks (ANN)** or connectionist systems are computing systems vaguely inspired by the biological neural networks that constitute animal brains. The neural network itself isn't an algorithm, but rather a framework for many different machine learning algorithms to work together and process complex data inputs. Such systems \"learn\" to perform tasks by considering examples, generally without being programmed with any task-specific rules.\n", "\n", "A **multilayer perceptron (MLP)** is a class of feedforward artificial neural network. An MLP consists of, at least, three layers of nodes: an input layer, a hidden layer and an output layer. Except for the input nodes, each node is a neuron that uses a nonlinear activation function. MLP utilizes a supervised learning technique called backpropagation for training. Its multiple layers and non-linear activation distinguish MLP from a linear perceptron. It can distinguish data that is not linearly separable.\n", "\n", "> **Demo Project:** In this example we will train clothes classifier that will recognize clothes types (10 categories) from `28x28` pixel images using simple multilayer perceptron." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# To make debugging of multilayer_perceptron module easier we enable imported modules autoreloading feature.\n", "# By doing this you may change the code of multilayer_perceptron library and all these changes will be available here.\n", "%load_ext autoreload\n", "%autoreload 2\n", "\n", "# Add project root folder to module loading paths.\n", "import sys\n", "sys.path.append('../..')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Import Dependencies\n", "\n", "- [pandas](https://pandas.pydata.org/) - library that we will use for loading and displaying the data in a table\n", "- [numpy](http://www.numpy.org/) - library that we will use for linear algebra operations\n", "- [matplotlib](https://matplotlib.org/) - library that we will use for plotting the data\n", "- [math](https://docs.python.org/3/library/math.html) - math library that we will use to calculate sqaure roots etc.\n", "- [neural_network](https://github.com/trekhleb/homemade-machine-learning/blob/master/homemade/neural_network/multilayer_perceptron.py) - custom implementation of multilayer perceptron" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# Import 3rd party dependencies.\n", "import numpy as np\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "import matplotlib.image as mpimg\n", "import math\n", "\n", "# Import custom multilayer perceptron implementation.\n", "from homemade.neural_network import MultilayerPerceptron" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Load the Data\n", "\n", "In this demo we will use a sample of [Fashion MNIST dataset in a CSV format](https://www.kaggle.com/zalando-research/fashionmnist).\n", "\n", "Fashion-MNIST is a dataset of Zalando's article images—consisting of a training set. Each example is a 28x28 grayscale image, associated with a label from 10 classes. Zalando intends Fashion-MNIST to serve as a direct drop-in replacement for the original MNIST dataset for benchmarking machine learning algorithms. It shares the same image size and structure of training and testing splits.\n", "\n", "Instead of using full dataset with 60000 training examples we will use cut dataset of just 5000 examples that we will also split into training and testing sets.\n", "\n", "Each row in the dataset consists of 785 values: the first value is the label (a category from 0 to 9) and the remaining 784 values (28x28 pixels image) are the pixel values (a number from 0 to 255).\n", "\n", "Each training and test example is assigned to one of the following labels:\n", "\n", "- 0 T-shirt/top\n", "- 1 Trouser\n", "- 2 Pullover\n", "- 3 Dress\n", "- 4 Coat\n", "- 5 Sandal\n", "- 6 Shirt\n", "- 7 Sneaker\n", "- 8 Bag\n", "- 9 Ankle boot" ] }, { "cell_type": "code", "execution_count": 3, "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
labelpixel1pixel2pixel3pixel4pixel5pixel6pixel7pixel8pixel9...pixel775pixel776pixel777pixel778pixel779pixel780pixel781pixel782pixel783pixel784
02000000000...0000000000
19000000000...0000000000
26000000050...000304300000
30000120000...3000010000
43000000000...0000000000
54000545535...7874375000
64000000000...14000000000
75000000000...0000000000
84000000320...1000000000
98000000000...2032141660000000
\n", "

10 rows × 785 columns

\n", "
" ], "text/plain": [ " label pixel1 pixel2 pixel3 pixel4 pixel5 pixel6 pixel7 pixel8 \\\n", "0 2 0 0 0 0 0 0 0 0 \n", "1 9 0 0 0 0 0 0 0 0 \n", "2 6 0 0 0 0 0 0 0 5 \n", "3 0 0 0 0 1 2 0 0 0 \n", "4 3 0 0 0 0 0 0 0 0 \n", "5 4 0 0 0 5 4 5 5 3 \n", "6 4 0 0 0 0 0 0 0 0 \n", "7 5 0 0 0 0 0 0 0 0 \n", "8 4 0 0 0 0 0 0 3 2 \n", "9 8 0 0 0 0 0 0 0 0 \n", "\n", " pixel9 ... pixel775 pixel776 pixel777 pixel778 pixel779 \\\n", "0 0 ... 0 0 0 0 0 \n", "1 0 ... 0 0 0 0 0 \n", "2 0 ... 0 0 0 30 43 \n", "3 0 ... 3 0 0 0 0 \n", "4 0 ... 0 0 0 0 0 \n", "5 5 ... 7 8 7 4 3 \n", "6 0 ... 14 0 0 0 0 \n", "7 0 ... 0 0 0 0 0 \n", "8 0 ... 1 0 0 0 0 \n", "9 0 ... 203 214 166 0 0 \n", "\n", " pixel780 pixel781 pixel782 pixel783 pixel784 \n", "0 0 0 0 0 0 \n", "1 0 0 0 0 0 \n", "2 0 0 0 0 0 \n", "3 1 0 0 0 0 \n", "4 0 0 0 0 0 \n", "5 7 5 0 0 0 \n", "6 0 0 0 0 0 \n", "7 0 0 0 0 0 \n", "8 0 0 0 0 0 \n", "9 0 0 0 0 0 \n", "\n", "[10 rows x 785 columns]" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Load the data.\n", "data = pd.read_csv('../../data/fashion-mnist-demo.csv')\n", "\n", "# Laets create the mapping between numeric category and category name.\n", "label_map = {\n", " 0: 'T-shirt/top',\n", " 1: 'Trouser',\n", " 2: 'Pullover',\n", " 3: 'Dress',\n", " 4: 'Coat',\n", " 5: 'Sandal',\n", " 6: 'Shirt',\n", " 7: 'Sneaker',\n", " 8: 'Bag',\n", " 9: 'Ankle boot',\n", "}\n", "\n", "# Print the data table.\n", "data.head(10)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "RangeIndex: 5000 entries, 0 to 4999\n", "Columns: 785 entries, label to pixel784\n", "dtypes: int64(785)\n", "memory usage: 29.9 MB\n" ] } ], "source": [ "data.info()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Plot the Data\n", "\n", "Let's peek first 25 rows of the dataset and display them as an images to have an example of clothes we will be working with." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "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82b2GZI+v3odp3wBiQPuDCRtY68Qgps990fivDkZSV88OYTg2oQzAIwC8BqA1wGMScsQQhiHZBB/P+37MpvURmNzOfgzgFWQmBZPRf3r+N8AbkASnPABgC+RjMcAgNT/504A2/E5U1PZDkhMZZORmFXPReI03WpY1uTeMTGztwHsEkJ4u5HHd0LyNbRSCGF8U96bmH/Sr5FZAFYNIXzQ2vcjhKgfGptFa9PhcymYWWck0QyN6mSibWJmu1qSz2QxJCHyryMJ+RRCtAM0Nou2QIefBKUhtOe29n2IJucnqDjJrgpgv1AGtaYQHQSNzaItUApzmBBCCCFETTq8JkgIIYQQIg9NgoQQQghRSuod/goAXbt2DX379m2mW0n49ttKZvUpU6ZE2c12yy5byYnXuXPnWtsB4IsvKskwZ86snUi4d+/eUf7BD5p3Hjh+/HjMmDGjzeewaYm6rcb331dSkXz88cdR/vrrr6PM9bzQQgsBAFZYoZLjq7nrsyajR4+eEUKoK+txm6At1G97pD3Ur+q2cbSHugVavn55vH3nnXcAAAssUFnQ3cddIPu+Znr0SJJ5L7poJRdjNu9p81Pf+m3QJKhv374YNWpUvfbll1VDfvy0adOifPbZZ0f5m2++AQAccMABsax///61tgPA66+/HuXrr7++1j1cfPHFUV58cU46W5vG/g5n0KBBDT6mNWhI3TYXPHm94IILovzBB5Wod54o9eyZJI0+4YQTYhl3upbAzCZU36v1aQv12x5pD/Wrum0c7aFugca/d5mGvLsmTqzkoNxxxx0BAEsssUQsYyUCKxm+++67KJ9xxhkAgA022CCW8eQpDx7bm+Jjtr7126BJUDXqM2HwSc4///nPWHbNNddEedasWVFeaqmlouwvyCuuuKLqffDsdMklk8SwXIndunWLcp8+lezfRx99NADg0EMPrfo7RNPx5JNJVvXtttsull177bVRPvbYY6PMk93zzz8fALDYYovFsqeeeirKW265Za1rNcUgIURHoCEvHf4gffjhh6N8ww03AMi+GOuDj+dHHXVULOOx/9JLL43y8ssvX+e5mvrl2VHIG9PGjRsX5VtuuSXKzz//fJT79esX5fXWWw8AcPfdd8ey5557Lspsmdl5552jfPvttwOovFMBYPXVK3lRN9lkkygPHToUQNay05KoxQghhBCilGgSJIQQQohS0qA8QYMGDQqNsT0//fTTUT7yyCMBZFWfCy9cWTqkU6d8C52rOdlpi01Z77//fpR5HzeVsMqU4X3nzp0LANhhhx1i2U033ZR7XH0ZNGgQRo0a1eZtLY2t22oUmUg//fTTKP/qV78CANx4442xrJr9mOG2tOeee0aZ627FFVes834ai5mNDiG0ecev5qpfptqznT17dpTdTA0Ab7zxRpQfeeSRKB9zzDG1zvHJJ59EmceNRRZZpNY9sGmEy9lc7g6f7PjJtIf6rVa39Wnz8+bNAwCce24ld+Ell1wSZQ4++PLLL6Psz33llSvrnRb5Wfr4ClTawtSpU2MZm7X5nt977z0AwKmnnhrL8toGkPVL8Tot+v3toW6Bxvddfuf9+9//BgC8/XYlObfXXU2Z34le7126dIll3laArA8mB7P4mFzUrz7//PMoez/de++9Y9n666+f+zsaYu6sb/1KEySEEEKIUtKkjtEMz954Bu+z/QUXXDCWffVVZfFvnsnnhd+xpmjSpElRZs1B3qyWz8uwM5Y7TLPjFzvuXXTRRbnnEMUUfXmeeeaZUT7kkEMAZOsw74sOyHdsZgd61gTxNf7+97/XeT+i+XBn9quvvjqWcb/jr9zhw4dH+eWXXwYAzJkzJ3c7O+Puu+++AIDllqtExD722GNRZk1Fr169orz00ksDAC677LJY5m2lveNjcNHX83XXXRdl7ys8vg4YMCDKrN3h+vD9WSvHmoIiXIPATs98Du7zHtTC4+8TTzwRZXfCBbJjf7Xf39G57777ouwa1MGDB8cyjsbld+1nn30WZdfYsbadg1NYa8TvdNcc5VllgGzf9fbEztmsCWru+itn6xBCCCFE6dEkSAghhBClpNnMYZxLYvz48VF2dTWr1IqcFlkN5jI75TFsSmEVnJtVWL3Kpha+DzfLsXnl8ccfjzKrCTnvkMhS5MjGKlVOsvWjH/2o1jnqcFSNcp5p7PDDD4/yXnvtFWWvO663pnaSFvm4mnzNNdeMZWPGjInyu+++G2Xu/94Pub+ygyab0b1t8b7PPvtslN0xHsgmWb3zzjsBZLPTV8tL05ap5kT6+9//Pso333xzlD2pHR/P5hJ2aman9smTJwMApk+fHsvYpMZ9LK98mWWWyb1frkfvm2ye4+vx+MHvHTe5cZsqCrzpiLAJ0xPLcp1ykAGbsvhd6uMlPzduI0UZo/0dzCYwrl82qea5qnDfZjNpcyBNkBBCCCFKiSZBQgghhCglzaYb5KUwWJXmZgnOL8AmKTaDsOxqN1aNsQmD1XJ8Plfz8blYLZenaivylOf1rE455ZRax4mEItMSL2mRl2afVef1yfdSzYTFZg2PlBgyZEidx4iWYezYsVFmFT3Xz/+3d+bxdk3n//8sMxWERCYZyCCICBVKEmKImQaJSs1Kq+bO9OtXihpaihZFaal5CjXEXCFSGcQUQ4REIkREDBFDalq/P/Z51vnse9e6596bO+/P+/W6rzxZZ5+999lrr7XXfsbvf//7APL5R6ygI1BO6Q+UTZ+sWueac2a2AfJj3u4RbuOyOq2FmNnf2GuvvYL8yiuvBHmrrbYKsuXt4qi91LzM7RZpx5+zKYNdE3gc2zOBxzCbWWK/g+8Ti+oD8qY6LpVjOafY5JaKEm6LvPzyy0E2E6aZxQBgwIABQeaIPu6T2H3F/ct9xia12HXmdQCPNxvfbJ7jZ7DMYUIIIYQQjYAWQUIIIYQoJA1qDmPVJ0dV9evXL8im+mJzGKu7OPqrSorzasdgL3ZWtXIEiUWYsAqXt+X9WSpvbuNoIq5gL3NYdcxUlTJT8T0RS62fMoHV9rhVj80Vjp9//nkAeXOLIsKaFo7cYdPowIEDg3z00UcH2SK2WLXO1cxZRW+q/4ULF4a2ww47LMg8J7z11ltBHjFiBADg9NNPj+63tWDnzOaJgw8+GAAwd+7c0LbZZpsFmaM17fuxiFwgb8rgcWNzJpfB4fmTI21jEbw8v7IJhOcHc0lImWR4H7yNRY1xYsVUSY+2yKabbhpkSyKZisDj+4b7z57HbIrkhJR8X/D3zLzG446/x24mfI9U/T6QjzBrDKQJEkIIIUQhaVBN0C233BLkXr16BTnm7JxyfOK3E36Tt1UrrxrZyYvfTvjNwPbHJTZSuQ1sVcurXj53PjYXhWVnvLZAXYrqxrR1Kc0Ma//WX3/9ep1bXbQ3nFfkzjvvrHFb5QxadlLX0Ark3nHHHaGNndb33nvvILMzs705srMu5/Ox3DZ8PE63z7moeEzHAiOOOuqoGn5Zy+arr74KGnbOkzVjxgwA+eKnXLgypt1hjQBf99R8bTngzIkdyI9tLlfCeZtMO5PS7jA29/P5sMWAZdYamGaCS+nwPdjWYW2L9S/neErl6mOnc7sfUvmnWOZ7xJ7dfL9xAWXuS9s35w7idQCXwmkMpAkSQgghRCHRIkgIIYQQhaRBzWFPP/10kFn9zM5opnZjVRyr2lglGsvtwblBGM4f8sILLwTZ1G6sJq2k2ks5BLJ68YorrghyWzOHxcxBdTEXpXJ/cL9wjhKjvtWCU+fD7bNnzwaQv0/69u1bcR+VnL1FmVT/XXbZZQDyjpPMvvvuG2Q2qZu5i+cPVucvWLAgyDY/pMzibDLp2rVrkC03CTtntza++eabYPrjMWYuCakyFrESRTxeeVt2amYTluXgYfPmEUccEWQ2e7Bp5K9//SsAoE+fPqGNj81Ou9aP3Iep+YifH+a+MHPmzNA2a9YstGVSOZrsecxO8ttss02Q2fWEndztvuB7JVXaivvMZDad9u/fP8jjx48PsuV54vxcKdNoYyBNkBBCCCEKiRZBQgghhCgkDWoO+9vf/hbkQw45JMgcSWV5A1KqVpZZzWkpuTntO6tXWUXLavBYxFKqIq5tyyo8NslZinggX4G5LbOs5qC33347yFz+wKJKgLKpynL5APmcEtzPrOI1lSu3DRkyJHpsU9efeeaZoe3666+veP6VIt5EZWy8nX/++aHt0UcfDTJHcbGJ0kzYvC2b0Xfaaacgm7qf+4kjyTgyke89O/YBBxxQ25/T4lhllVVCJOT9998f2vfff38A+eiwVL6f2D3N5g3O28LlESyaj01OPHaZWA6va665JrRxqSXO7WPRSqnzTbkv2DnddtttoY2jB9s6/LyysZSq3j5hwoQg83xrfc2mSH5G8z5iJjMejzx2n3322SAPGzYMQD76uilzdUkTJIQQQohCokWQEEIIIQpJo1WRZ1PDSSedFOTrrrsOQN4TnFWYnKiJ1a5m8mD1GqtdY2YtJlU9mI9tqkJWz++yyy5BLpoJDChfS472S5m4zKOfo2+4P7lkxR577BFkU41vu+22oY2j+Vg1Gqs0z33Lfc8lGMxEyonc2PzGKmBO9NmlSxcA9Y9cKxIpk6GNKzZFcnLCadOmBdnKWADA448/Xm2/O+ywQ5BffPHFINv9wvcp34d8z/I9YGOdK5G3Rmz+Y3PihRdeCCA//3LywpjrAZs0uA85Yui8884Lso2bsWPHVjzH3r17B/mXv/wlgPzYnTp1apDZfGn9z22p/uLoJ3sGcVJNfk60Rdjk9OqrrwbZ5j8bU0DehGkmKQBYtGhRkC0yk/spZQ7j+8XuI3ZVeP/994PMyWvtnDnCkO+VjTbaCI2JZnYhhBBCFBItgoQQQghRSBrUHJZSh19yySVBPuGEEwAAe+65Z2jjyAM2T7Fqz2D1Gkc9sKqNo7tMhWpJ0YC8mY3Vqj179gSQj7DgZF5FIWZOTEXU2TUD8rXcDI5G+Pe//x1kNj/97ne/A5BPipeq7xY7Nz4fVtVy/ZnLL78cQL5O1VlnnRVkvnf5nM1UM3jw4Oj5iDLcD2zCNBPFXXfdFdr4erP5kZP9bbjhhtX2yyp+Poap0lk9z/3PZlmubG3mXL5vWjN8Xc20yJFvHIEVMzPwteZ5kscj78NMzlynjxOS9ujRI8jct926dQMAXHvttaGNTVm8P5sreOxz0kyeV1hm87rR1s3abA5mc7E9E7mGJo87NhHzNYpFh6VcS2IR3zzuuM/YRGn9y9uy6bOxadt3hBBCCCFEggbVBNUmf4ppVvgthN/uWBvA2gLbN7+dLFy4MMi8OuU3+Vj6bX4T5FIY9uZQRO1PJfi6c/4VcxwG4tXn+a2CV/oxrRGXQeC+57cCPg/TFPJbaSpu3wAAIABJREFUKu+XtVeWM2PAgAHVjgvk7wPOMzVp0iQAQL9+/UIbv9G0JmL9s6w5j3ifqbdsu+bsoMtagZdffjnI7KxpucY4AIIddFk7Zw7OfC/wOOc5gbXJ5oDJWuXWiF37WB+fccYZQeYSJTfffHOQTfvN45nnVHZUfeihh4JsY2z48OGhbcqUKUHmfDCsubMSS1zVnccmH9u0GJMnTw5tjz32WJBvvPHGIHNAhVGkHF88P+68885BtjHGcylfC3ZK59Iitj+2mPC4YmJV6XmscdADawjnzZsHID9/pErsNAbSBAkhhBCikGgRJIQQQohC0mh5gioRU9sC6XTZtn0qz0OqUnIslwyr2vh7lgJe1AynnmdHPFOHch+yzGaNmOmEzVBsOmNi901tcn9YP6ec+hi+PzbbbDMArdcExjSGKaAu++Sq1WwyYbM25yix7Tm3Dd8jHAwRy2fFZls2s7/xxhtBNjNaW3GM5v6Ilbyx+xkALrroomrf46CSxYsXB5nNjAMHDgyymdS4j7gPuL+43cbYjjvuGNrYDMP9ZbAj72uvvRbkSqUw2roJjOEcd2+99VaQzemcg5B23333ILMZ2gISgHz/xUjNvda/bEbjZy2bLS13ETtn8/mMGjWqxnNYVqQJEkIIIUQh0SJICCGEEIWk0cxhlTzy2RySqlYcU7XVxtM/Vm2YzTKpvDJNWbm2tcH5Ja666qogn3LKKUG268rXkSMG+LpzhIH1aSwvFH9eVY71f8rMarBaP7VfPn+LRuL7silzWLRWuC/t2nGE3bHHHhtkvrc4WsiigSySiNsAYPPNNw+yqdJZ5c5p+C0CBcibNldZZRUAbcdkUun+Zzifj93TPC/zNWFTNpsZbfxzRC27FXC5EiuPA5RzF7FZZNdddw3ypptuWu082FTH/cnw+OZ7oSiwOZnzZFmePK7UzpG0HJnL19DGbsrsxSZOfo5Xuvbc17fddhuAfGQi93VjI02QEEIIIQqJFkFCCCGEKCTNpi9MpWdPqd1i0US1iQoy9TB/P2VSqYsquWgcd9xxQeYIEzMnAOUEh9yfnKySVdgcoWPUxhxZqWwG9yGbZCxqgiMmUvuIpY2fP39+aCtSMs26JFjkhJNsPrR9sOqcTSN8vxxzzDFBtggTVusfeOCBQeZSOB07dgSQT/rG9x6bATj6ZcaMGQDyyTlTyeBaMrFIsErzGfeRRQFxH/F45DHB19WOwePZSpEA5fIYQN7kYtf4j3/8Y2hLlcqx8+Dj8nkybcWsWV/YvMilKcwsySYnTiD68MMPB5m3sT7heZ5JJZk12DzH45Ujwawv2czKJmvuazbLNhTSBAkhhBCikGgRJIQQQohC0mzmsFgEV1VYnWvmitpUAY5tw/tKJcxrynolrYUJEyYAACZOnBjahgwZEt3W+ojV2pz07Pzzzw9y3759q32PSUVuVYL7kKO4Lr74YgDlGmJVzzNlLjX1cpHMYZUi8Hj8sIo7VkUaKCc15KSIXJWaE7yxit4SrfG2fO05YZ6p8DmRH9ckYzMBm1XM1GL3OZBPItdaqI8ZiCu1z549G0B+HKTcDbj/LXryt7/9bWiLmUIBYM6cOUG28c9jlOtJMTZO+bipSNKi89JLLwWZa3Ja/3bo0CG0sdmXE07y3GzjkaO9+L7gOZTNp7Y9m7J4HHOkqEVx8lzCx+A5QeYwIYQQQogGotk0QbXRusScVWtT9iD2BsPf47cmXslWOqciVSM2DjroIADAyJEjQ1sspT1Qvj78ps1vEEOHDg0yX3d746+vk3pMY1gV0xBwH/MbK8P7MAderlS93Xbb1frcWjoxh9pUP5gTJJdT4Lc/7lN2NLbrzNc+VvICiGts+B5imTUZzzzzDIC8Uy7nQeG8I+yAaW+WrDVqjZqg+hALTmFNEF9rHit8Lc0h+sEHHwxtnBuIyyawJsg0d/z2Xxstv1GU+beu8D3PWhPTtg4fPjy0xcYokM8fZd9jzRvL/Fzl+8LGMR+Dz4efBb179wYAdOrUKbSxNqqx8z1JEySEEEKIQqJFkBBCCCEKSaPpmSqpK1MqtUrUJo9QJbNVyrErlXuiaHBuB8vts++++4a28ePHR79n/cgmEjaNxfKLAJXVnXUxjXHfxsqx8LFSTqAsr7322rnvtzVi44N/Kzstm8mEryGru9ncxWYpMz/x9/geiVUX53PjnCGXXnppkHv27FntnDkvTWq/rLa3yuRsDuP7tC3Dc3CsvBCPO75msb7jwAl2gOU+YKdcM3dwbpm6PAfkGB2Hrz1fIxunbG7mvG3m4F4V2742c2VqfBs8xniOsWNzuRV+Bm2zzTZBtvm4IZEmSAghhBCFRIsgIYQQQhSSZosO46gBJlUCoVIuGVal1qUafKqCfZH5xz/+EeQf/OAHAIDvfe97oW3cuHHR71kfpcxblaI/uC9S1awrlXGoVP6iNvA+LF08571pS5g5mHP4sBqdf7e1s4mD0+bzmOYSCWZSS1UlT5mfrNQFm2K4ZAvvw6L42OzFKnU2e3MUis0VnD+qKStYNyex654agzzu2HRy1llnAchXfU+VOeB7zOAyKHfccUeQrQwKH5vPR+awOFwWiK+3Pdt4HuzcuXOQucQGj9NYxDTfN6n51p4BlgMIyOclYhO35f7i5zY/b1LRyA2FNEFCCCGEKCRaBAkhhBCikDSbOYypS5IsJhU1FDOdpTzaGZnDMjj1+o9//GMA+SrCKXOB9Qf3SyrahKlv2YxKUWOx/dYmIWPsXklVuG6NsNnKIrfY7MW/nxMj2jXgKA6u8J5KNmoqcd4vH4/vJ97GVOa87dy5c4PMKnwbu7wtq99Zhc99aaa6mNmvrcO/0+ZgnotT0Voc0fXPf/4TAHDiiSeGNo4oZHMpm2c22mgjAMAtt9wS2nhsxsxybGZPjceiJ1G061pVfueddwDkzVMvvvhikGfNmhVkHoM2plPPzFREdcwlhecSHrvWv5zElMsUNfZ4lCZICCGEEIWk2TRBqbwD/AZQ3/wwlXIDpd5wOMdCkeHrbg6P/KZsKe+rbmvXPaXFSfWnfS/l4BzbNnW+lUhtm7rv7E2IHfVaI9778Fuee+650G5Oh3zvc9kDdi62PmFNUsrhnJ0Z27dvDyA/5nm/nGsopkXk7/Hb4tNPPx1k0wywgzM75bIzNN9Ddl9zGY+2kicoVhKFieUJSjnFslaNNXe2PWuPuRQGF0jlt3vrL3OsBoAHHnig2udAPCihvtaDtg6XvOBcXaaF4+tqwQRAfkyz1j92nXlurpSLi/uf5xXWFJmDNo/B2mj9GgrdSUIIIYQoJFoECSGEEKKQNJo5rFLpCjY/sFq2Uo6f2lQMj5HKf8HtldTgRXG64xwOBqsnt9122yCzGSXmRFwbU5X1R8ppuS7V5St9L7Wv1H1l9+aQIUMq/IqWzZdffhnU0Wx+MtNFbcpY2D3ApSm4r1OqdlOv87W3chVA/h5i04eZ2tj8Mnr06GrnA5THcWps8xzD52mOu5xfpS1TyVSdqgqeyv1j5smbbroptPE9w/3B+YUGDx4MID/XsDlk4MCBQbb+4nNLOeHXxTTeFuFSMpZnCyj305IlS6Lf4zHB/W4BB2yGjgUvVMXM3exEzyU7eOzGSmGw+Zq/1xhIEySEEEKIQqJFkBBCCCEKSbNFh3FOnpQJg9WfJrOqrjYRZqbm5yiWVGmOopi7KnHAAQcE2dSanMae+yDWRykzJW8bu9bcn6myGUwsooWp1Ld16fvGVsk2Nt9++20wg/Xo0SO0m6kqZcKIlUDhfmQ1Ovc7m7hsrHNOITav8D7YVGemKv6co01iJhEe56myOoyp4tkMV5eyO60N7iO+rnb/c9/zdUi5LNj9w9GAPD9wf3EVcTONcbkNjkCLRQTVZrwWfQ5nkyLn1LKxxC4fHD3GYzPmIsLjg/smZV6zffAx+Jnfv3//IFs1e44emzp1apD79u0bZC710VBIEySEEEKIQqJFkBBCCCEKSbOZw1gNOnHixCCn1LWmjmO1HKvtUiYYU6GmzGWsPu3Xr1+N51wU0xlHQlnyLVZ7sjqc+8NMJ6lEZhxVwti1TJU2YRVupSRplRIypqKH+DfFzAStvWzG119/HUybrGqORealxoddAzaNcGI1NmVxVIiRqk6f6gfry1SiPpZt32x+4XuI98smPotumT17dmhLRR61Nbhv7ZqkytzwdeXEejaPH3TQQaGNkyWymYzLaey6664AymU3gLyZlrF7hc+XzfOiDJuceK6z8ciRWE8++WSQ2YzM/WdjvjYuDmwCN/eBVEQfz6e9e/cGUC7tAQA77LBDkC3ZamMhTZAQQgghCokWQUIIIYQoJM1mDmOVdEpVzZhqj7dNRXHEzBmpWiSxirlFh6/rpEmTAAAXX3xxaPv5z38eZL5mZm5htSgnSON2NnHZPjgJ3y677BLkVNV6O8+GME3yPRFLwtfa60m1a9cOw4cPB5BPqGbRJGyK4PpDnPTwlVdeAQAMGjQotLFKfcyYMUF+5JFHgrz33nsDACZPnhzahg4dGuSnnnoqyDFT7HrrrRfa+H5i1X/Xrl0B5OtPHXrooUG+5557ghyLhOMEoKkEcG0BNkkuWLAgyGa+YJN1KoEeV4a39unTp4c2jkpis+ibb74Z5GHDhgHIu0Kw+Y371qqPp+YSUYbHMY8bm7/YZM3bct9wbciYOYxl3h/fO2ZeYxMo32+MHYM/nzFjRpDZ9NmnT5/oPpYFaYKEEEIIUUiaTRN07733BpmdK1OOVvbWz055qRIIqZwgBr/p8/c4x4LIsJU8vz1fe+21Qea3vlj6c3uLA/L92aFDhyDbmze/CfAbK2uIuG/tzSOlHeT7I1bhnrflN13ext5o+K2qtWLXYIMNNghtLBv8Jshssskm1do4hwdz5JFHVmvba6+9otum2rfaaqtqbabxSXHUUUdF20eNGlXj94oCv8WPGDEiyOYMmyqrwU62nDOre/fuAIB99tkntPHbfyyPGADMnDkTADBu3LjQZtohIK5V4L7nsgqiDGtmOfjgjTfeAJDX7O63335Nd2I18NBDDwHIa9vtfAFg8803b9TjSxMkhBBCiEKiRZAQQgghCkmjmcMqOaveeOONQX788ceDzPkoGHO6Zae8VB6QmKM1nw+b33h/bdkhsr789Kc/BQAMGDAgtMXSsQNldTe3sRmNTVys+rRcInyMQw45JMislq+Ur6cuTtK8bcqMJkRrJZZTi+fXSy+9dJmPEcvDxs7QsVxEvD3npGkIij5211133SDzPGzPvEp51pqDXr16Acg7QLPJNZZzrCFpeVdECCGEEKIJ0CJICCGEEIXEpcoMRDd27n0AcytuKJie3vsWn+NdfVtv1L9tmxbfv+rbetPi+xZQ/y4DterfOi2ChBBCCCHaCjKHCSGEEKKQaBEkhBBCiEKiRZAQQgghCokWQUIIIYQoJFoECSGEEKKQaBEkhBBCiEKiRZAQQgghCokWQUIIIYQoJFoECSGEEKKQaBEkhBBCiEKiRZAQQgghCokWQUIIIYQoJFoECSGEEKKQaBEkhBBCiEKiRZAQQgghCokWQUIIIYQoJFoECSGEEKKQaBEkhBBCiEKiRZAQQgghCokWQUIIIYQoJFoECSGEEKKQaBEkhBBCiELS4hdBzrlezjnvnFuh9P/xzrmjmvu8RN0o9WGfun5WYZ+HO+eeWvazE0IIUUSadBHknJvjnPvCOfepc+4959y1zrnVm/IcxLJRWoR+5JxbubnPpbFwzg13zr3d3OfRWqBxvcQ597Fz7r/OuWOccy3+JUvUjPq2baP+bR5N0N7e+9UBbAFgSwCnNcM51Ann3PLNfQ4tAedcLwDDAHgA+zTryYiWxt7e+3YAegI4D8BvAFwT21DjqdWhvm3bFLp/m221571/B8ADAAaUVqM722fOuTOcczdU2odzbjnn3GnOubnOuYXOuX8559YsffaAc+74Ktu/4JzbryT3d8494pz70Dn3mnPuANruWufc35xz45xznwHYoYF+dmvnUACTAFwL4DD+oHTNLnPO3V96q5jsnOsd24lzbqhzbp5zbnjks5Wdcxc4594qaQuvcM6tWsM5Oefcpc65xc65Gc65neiDrs65e0p9/IZz7ugqx7nYOTe/9Hdxqe07yO7LriWN5afOua51uUhFxnu/2Ht/D4AfADjMOTcgNp5q6mfnXAfn3H2lN9MPnXMT7M3UOfcb59w7pXvsNe5v0biob9s2Re3fZlsEOee6A9gDwHPLsJvDS387ANgAwOoALi19djOAMXS8jZGtdO8vPegeAXATgHUBHAjg8tI2xg8B/AFAOwDyO8k4FMCNpb9dnXOdqnx+IIDfA2gP4A1k1y+Hc243ZH2zv/d+fOQY5wHoB2AQgD4AugH4XQ3ntDWAWQA6ADgdwFjn3Nqlz24B8DaArgBGATjHObdj6bP/A/C90nE2A7AVgNO8958B2B3AfO/96qW/+TUcX0Tw3k9Bdu2HlZqqjqea+vkXpe92BNAJwG8BeOfchgCOBzC49Oa6K4A5TfBzBKG+bdsUrX+bYxF0t3PuY2QX8wkA5yzDvg4C8Gfv/Wzv/acATgVwoMucqO8CMMg515O2Heu9/x+AvQDM8d7/03v/tff+OQB3AhhN+/63936i9/5b7/3SZTjHNoFzbiiyReRt3vtpyBYeP6yy2V3e+yne+6+RLZQGVfl8NIArAexeGmhVj+EA/BjAz7z3H3rvlyC7Pw6s4dQWArjYe/+V9/5WAK8B2LO0yB4C4Dfe+6Xe++cBXI1sIQdk98OZ3vuF3vv3kS3eDqnd1RC1ZD4AW5CG8QTgf6i5n78C0AVAz1K/TvDeewDfAFgZwMbOuRW993O897Oa9BcJQ33btilM/zbHImik934t731P7/2x3vsvlmFfXQHMpf/PBbACgE6lzrkf5c4Zg+zBDGQP861LKruPS4uygwB0pn3NW4bzaoscBuBh7/2i0v9vQhWTGIAFJH+OTDPHnIxsEfVS4hgdAawGYBr1y4Ol9hTvlAaZMRfZfdEVgA1S/qxbSY7dOzJ7NSzdAHxYknk8VernPyHTJD7snJvtnDsFALz3byC7h84AsNA5d4tMlc2G+rZtU5j+bSke4J8hu7BG59SGVZiPbEFj9ADwNYD3Sv+/GcAY59w2AFYB8HipfR6AJ0qLMftb3Xv/U9oXP1gLTcneewCA7Z1zC5xzCwD8DMBmzrnN6rCr0QBGOudOSny+CMAXADahflmz5EifoltJg2T0QHZfzAewtnOuXZXP3inJsXvHzF7q+2XEOTcY2URqpmS+pjX2s/d+iff+F977DZA54P/c/Ae89zd5700r6QGc30Q/SZRQ37Ztita/LWUR9DwyM9aKzrktkflv1IabAfzMObe+y0LtzwFwa8kcAwDjkF3wM0vt35ba7wPQzzl3SOmYKzrnBjvnNmq4n9SmGIlMnbkxMhPXIAAbAZiAsnmpNswHsBOAk5xzP636Yal//g7gIufcugDgnOvmnNu1hn2uC+DEUh+OLp3XOO/9PAD/BXCuc24V59xAAD8CYA73NwM4zTnX0TnXAZlN2z57D8A6ruRkL2qPc24N59xeyPyxbvDeT6+6TaV+ds7t5ZzrU1rcLkZ2733rnNvQObejy9IzLEU2GX9bdf+icVDftm2K2r8tZRH0/wD0BvARMt+Mm2r5vX8AuB7AkwDeRHZxT7APS/4/YwHszPssmUh2QWYqm4/MjHM+MpulqM5hAP7pvX/Le7/A/pA5oR9U8sGqFd77t5AthE5x8aSXv0GmTp3knPsEwKMANqxhl5MB9EX2hvIHAKO89x+UPhsDoBeyPr4LwOne+0dLn50N4BkALwKYDuDZUhu89zOQLZJml1S+LUJt28K51zm3BJmW9f8A/BnAETVsX1M/9y39/1MATwO43Hv/OLLxeR6yvl6AbAF8asP/FFEF9W3bptD96/LuFEIIIYQQxaClaIKEEEIIIZoULYKEEEIIUUi0CBJCCCFEIdEiSAghhBCFpNZRPQDQoUMH36tXrwY/CXbO/vrrr6Py8ssvn/sXAJZbrryG433E9vfVV1+FtpVWWqnafqvKDcWcOXOwaNEiV3nL5qWx+ratM23atEXe+5qSObYImrp/v/nmmyB/8sknAIC11lortOVTO5X57LPPgvzpp58CADp1qlqdpeloDf3bFH3Lc/F7770X5G7dusU2rzUff/xxkHn+bdeuXWzzBqU19C3QvHPzt99mUeyLFy8ObTx211yznEXkrbfeCvLKK2eB1p071zblX8NT2/6t0yKoV69eeOaZZ+p/VgmWLi1XpeBB8f777wfZBsXaa68d2ngxwwuf//3vf0H+4IMsWvrdd98NbT17lnPkcSeuscYa9fsBNbDllls2+D4bg8bq27aOc25u5a2an6bu348++ijI//nPfwAA++yzT2hbccUVo9+bOnVqkJ944gkAwC9/+cvGOMVa0Rr6tyn6dtGiRUG+4IILgnzeeect037Hjh0b5Pbt2wd5hx0av2Z1a+hboHnnZnsReeCBB0Ibj9099tgjyCecELLTYP311wcAnHLKKaGNn9Gpl6CGpLb9K3OYEEIIIQpJnTRBlajNSm/Bgqy81MyZM0Pbl19+GeQuXboEeZVVVgmyqdrGjx8f2hYuXBhk1v4wn3/+OQDggAMOCG22ugWA559/PsimFWJN0XrrrRfkxjCXCdGaYTPzbrvtFmQeV1988UXu39piWt9f/epXoe2Pf/xjkLldNDysiT/++OOD3LVrOXfoRRddBAA49thjQ5uZQqrC2qRLLrkEQPl5AABz58Zf3JtCKyTimBZ3wIABoe32228P8ocffhjke+65p9r3mKbQ/tQHaYKEEEIIUUi0CBJCCCFEIWlQc1hK3TVx4sQgm7f5uuuuG9rYwTkV8WWOVmwuW221cuF5PvZ3vvOdIJsJi1XxFq0CAJtsskm147GKlj3ehw0bFvt5QhQWHrvMOuusE2Qbpxzxw9FjbGZeYYXylGQOmKuvvnpo+/Wvfx3khx9+OMiPPPJInc9d1Mzs2bODzNFBHJxy1VVXAcj3EUeS8RzOc+n8+fMB5INi2KVh2rRpQZY5rPmwe4DdQk477bQg77///kFmN5KNNspqkdvzHsg/21sSLfOshBBCCCEamQbVBDH85sDhsltvvTWAvOYmlauH3wzMSS+Vl8IcoAFg1VVXrXYe/MbBjnu8OrV2Xr1y3hLeBzttC9FWib3JPfroo9FteWzyeDRSgROsFYptz2ONnXI5X01N3696PFE7Bg8eHGTWpE+ePDnIG2+8MYB8H6U06axBGjNmDADgsssuC20c6MIaetF82DP4yiuvDG0sz5o1K8jDhw+v9n0OQmqMFDQNgTRBQgghhCgkWgQJIYQQopA0mjmM1adsUrJ2dqTjnEGsMmUH56eeegoAMGTIkNDGalfOabHVVlsF2Uxj7JTJKjrOcxIzh/E58O+QOUwUgZgz4/XXXx/9nMcSjyF2djbY7M2OtGwas7HL5mveLzvumimFAy7EssF9y7ncLEiFt+EcQHfeeWeQef787ne/G+SHHnoIQH4O52oBrSXTfltnzz33BABsv/32oe2KK64I8g9+8IMg77XXXkG2nE9ckaGlIk2QEEIIIQqJFkFCCCGEKCSNZg5jFTerxMwU9fTTT4e2119/Pcicw4dzjbzzzjsA8upuNqNxmn42Ve28884A8pFmU6ZMCTKfx09+8hMAQMeO5cKzqegw0XCYiSOlfk9dd7uXOBKJI0z4vnvllVcA5NXvHIHSo0ePIPN5mJl10003DW2cn6qIsLmDIzF5rLAJq1JkFl9vNpOZeY1NYDyOWb7vvvsAAEceeWTlHyDqTP/+/YPM86P1HUcJWY4YIN+fHCVsZs+UewO7S4jmw8pl8LiaNGlSkLmcCs+9N9xwAwDgt7/9bWOf4jIjTZAQQgghCokWQUIIIYQoJE0SHdanT58gv/nmmwDyEVpciZa/1759+yDHkiSyCvbggw8O8o477hhkU8Ged955oY1V+L/4xS+qbRuLZgHSSd1E7aiULI/NIn/4wx+CfM011wSZo/xmzJhR62NblAqfQyyhHwCstdZaQV6yZEm1Y/H9XEQ6dOgQZI7K5D616wbkx3GMVDp92webxTfbbLMgc9JGq2DNanslSFw22LzZu3fvIHMU1+OPPw4gn8Syc+fOQeZ5+6WXXgqyjUO+l9js+atf/SrIl156af1+gFhmzD2Fn4lPPPFEkLmMlZVQAYB9990XQH4MttQSGi3nTIQQQgghmpBG0wSxpoffnM2B+bXXXgttI0aMCPKtt94aZNbYWKHGV199NbRx3glzgAaAqVOnBtk0CkcccURoM20UkH9jNceuTp06hTZ28OTfJOpO6s3cCmUy48ePDzI7wHJ/WD+xho7fWDm9/zHHHAMg79R55plnBpkdMdnx2Y7NDvtFxcYKa275WlkuLyDvHGvaXd6WNXKpvFxWFoOdKw844IAgc1+//fbbdfkpIgH3Bfchl9DgIIHjjjsOAHD11VeHNi6PMGjQoCDPmTMnyBaowPlnLLcMANxyyy1BNm095ycSTYP1JQeq7LbbbkG++OKLg8w5/syhuqVqf5iWeVZCCCGEEI2MFkFCCCGEKCQNag5jswSrz9ipyhypWH19xx13BJnzC7EZzUxcG264YWgbPXp0kDnfzw9/+MMgX3jhhQDy5gx2vuZztlTtnM+CzS+i6eDcQGwOY2dmU69yG6fvZ3Pqn//8ZwDp/COstuV7147NZtOiYoEIfC1Y5rHZs2fPIJuZg53a+RozZvZm9t577yBvsMEGQWbzqpXQYKdddnAXtYP7pVevXkHmscRz9JNPPgkgP0/y/Hn//fcHmQNZrG+mT58e2njMc9kMM7/KHNb02NzKz0nO1cfPaL4HFi9eDCCfJ4pN3S2Tx9qHAAAgAElEQVQJaYKEEEIIUUi0CBJCCCFEIWk0cxjD0T9mivrxj38c2rbYYosgc4TAv/71ryBbpML+++8f2lgV/+677wbZcoYAwMMPPwwgXxaBq13ffvvtQbbcFGwaYXVeLIpJNA4cgcL5RdgEYqYqjjRiVT33nanf+XNW8af63ExunPukqHDVdoMjO5m33nqrWlsqUoT7lPvH4Cg/LnXC/W4mmDfeeCO0qRJ53eE5br311gsyz5lswjI4PxP3PUeNHXLIIUHefPPNAZTdFYB8mZuUy4JoWmzMc99wdOjAgQOD/NhjjwXZTJscUS1zmBBCCCFEC0KLICGEEEIUkgY1h7Eqm1XcLJupgVPpcxKtm2++OcicDPH73/9+tWPMmzcvyGwme+SRR4JsFeUtvTsAnHzyyUHu169fkC1NfEwlD+QjJ1g9LDPZshGrIs+J2jg6jCOMLHKBow9TJi67B1kly/2ZSt5nEQ+cCKyofPDBB9XazKxRFb6GNgb5Gqfg7xljx44NMptdWEVv0SgcdSpzWN3hMcjRdexOwMloZ86cCSBvvnruueeCzGUV2GXBojQ5ape3nTJlSv1+gGhQJkyYACD+nATycy8/B609FQXakpAmSAghhBCFRIsgIYQQQhSSRosOY9U3y1aLhBNnLViwIMjdu3cPMkd/WY0SjhQ5/fTTg8wmtwsuuCDIN9xwAwDg73//e2ibOHFikLmWVOx3sLovVRFX1B2+J2I1Zdgcxv3BsplZ2DTJanlO3mXH4H7jxHyp8zG5pda9aUo4CZ7BCRJT1CXhaCx678EHH4xuu9deewX5xhtvBJCPXBF1h8cBm7V4jFlNNwAYNmwYgLxrAu+jb9++QWbTiM3/HIHGY/71118Pspk6RdNj0WFWFR7I3wsMzw/mwtAa5s2Wf4ZCCCGEEI1Ak+QJYg2KaVbYyZKdrqy6MFCuOA+U39pZc8O5ZH76058GmatVmxMf5yvgtwzTJgBlhy9+Y+GVLDt+SRNUO/itMOUsb3DleKscDeSdofkt1LQG3N+sdeD+sn7k1Pzct3wfcLvtjz8vKvPnz6/WlnKMZmzMpwInOC8TzyHmjP7OO+9E98vlNEwTFNNWidrD9z7Pk9zP/fv3D7KVqWGnZy6rwPM1Ozt36tQJQN7hmvML8Thnh2nRtNjY4zl2xowZQf7e974XZL53zIpjlp+WjDRBQgghhCgkWgQJIYQQopA0qDkslWuFVd+mVltnnXWqtQHA3XffHWR2fDTnuJ/97GehjdVv7Jg3ePDgIJtjFx+P1eucN+b9998HkDeZpEw4SuWekTJ31dQGANdee22QjzjiiGqfm7ocyDvL831lpg92hmX1a8ysmXLUY4fqmMM0q+e5knmRYJOywf2Uwu6B1JzA8P3E84LBwRI77rhjtc9TTpti2XjttdeCzKUSzDH6iiuuCG3cB/vtt1+QOQDmv//9LwDg2GOPrdYG5M1vbDITjQ/Pm2bmZNeCl19+OciWvw/Ij2m7BzhvW0tFmiAhhBBCFBItgoQQQghRSBrNHFYpBwurTDkKgUtlTJo0KcjbbrstgHK6daCcOwgAevXqFWRWu3fr1q3a8WJqO6AcpcKV7DkSopLppy0SK3VQKcqL4fxMHMHH0VbWR2yaZNMLm6I4ksjMJawu51T/HIFoKl4+Lt8nrLblivGmwj/nnHNCG1fGLjpdu3YNMpsU60ulXFy33HJLkI8++uhqn8dKe4j6scsuuwSZ50krVwOUrzf3vY1nIB81xiUyLCeQuSAA5RIcANChQ4fosUXjEysbxH3OJmnelt1IWpO7iDRBQgghhCgkWgQJIYQQopA0qDmMYXMYqzNNzclJEbnaM5ufWD36k5/8BEC+3AYn1Hv11VeDfN111wXZKspzQkaOaImZR1ilztFERSmbUV+z31VXXQWg3FdA/vpyEjW+rnZ/fPzxx6GN1al8DlxR3kxmfH+xWYuPYQn7+LdxYkU+T44etH08/vjjKDqVIj04QpMxsyVXn05F6XH/cHJFY9y4cUFmc5hFr6jEQsPBZmZ2WXjjjTeCbBGaPXv2DG08frj0BidDjD0HDj744CCfe+65QeZniWh8eNxZv/LY50gxjszlMW3jWFXkhRBCCCFaKFoECSGEEKKQNFrtsJhqDChH9/C2c+bMCTKruzkix/Z3/vnnh7aRI0cGmRNxsTrPqlyzapfrnTBmHuHoIN4X/47W5P1eV2ImMP693C+/+93vgmwmJY4YYjMTm61YTRo7HpsbU0n2bN/8OUebxMyXrNblzznigfvc7gm+v4qKmbVSJlI2kzB1qSTNY8zuF44INPN2VWxbjkYSywZHybLpmCN0rZ7cySefHNrYxHXzzTcHecyYMUG2eZnNXuwKYeZrIN//ovHhuZmjwgyeb9k0xmPP5giOCKxNYtXmQJogIYQQQhSSBtUE8Rsfr9555Rh7K+TcQP/3f/8XZH4zeOihhwDkNRKcWv3KK68MMmsibKXKKdm5+nzMCZhLL/Dx+DfV5e22NXPZZZcBAP70pz+FNnaG49W95fnha8b5fmJV3YHyW3xK48NyrDQLf4+PzQ6V5lCdcrJmLRXnK7LjcXXyojrf2htiLHcUkE+nz6S2NyqV0GAtBPd17C01VXFe1A7Wgk6cODHI2223XZDbt28fZBsXrM2fPn16kNdcc80g87h5+umnAQB9+/YNbaxBYqyfY2VURMPD483mbA5aWbhwYZBZs87z7dprrw0gP2/yeG1JfVmMJ7kQQgghRBW0CBJCCCFEIWm0shkpc5g5vHHOkI4dOwaZ80qwmvyaa64BAGy//fahjc0rm222WZA5J5CZY2rjyNyuXTsAeXMIpwIvigns0ksvDfIJJ5wAIF85nUtTxEqQpBznUn1g17WS2bQqduyUEyXLdmxO78/H4PNk0xirhg1WBxcJM4elVNmc14uxfq1N5XjG+oyPt2jRouj3TN5pp51C29lnnx3k0047LXoMkYfHBDu1cjvPBRYwwHmEeMz06dMnyDz2rG957LLMZhbLL8SlNETjEXMH4MAQzvfGY5D7z1wN2Mm6klm8uSjGU10IIYQQogpaBAkhhBCikDSoOYxVX6w+ZTOIqUrZ5MBqtFjkAQAMGjQIQN4c9sQTTwTZqswDedXsFltsAQAYPXp0aGNV64MPPhhkq2zMKeAZ/h0tVbVXX5YuXRrMGVwl3SLwOCKM+47NmkbqOsXKIABlc0mqXEddcjKl7iu7N1NRZ7xtrLQG50bhEi1tHTYH2+/mnErM/fffH2QeY9a/tSmVwdj3OFqTzWEc3WcqfL5POUpU1A42SafmYnMbAMpz5rPPPhvaOKqXTZm8Tffu3XPfr3psPp59z+Zy0XTYWOdxxXn0eN5kNwnL18YmUF4fsMmtuZEmSAghhBCFRIsgIYQQQhSSRosOS0WKGZxEi6MQ+Husdv/9738PAHjyySdD29Zbbx3kIUOGBDlWFoPNJJy0iSsbm9p9vfXWC22s7ksl7WsLLLfccsH0w2pwS4vPkRkp05Gps1ldzgm0Kl2/VHQYt8eiEbg/2UQSixpjMw1HsfC2XC7AvsdJHx999NFq595W4WtrptGUWYvT5rO6O5bUsjbRf7YN9ynzwgsvBHmHHXYAkI8C23///SseQ+ThhIZskmJTB0fw7rjjjgCACRMmhLY333wzyCeeeGJ0388//zyA/BzO5jKeQ/j5IBofnmMt+Si7JHBCUp7T2fxsffbSSy+FNiuVAuSfMc2NNEFCCCGEKCQNqgniNz0mVsiScwPxW0bqDdE0EvzGzvkqUtokk/ncUkU9bVt+6+fzZFK/tbWy0korBYfwq666KrRfdNFFAICpU6eGNi6UyY7R7ETbVlhnnXUA5N+EDj/88CD/9a9/bepTalIs/T0AXHjhhbX+HuddijlG1yZnUMxhnjWLXArHNEHS/iwbnOuJ88FwsMi///3vIJuWzhydgXw/jx07NshcWsPm/ClTpoS29957L8g8n6cCVUTjwGPTtLtszeE5n+dFLqFk7bNmzQptrEFih/jmRpogIYQQQhQSLYKEEEIIUUga1BwWMy0BedNRLFcMq7jZEZMdV03tymnY2TSWykFjarlUdfHddtut2nmyWpYdgvnc2HGvrcGVnS+//PIat+V+tjwQ7MiaqtTOmPo1lRsoZXq0PudjfPDBB0GOmVZTad7ZRMpOe3YPsjrYTGQin/uDr1vMCZ7bUmbvWJp9Hq/cZ1ytXDQMfP153HGwAJunLHcUm4jZLMKlS8xkCZSr0t94442hbd68edFjmEO+aHpsjuX5mINLOA+QuawAZVMqPydnzJgR5J133rnhT7aeSBMkhBBCiEKiRZAQQgghCkmDmsM4yovNEjHV+Kabbhra2MzEKlhWg9v3OAKJ1XIMq+7MzMH7YpUvp+S33CZ8Pnw8jnhJHbtocN+a6ShWeV20fmxcsWmQxznn9eK5IPa9VM6gmBmdxzPvQ+awhofnNe4LjhTj3Grrr78+gLwLwaRJk4LM+aLYHG7RptzGrg58HmyKE40Pu5bYPcDjjmV+llqpDKA8Zrl/W+p4lSZICCGEEIVEiyAhhBBCFJIGNYcxXHWWo2lMvcZVuVllllKfmmqco0PY7FKXkgz8PU4Nb+fE58C/g8+Zk8gJUQRiCQ65FEKlCE2GxzHD4zSmUufvcUX5GDwPpJIzijxs/ufSRtzPHD26YMECAPnIH57vOSkeRxKZCZTnUTapcUI+Nr+JxofHqz0r2ezF447dTDixsCVG5P7l6LGWhDRBQgghhCgkWgQJIYQQopA0qDmMEyNxxVj2Jjf12WabbRba7r333iD36NEjum9TZ7PKnVWm3M4qc1PtpSrcs/q3S5cuAPI1yXi//DtqUwVbiLZEzMzM9bsYHoP2PTZDc6RlamzGzGuc1JLNNZXOV+aw2sFzOFcF52rgW2yxRZD3228/AMANN9wQ2lZbbbUg77TTTkHmqDEzn40YMSK0DR06NMh33313/X6AWGbYbGnjjc2hL7/8cpDZfM3uIhbdx89JrhPXktCTXAghhBCFpEE1Qfx2x3lCKmFvE0A+JwQ7ysUqvPNbC7/1sYbI3gD5zZRzA/Xv3z/IMe0OO34JUWRi2pRRo0YF+Uc/+lGQP/744yCbU2Wq/EklYppkoFzhGihrdFlTJOoOV4gfP358kIcPHx7khx9+OMj29v/222+HNnacZa0RO8m+8MILAPLlMXiOfuSRR4LMedtE4xMLduBn8XPPPVftcyCfM8ysO2eeeWZou/TSSxv+ZBsAaYKEEEIIUUi0CBJCCCFEIWm0PEF1cUpkdTc7JbNsDs7syMxyrHwDy6m8JKlzroQcLUXRiJmL2bTM44crgs+cObNaG+fnYlU7q9fNubJbt26hjc0n22+/fZBjZjCN0bpzyimnRGV2deD52hyc+/XrF9p23XXXIPP9wSaugw46CEA+jxCbOq+44oog19eMKuoHjzEbu7Nnzw5tr7/+epA/+eSTILMJ/NRTTwUAjB49OrSx3JKQJkgIIYQQhUSLICGEEEIUEldHE9D7AFTSt2709N53rLxZ86K+rTfq37ZNi+9f9W29afF9C6h/l4Fa9W+dFkFCCCGEEG0FmcOEEEIIUUi0CBJCCCFEIdEiSAghhBCFRIsgIYQQQhQSLYKEEEIIUUi0CBJCCCFEIdEiSAghhBCFRIsgIYQQQhQSLYKEEEIIUUi0CBJCCCFEIdEiSAghhBCFRIsgIYQQQhQSLYKEEEIIUUi0CBJCCCFEIdEiSAghhBCFRIsgIYQQQhQSLYKEEEIIUUi0CBJCCCFEIdEiSAghhBCFRIsgIYQQQhQSLYKEEEIIUUi0CBKtFufcHOfczs19HkII0RZwzj3lnDs88dkGzrlPm/iUGp0WvQgqPeS+cM596pz7yDl3v3Oue3Ofl6iOc26oc+6/zrnFzrkPnXMTnXODm/u8RNPjnPuhc+6Z0rh91zn3gHNu6DLuc7xz7qiGOkdRf9S/LYtSP9jft/TM/NQ5d1BDHcd7P9t7v3qFc4kuopxzw5xzTzrnVnDOeedcr4Y6r2WlRS+CSuxduvBdALwH4K/NfD6iCs65NQDch6xv1gbQDcDvAfyvOc+rtjjnVmjuc2grOOd+DuBiAOcA6ASgB4DLAXy/Oc9LNAzq35aH9351+wPwFkrPzNLfjU1xDs655ZxzNa0n9gQwrinOpc5471vsH4A5AHam/+8BYGZJ3hPAcwA+ATAPwBlVvnsogLkAPgDw/6ruS38N2k9bAvg48dnhAJ4CcAGAjwC8CWB3+nxNANcAeBfAOwDOBrB86bPeAP5T6sNFAG4EsFbs/gCwUWnfY0r/7wrgTgDvl9pPpO+dAeAOADeU7p+jmvsatoW/Ul9+CmB04vOVkT1A55f+Lgawcumz9sgW0u+X7pP7AKxX+uwPAL4BsLS0/0ub+7cW8U/92/L/avOcA7AagJtK8+rHAKYA6FD67ClkL7D/BbAEwIMA1i591geAp/08BeAsAE8D+ALArVX68WLa9kUAA0v79QA+K22zf+nzYwC8UTqnuwF0KbWvUNr+hNI8vgjAeQCWa7Br1tydVtsOLXXcdQD+Vfr/cACbItNmDUSmJRpZ+mzj0gUeCmAlZA/gryrdHPqrdz+tUbp5rwOwO4D29NnhpWt/NIDlAfy0NEG60ud3AbgSwHcArFsakD8pfdYHwIjS5NoRwJNVBtYcADsD2ALZG9BepfblAEwD8LtS/28AYDaAXUufn1E6p5GlbVdt7mvYFv4A7AbgawArJD4/E8CkUj93LE2IZ5U+WwfA/qVx3g7A7QDupu+Ohxar6l/9Veqj8MysYZvjkC00Vi3NyVsCWL302VMAXgfQt9RXEwCcXfostgiag+wFdEVkC5anABxe5XjdAbxVkm1R04s+3wXAQgCDAKyCTLP4nyrbP4psId0T2WLp8Ppcn9hfazCH3e2c+xjAYmQPxD8BgPd+vPd+uvf+W+/9iwBuBrB96TujANzrvX/Ke/8lsoehb4ZzLwTe+0+QLTg9gL8DeN85d49zrlNpk7ne+797779BtlDqAqBT6fM9AJzsvf/Me78QwEUADizt9w3v/SPe+/95798H8GeU+9gYBuAeAId67+8rtQ0G0NF7f6b3/kvv/ezSeR1I33vae3936f75omGvSGFZB8Ai7/3Xic8PAnCm935hqT9/D+AQAPDef+C9v9N7/7n3fgky7UDVvhbNi/q3bfAVgA4A+njvv/HeP+O9Z4fna7z3r3vvP0e2WB1Uw77+4b1/1Xv/VQ33xR4AHqhhHwcBuNp7/7z3fimAUwBs75xbj7Y5z3v/kfd+LoC/ABhT4TfWmtbgCzHSe/+oc255ZHbnJ5xzGyNbEZ4HYACyt/2VkXUYkJlC5tkOvPefO+c+aNrTLhbe+1eRaX3gnOuPzNR0MYCHACyg7T53zgHA6sj8h1YE8G6pDcg0M/NK++kE4BJkC512pc8+qnLoYwA84b0fT209AXQtLZ6N5ZG91RjzIBqaDwB0cM6tkJgQuyIzURtzS21wzq2GbAG8G7I3PgBo55xbvrR4Fs2P+reVUXpuLqamfgCuRdYvt5X8Oa8HcBr16QLa/nNkc3WK2syjewD4Rw2fd0WmNQSQvVQ75z5C5ltq58LHCfdVQ9AaNEEAgNKKdSwym+NQZDbNewB0996vCeAKAPYkfRdAWEU651ZF9hYjmgDv/QxkA21AhU3nIXOe7uC9X6v0t4b3fpPS5+cg0y5t6r1fA8DBKPexcQyAHs65i6rs903a51re+3be+z34NOv360QNPI2sP0cmPp+PbIFq9Ci1AcAvAGwIYOtSX29Xarf+Vn81P+rfVkbpubk6/c0vacfP8N5vhOxZui8ybUy9DlHT/51zK5WO8Whie6DKfeOca4dsofwObcNR4XxfLTOtZhHkMr6P7OK8ikwz8KH3fqlzbisAP6TN7wCwt3Nu21InnIHqD0/RQDjn+jvnfmHqy1IagzHI/AOSeO/fBfAwgAudc2uUIgx6O+dMTd4OmW/XYudcNwC/iuxmCbK3y+2cc+eV2qYAWOKc+41zblXn3PLOuQEK2W9cvPeLkZmeL3POjXTOreacW9E5t7tz7o/ITNanOec6Ouc6lLa9ofT1dsicKz92zq0N4PQqu38PmW+XaCbUv20D59yOpflwOWSBIV8B+LaBdl+1H7cHMM17/xmQLcqQaRR5m5sB/Mg5N9A5tzKAcwFM8N6/Tdv82jm3lnOuB4ATkTlhNwitYRF0bylB0yfI7MiHee9fBnAsgDOdc0uQDbbb7Aulz08AcAsyrdCnyByvWkXIditkCYCtAUx2zn2GbPHzErK3v0ocisyc+QoyU9cdyHyGgMynYAtk6tz7AYyN7cB7/zEyf7HdnXNnlQbaXshs2RZRcDWy6BbRiHjvLwTwcwCnIYsEmgfgeGSOmGcDeAZZpMh0AM+W2oDMdLoqsr6ahCwqhbkEwKhSvrC/NPLPEAnUv22Crsjm0k8AvIxMS3NTA+37YgBjnHMfO+f+jHho/OkAbipts5/3/kFkTvV3IXte90B1zdS9AJ5HFhF+FzJLQ4NgETptGufc6shCAft6799s7vMRQggh2jrOuZnIonZn1vP7KyDTVK3vvZ/TkOdmtAZNUL1wzu1dUtd+B1mI/HRk4XxCCCGEaEScc6sgizSr1wKoqWiziyBkkWSWtKsvgAN9EdReQgghRDPjvV/qvT+/uc+jEoUwhwkhhBBCVKUta4KEEEIIIZJoESSEEEKIQlKnjNEdOnTwvXr1aqRTqR1ffvllkL/9tpzaYMUVVwzy8ssv36TnVBNz5szBokWLWnyOopbQt62RadOmLfLed2zu86hEc/bvN99kCYG/+KJcneSTTz4JMpvk11yznMVg5ZVXBpAf201Na+jf5uzbjz7KErivuuqqoS01/y5dujTIliF+9dVrSkbcuLSGvgUar3+//rqc9Pvjj8vJ9Tt06NBgx7CxDwALFy6MHqOxxndt+7dOi6BevXrhmWeeqf9ZLQN2Md95p5xE8rPPPgtyly5dgrzWWms13YlVYMstt2zuU6gVzdm3rRnn3NzKWzU/Td2/vLBZvDjL2v/SSy+FtkceeSTIPBnvtttuQe7bty8AoHPnzo12npVoDf1b377lPrJFSaytJu68804AwCabbBLa2rdvH2R+CL7++uvV9r3ddtuhEvayu9xyDWu4aA19CzTe2H3//feDfM899wT5Rz/6UYMdg192Lr744iD/+Mc/DnJjje/a9m+Lrh3Gg+aWW24BAGy00UahrWvXcvmQv//970Hedtttgzxq1KhaHy/mJF6biUCIImDjg8cEP+R4DE6ePDnIjz/+OICyZgcAPv20XK9xvfXKdRJvuqmcs800R/vtt19oO+6444LMD96q51j1PEV16jLfff7550HmOfX5558HACxZsiS0DRhQrpbDL6TvvvtukE2DtPHGG4e2c889N8iDBpVrdjb04kdk3HZbyC+ceylhlnVBdMkllwT5tddeCzIvunhB1Bzo7hJCCCFEIdEiSAghhBCFpMWZw15++eUg/+tf/wry6adn9fZWW2216PfYBHbdddcF+cEHsxI17GuQQupzIfJUMi+deeaZQWbfHjaP/OUvWSko9uGbMWNGkN94440gb7311kFed911AQAvvPBCaOOxzWN+5MhUYXORImZm4j78/e9/H+SxY8tl+9gJ2kycbJqcPXt2kD/44IMgs6+QOU/PnVt227j66quDzP4qv/nNbwAAW2yxRY2/B5BLQ13o3bt3kLnP/vnPfwZ5n332AQB07Bj3L07NDzNnZkmib7755tC27777BnmNNdao72k3ONIECSGEEKKQtAhN0FdffRXkp59+Osj8JrLKKqsAiK/0gfwq9LDDDgvyRRddBCDvUN2zZ89lPGMhBJAPaX/llVeCfPbZZwfZnKc33XTT0Na9e/cgpzRITz75JABg1113DW1/+tOfgnzAAQcs07kXhdo4i5933nkAgGnTpoU2DpseMWJEkDfccMMgn3TSSQDyju4c9s7av0WLFgXZtufQb5bffvvtIP/1r38FkHfOPuOMM4LMc7u0PrXnww8/DDJr91ir169fPwBlR/aqpK73T37yEwDA8OHDQxtrAt966626n3AjIU2QEEIIIQqJFkFCCCGEKCQtwhz26KOPBpkdsMwEloJVcSmV7/bbbw+grFoHgEMOOaTG/dbG5CZEEah0z++xxx5B5jwg48aNC3K3bt0A5McVO+V+5zvfCfL8+fOr7Y8dp81ZGsjno6nt+Yoyl156aZCvuOIKAGVHWCDfR7fffnuQLUgFKDvGn3rqqaGN3RvY1Mk5pdZee20AwN/+9rfQdv/99wd51qxZQbacQXz/HH744UF+4oknglzpmSHisBn6yCOPDPIdd9wBANhpp51C22OPPRbdR58+fYJsCVItRxiQv2/WWWedZTzjhkOaICGEEEIUEi2ChBBCCFFImsQcxoVOY7kpOLJg/fXXr3FfdVV3Dxw4EEBeLceFHNkrPlYWQAiRZ8KECUF+6qmngsxRQe3atQvy9773PQDAEUccEdo4fwjPCT/84Q+r7ZvV72yuOfHEE4N88sknA8iXYSg6leYzjsQdMmQIgHJ+FyCfw4cj8bickZlJjj766NDG5VPMFArkTZ2W74kj0DgHHEejWSQRm7q46OZdd90V5DFjxgRZ83nNcBkTfkZzvS/L88TXkPuXt2UTpl17rvXJ0aM77rjjMp17QyJNkBBCCCEKiRZBQgghhCgkTWIOi6kj2QTGnumpshiVVJup9hVWyH4iR6CwWu673/1uxX0IIcqq8Ycffji0cbQWq9c5SZ6Vv9lzzz1DG5fH4agyTqhoFci//PLL0MbmLh6vFmXEZTw4OZvI4HmX50FLgMgJCTnp7DbbbBNkrgA+fvx4AMChhx4a2kPLs5cAABUPSURBVLjv2Q3h17/+dZAtOoiTIrI5lUtkWPTXnDlzor/j7rvvDjKbwzSf1wxHXXIZi2uvvTbIFl3NkXlsimRiUdV//vOfg8zRY5w4s7mRJkgIIYQQhaTZNEH8dtehQ4cgxxyna0Ol3D49evQIbfy2I4SoHeY026VLl9BmafWBfB4YTsm/dOlSAMC9994b2nj8n3POOUHebrvtgnzLLbcAyGuHubAmB1GYJuOll14KbcOGDav8o9owMe05a1Niedb4DZ2L3HJ//e9//wvySiutBCDf36NHjw6yFbAG8gU7n3vuOQB5x1ou4mkaJqDsoN2/f//Qxk7SrIEUNcPPSS6FweVvunbtGmTT3nEBcs4ZxM9SzsX33//+F0A+T1SnTp2CzA7Tze3ALk2QEEIIIQqJFkFCCCGEKCQtomwG5+3hXBKs/qykKqv0+auvvhrkzTffvK6nKNogrKo1B/qqjBw5EkC+UvW5557buCfWQrH8MJxThMcr54Rhs7ap19n0wdebK0pzdXBzumZTNpvG2DnWzmnhwoW1/TltnticyHmdll9++SCbaYSv75QpU4LMTrQnnHBCkM1Z/r777gttO+ywQ5CPOuqoILOJyxxxt95669DGY4z70fJMsSM3O+dyPiNRM++9916QuXQFP4P52lpA0dixY0MbV4bnEin/+Mc/gmzmNTazsemMj2fn1Llz5zr8koZDmiAhhBBCFBItgoQQQghRSJqtbAar5TgiwfISpPZRVw9y257Vstdcc02QOYIklf9ANC8cpcL5LEwVe9ppp4U2TuleqaJ0ygTGUUwWCcWms6JiER0czcnmlaFDhwaZ83JZaQRWh3OEGbdzVXozd3E/cZmbBQsWVGvneaXoxOZKNimtvPLKQTaTEps3rNI7kO8vjjAzEwabN9gswvl+OGfQ7rvvDiAfVcblOPr27Rtki/jjiKL11lsvyGaSE5Xh+ZOfyzwG+b6x7Xk8c4Qmw/eI3Q9sso6VqALyJXaaA2mChBBCCFFItAgSQgghRCFpUHMYq7hYjiVAZDU6p8pPeYjXN4miwV7qluALAC644IIgn3rqqQAqJ14Ujc+zzz4bZCuJAORNMQcffDCAvAl13rx5QWaVeiUsNX/V41kkxNSpU2u9r7YEJ8azpIesGmeV+uLFi4PMKm6LLOJoFJY5iRonajOz5KBBg0IbzwOc7M2OxyV4RHW4cnzHjh2DbOOGXRO4/AVH6rJJbdy4cQCAwYMHhzaOGORxxVFjluCQzTNcgoWTXlrCRSujAuTNN/z84HuQ53yRwdF/Np6BvMmZ3UJibigs8/zAz01zReAEqjEzG5CfT5oDaYKEEEIIUUi0CBJCCCFEIWlQc1hKZcZYNMD06dND24EHHhjdliMOTO3GEQ2c7IvVeZVMZ8cff3yQWdV+0kknAUhXsheNg6ndubI41xzihGq33XZbkC3q6IgjjghtbLay+jVA2azFNZBmzZoV5L/85S9B3nnnnaP7KyIceWOqcVZfczQWJzXkyvA2Zjk6hE3S3CdszjDzCM8lXCeKkyzasXlfrJ6XKTuD+4XNYWYaYTMTm57ZxDVgwIBq27D5iqPK2FzC8/XAgQMBAC+++GJo4/mez9PuA4404ii2lCxqhiPseC7k559dT4605XGVirC1+4i/x8lSN9hgg/qedoMjTZAQQgghCkmjOUbzmwE7Tz7yyCMA8m/3Vp0ayDtrsUbH3gJ4ZclvBuzEx9j2vGLt06dPkA855JAgm5Zhq622Cm3sqMmOeWLZYKdWyx/C+Uc4Lw+/3R1zzDFBvv322wEAxx13XGjbb7/9gszlUUxrxG+m/NbLeaSef/75INv9wzlK+B5t6/D1Mi0Lj0u+FtxnrLGx8cRvmzyueH5gzGGa99W+ffsgs1bY9sHnwP3b3M6Xzcm0adOC3LNnzyCzZsbKVLA2j7VqrDXgeX7jjTcGkHeo5nuG+2j11VcPsmmhWCPIztesYTQtFJ8PO+9yP1t1egAYMWIERBrWBHKOJu4T60vW0vGzlO8F7pOYNYaf0ewE39xIEySEEEKIQqJFkBBCCCEKSYOawyZMmBBkrhjMZoltttkGQN7pjlVtrCZjda2pwdnBkR3wWA3OuQnMlMImFU63v//++wfZVLBcMZmrGbOakB2q5UidhlXYbCLlPEDmLM9mSs7xMXHixCDfdddd1Y7BfXvWWWcFmU0u1nebbLJJaGPzJqeCZ+dcMwOwCvjyyy+vdg5tFe4/Mzmx+YrNHexEHbv2sUAH/hzI5/mxXCLslMtqdh7zdp6snpc5LIODDNidgOdJ42c/+1mQOV8W95GZloF8Pxo8L3N/ch+YeZnnzu7duweZ833ts88+APLlbNgVgp8Zd9xxR5BlDqsZDlRImbjtGZzK+8ftsfuJ5wce/6lcfM2BNEFCCCGEKCRaBAkhhBCikDSIOey6664DkI/951w8rCYzVWoqvTl7kMciU1h9mirTEYs2YRUeq2vZlGLqc46gYJU6R7FNnjw5yBZZ1NzVcFsKbOq6/vrrg8yqeE51b33AUVmTJk0KMpuievfuHWQzh/D9w9FDr776apDN1MkRaHwfcGQDm2FjcMr3tg6rsG3ssamCzdOs+l5//fWDbOp1vsZsiuS5gM0uNhewmZT7lE0tNub5XuFzLzK33nprkLt16xbkWE4dvvc5rwvD19jkVNQl74PnaLtXuI/YDYGPYS4Us2fPDm2cR8hyDgHAzTffHOQrr7wyev4ig83J/Hzka2/Pbt6W7xHuUzad2zjmz/l7HCnY3EgTJIQQQohCokWQEEIIIQpJvc1h559/fpAtuodVX88880yQOTGimURYdc4qU4484P3FIkxYHZ6qgmsyq+058R2r5Uzlx97xvO2wYcOCfOaZZwb5iiuuAAD86le/QluAzYlmkuBrygnJuHRB586dAeRNhZyMkk0gbFKxqCJWz2+22WZB5kgQlq2fOFEbRzyw6cxkNp1xJfNU9XHbH5thUmaCtgibOSyiM1WagE1ZjN1D3De8DzaHsanRxizvl6POONrQ5iA2ubJZpsjw+OCkhxx1Z6ZOMz0B+b5PVR83Ewj355tvvhlknq/ZBG59y/3F+41VuP/ud78b2thcztvy/CBqhsdPrHI8EC+LwaYxfo7HtuFt2V2En6vNjTRBQgghhCgkWgQJIYQQopDU2xx2wQUXBNmiozgyh9WjrHY18xObJdhrnE0mMdU2b5uK8koldqq6LyCfJC8W6cAJvDgZ3E477RTku+++GwAwd+7c0MYRZq2Bb7/9NpiEzLQAlM2THOHHJjBWk1uNIjZ7TJ8+Pciswma1tUV98H3CavSU+cXaeVs2cfF5GHyMVLQCJ1/r0qULAGDw4MGhrW/fvtHzaYuwOttgkxTfKzxuWI1u6vW33347tHGyVD5GLGIlVSWcx7bdu2xOU0XxDDZZcB+xSeKggw4CkK/flUqKx3X/bH7kyNnU/cHj0fqZ+4vNzDyv2LzLbhWMjVE+H1EZ7ht+1vK4sTmS5382T3NEWKzSPJs4+XscCdjcSBMkhBBCiEJSb01QrGrwhhtuGNpSb2z2NpDKS8C5INhh0jREvLJkbRJvy9vY6pS1RqlyG3ZufO6psgDbbrstqnL11VcHmcs3tAa+/vrroPXhFb1dK9bQsbaFNTr29sbXjD8fNWpU9NixN3bW1rHTHr8h2n0T01akSOWR4fsnBt9TfD5tnZhjJF+3VK4RvkamOeB9cQkF1jLwvWD3IX/OY5ffTu2NlZ06U9XpiwZfU+4vbjctPo9X1tKwBokdkfv16wcgnb+JtTs8X5sGnrURKa2CaRA22mij2M/LWSBYC2X7SznsFxGeV1krzrm4eFzZWOd5ty5jjO837lPWJtq9lXKybmykCRJCCCFEIdEiSAghhBCFpE7msCVLluDxxx8HAIwcOTK0myqNnWDZ4ZjVlQZXcme1LDsUs4nC1JysMmW1fKqUgangWFXPpjw+hqnw+XxYDczquldeeSXIpopnh+Frrrmm2rFaMt98801QTXM+B1ONvvDCC9XagHwfmKqVTSHc9+yIzP1YyYGVVbisPo99j48dc6hl9Syfe8zsw9u/++67oa1Izpd8XcxczA61bNZih3LuJzMlsgMrm5Zjeb342DyGONcM36d2P8W+X3Ri5m0gP66GDBkCIF+2KFYypSoPPfQQgHx+NzaR9OjRI8g8Hi1PEM/LqRxPNq9yfjLmqaeeirbbb5E5rAw/l9nEz/0QKxvEZlIe87wt9689I3i/fF/wsW0t0FzBRNIECSGEEKKQaBEkhBBCiEJSJ33xiiuuGKoQc3p1U0tbpW4gb+6IlTXgCAI2LXG5BM49YREisegRIK/6jlWfT3nFx1Ku8zF4v2xK4YgVU+2NHj06tO21114AgL/97W9oDSxduhQzZswAkM/ns8kmmwDImxnYDMH9GDNPpT6PbcttqQrgsUgwNs8tXLgwyKm+i7WxupfbbR8czcC/v63D6m67Fqm8TDwe2axiZjIegzw/MDyurE+45E2qWrmZw5UnqDrchzHXBKCcw+nf//53dNvU2GS3BmP48OFB5jmcx6OZS9m0wiU92HTy4IMPAsjn5+L5iO8Py1UGlJ87qd9cRG666aYgczR3aoyZGTT1Od9bseryPJ65z9hEOWXKFAAyhwkhhBBCNClaBAkhhBCikNTJHLbKKquE5Fis+jbzUixRFZD3BLeoEFaTcVQJq9FNTQaUKwhzlEIqSR4f21R3rM5lExjvz7ZhtW1Kbc+Jv+ycOaFga6N9+/b4wQ9+AADYd999Q7uVAmFTJxNLIpiq3l3JPMHqUr6+DKtcYxErfGz+PJbgkNP4s4qft7XoFlapc8mH1pYUs67wWLDrwmOCy41w9CSPbxuDnAjVzKxV4XvETC025wB5cxffIxaFwueQMqkWBZuXOFKPTcccuWWRva+99lpoGzhwYJD5Wk6dOjXIlsCQTVU8Brk/2fTVu3dvAHlzGZ+bfQ6Unw/8fOH7jvc7dOjQILMpXmRwhB1fQ772jJklU0kP+Xvc77yNwc92HrvPPvssgLw7SVMiTZAQQgghCkm9E2mwY5PJ/PbHWhF+I7e3Es67wvBbCztK2T5YI8EOqqzdYScuO6dYG5BfvcbyI/Bqmd+AeQXc1hxluW/tDa9IRUNFmZhDZCpVfqwYMcNv7Lzf1DamAeDSC1yElccdO7YbRXeMtvmK5zCe+2KBAxMnTgxt+++/f5DZGZaDV0wzx/My9xffKzy3W6AB52njvuWcUqZB5HPjskU8L6fyGRWdWNBPrGQUkL9HbJymcrwx/NywfadydfH+LJiFxzDfs42NNEFCCCGEKCRaBAkhhBCikNTbHMbqLFN/srMTm5liVaLZuZTVp1yNmFO8G5xLgp1yWQ1aKXcNq/NYLW+qeFbrsTqXv8dqezt/duAUoi3Ajsam4k45u/IYjFUEZ6dm/jyWX4T3x+Oct2WVuZlXeN5JOdcXhVgFcO47dlS3eZfnYnaSZkdlnhPNTMamSXZg5oACzh80btw4APmyClx6g80oRx55JADg8ssvD23sbmE52arug014RcdM1dz//Jzj8cjX3p6P7P6RGq+8b+tX/h73Ncu2DZvTZQ4TQgghhGhktAgSQgghRCGptzlsiy22CPLkyZMB5PP9sNd/KgeBwWprNmXx90y1yapdVpOzijZWEZfbUpWmYxXnWWXIqnY+NzMZcESDEG0BNo9YBAlHcXBUScqMbOOD5wSO5uRxzNhY53HHx+NxHEvTz9sWEbtu3C/cB7EyBrfeemuTnNv222+/TN/ne4ZNOVbWCVB0IGOm0VTpCn6esWwm8FieNSBvcuTcQPYM5Xkg9szkdp5rmhJpgoQQQghRSLQIEkIIIUQhqbc5zNKlA8ADDzwAIK8mZ7WklcoA4lXkUx7rHLllZiveV0oVx/szVRur5Xi/bPoy9TF/zufDUQ8vvPBCkDfeeGMAbS9pohAc0TVr1qxqbRwRaSVWgHzUmEVucRuXYUglVDPTDUcYcdXyzp07B9migh577LHQtqwml9aOzcdcouTll18O8siRI5v8nBqKUaNGBZlNfHyPpcr3FBF73vLzjMcgR3zFygnFTM9V98f7sOcuP1/ZbBlLcMnzByfkbGykCRJCCCFEIdEiSAghhBCFpN7mMI7SOvbYYwEAd999d3RbTmxlKjNWqXN1WZZZBcfbG1ZzpOrnsQSHbOKK1QgDygma+BzMBADka99svfXWQR48eHB0f0K0dvr06RPkM844o9rnzzzzTJDHjx8f5O7duwfZzFlsqvjPf/4TZJ4ftttuuyDPnz8fQL7GESfD22mnnYJ8/PHHA8ir2VlVX0TsWvHcx24Ihx9+eLXvpJLb1ZdUjbgYbGaJtfP57LvvvkG+7LLLgtypU6cgc0LeovPOO+8AyI81HiuxiGqWeQyy+Zq35ed1LDIv9gznfadqEjY20gQJIYQQopDUWxPEWHkLrjp85513Bpm1KeY8nKo0zPkf2PHZ3gbYmStVcZ4dlO1tkFe6qVVtbEXKK9pdd901yIMGDYIQRYfHMTs28hizMdSrV6/QxkEGPMZiQQ3mWA0A06dPD/KIESOqnU/RtT/MlVdeCSD/hv7uu+8GOVUN3KiLFqchSB0vpiHgqvVz5swJMjvqW86jLbfcsoHOsPUybdo0AGXtKpDXzPA9wmM6FrTAz2XWBMXKlPB4Zgd2fo7bNjNnzqzwKxoHaYKEEEIIUUi0CBJCCCFEIWkQc5jB5S+s8i8AzJs3L8iWg4DVbKzOZPUZm7ViVWU5LxE71XE1WlPR8fF4X6w+N2dvrl7Pzpyci0iIomFjjM0WO+64Y5D79+8fZHPEBMpmMjZf87asUufvmbqeTd377LNPkDn/TdVzrHqeReTGG28EkHcFGDNmTJAHDhxY7TsN4Qzd0MTOiSvHswsF3x9s+is6lhOKy9Vwzi02X/P1tucxm8t4W4bNlvbs5ucrO62z2dL2zeO8KWl5d7wQQgghRBOgRZAQQgghColL5WaIbuzc+wDmVtxQMD299x0rb9a8qG/rjfq3bdPi+1d9W29afN8C6t9loFb9W6dFkBBCCCFEW0HmMCGEEEIUEi2ChBBCCFFItAgSQgghRCHRIkgIIYQQhUSLICGEEEIUEi2ChBBCCFFItAgSQgghRCHRIkgIIYQQhUSLICGEEEIUkv8PW1uC7XrxP2QAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# How many images to display.\n", "numbers_to_display = 25\n", "\n", "# Calculate the number of cells that will hold all the images.\n", "num_cells = math.ceil(math.sqrt(numbers_to_display))\n", "\n", "# Make the plot a little bit bigger than default one.\n", "plt.figure(figsize=(10, 10))\n", "\n", "# Go through the first images in a training set and plot them.\n", "for plot_index in range(numbers_to_display):\n", " # Extract image data.\n", " digit = data[plot_index:plot_index + 1].values\n", " digit_label = digit[0][0]\n", " digit_pixels = digit[0][1:]\n", "\n", " # Calculate image size (remember that each picture has square proportions).\n", " image_size = int(math.sqrt(digit_pixels.shape[0]))\n", " \n", " # Convert image vector into the matrix of pixels.\n", " frame = digit_pixels.reshape((image_size, image_size))\n", " \n", " # Plot the image matrix.\n", " plt.subplot(num_cells, num_cells, plot_index + 1)\n", " plt.imshow(frame, cmap='Greys')\n", " plt.title(label_map[digit_label])\n", " plt.tick_params(axis='both', which='both', bottom=False, left=False, labelbottom=False, labelleft=False)\n", "\n", "# Plot all subplots.\n", "plt.subplots_adjust(hspace=0.5, wspace=0.5)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Split the Data Into Training and Test Sets\n", "\n", "In this step we will split our dataset into _training_ and _testing_ subsets (in proportion 80/20%).\n", "\n", "Training data set will be used for training of our model. Testing dataset will be used for validating of the model. All data from testing dataset will be new to model and we may check how accurate are model predictions." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "# Split data set on training and test sets with proportions 80/20.\n", "# Function sample() returns a random sample of items.\n", "pd_train_data = data.sample(frac=0.8)\n", "pd_test_data = data.drop(pd_train_data.index)\n", "\n", "# Convert training and testing data from Pandas to NumPy format.\n", "train_data = pd_train_data.values\n", "test_data = pd_test_data.values\n", "\n", "# Extract training/test labels and features.\n", "num_training_examples = 1000\n", "\n", "x_train = train_data[:num_training_examples, 1:]\n", "y_train = train_data[:num_training_examples, [0]]\n", "\n", "x_test = test_data[:, 1:]\n", "y_test = test_data[:, [0]]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Init and Train MLP Model\n", "\n", "> ☝🏻 This is the place where you might want to play with model configuration.\n", "\n", "> ⚠️ Be aware though that the training of the neural network with current parameters may take up to 15 minutes depending on the hardware. \n", "\n", "- `layers` - configuration of the multilayer perceptron layers (array of numbers where every number represents the number of nayron in specific layer).\n", "- `max_iterations` - this is the maximum number of iterations that gradient descent algorithm will use to find the minimum of a cost function. Low numbers may prevent gradient descent from reaching the minimum. High numbers will make the algorithm work longer without improving its accuracy.\n", "- `regularization_param` - parameter that will fight overfitting. The higher the parameter, the simplier is the model will be.\n", "- `normalize_data` - boolean flag that indicates whether data normalization is needed or not.\n", "- `alpha` - the size of gradient descent steps. You may need to reduce the step size if gradient descent can't find the cost function minimum. " ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Configure neural network.\n", "layers = [\n", " 784, # Input layer - 28x28 input pixels.\n", " 25, # First hidden layer - 25 hidden units.\n", " 10, # Output layer - 10 labels, from 0 to 9.\n", "];\n", "normalize_data = True # Flag that detects whether we want to do features normalization or not.\n", "epsilon = 0.12 # Defines the range for initial theta values.\n", "max_iterations = 350 # Max number of gradient descent iterations.\n", "regularization_param = 2 # Helps to fight model overfitting.\n", "alpha = 0.1 # Gradient descent step size.\n", "\n", "# Init neural network.\n", "multilayer_perceptron = MultilayerPerceptron(x_train, y_train, layers, epsilon, normalize_data)\n", "\n", "# Train neural network.\n", "(thetas, costs) = multilayer_perceptron.train(regularization_param, max_iterations, alpha)\n", "\n", "plt.plot(range(len(costs)), costs)\n", "plt.xlabel('Gradient Steps')\n", "plt.ylabel('Cost')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Illustrate Hidden Layers Perceptrons\n", "\n", "Each perceptron in the hidden layer learned something from the training process. What it learned is represented by input theta parameters for it. Each perceptron in the hidden layer has 28x28 input thetas (one for each input image pizel). Each theta represents how valuable each pixel is for this particuar perceptron. So let's try to plot how valuable each pixel of input image is for each perceptron based on its theta values. " ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "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t13RY8a3qqoxVVW96H9qBE6PrarqHa/f0hFk1PIopRwtaZmqqr40r48lMfeR49uzkePbc5Fj27PR6uObZTMSiUQikUi0JfImKJFIJBKJRFuix8hhiUQikUgkEl1BMkGJRCKRSCTaEnkTlEgkEolEoi3RJbPEAQMGVPPPP78kaciQpnHy2LFjJUn+G/sk6T3veU+0X331VUnStGlN/6ZFF20aS77yyiud9k+dOnWm4xk/fny0+/fvH+3OjmPEiBHR99RTT0V74YUXjvaYMWMkSX379u307zyGiRObmXn//W/Di6tfv37RN3RoI3vw5Zdf1oQJE7q9z8ygQYOqYcOGzdT/2muvSaqPt/uk+ngtskgj+5ISKy12OF7LLNOsbejz9/zzz0cfx/6ll16K9vDhw6Pt75k+fXqn38fxmDy5kSk7ZUqz7t6gQYM6/R2LL9706erTp89Mn0s88cQTo6uqWqjTP3YjDBw4sPIYcnx69+4tqX4O33yzWTuWa8Hn3uMl1dcE1+B8880X7cGDB0uSJkxoGqt7H5Dq48TXeA74GKXmOErSqFHNQtLeYzg3+T7ObY6l9wfOi4UWag7nU0891e3Hd7755qu833AMPHb8vWwPGDAg2l57PP/+TKm+p3LMBw4cKEl6/fXXo2/SpEk8tmiPG9c0HPZc7NWr+RzO9cg56tfwmsHv4Gt5zJ5j/Fx+35NPPtntx1ZqXHe9hrhWFlxwQUn19ci/87y8/PLLkprjJdXPRWfXLr6P+4O/l3+X6mPtuffGG290ejwck9GjR0uqr21fS6T63vze97432p5znBdc548//vgcjW+XboLmn39+bb755pKkDTfcMPqvuuoqSdJ6660Xfddcc020v/CFL0T79ttvl9S84ZCk4447LtpXXHFFp/3e8LhB33LLLdH+wAeaZpZrr712tK+//npJ0p577hl9O+20U7QPOuigaF966aWSpMUWW6zTv/NifM8990T7nHPOmel9G220kSTpiCOOUCtg2LBh+uY3vympvlE+8kijkO8GG2wQfX/6U9PL6qc//Wm0DzjgAEn1yczFddttt0Xb4yJJ5557riTpkEMOib6vf/3r0T799NOjzbHzZswLHxf2Eks07X3+8Y9/SJKefvrp6PvEJz4R7csua5oHn3nmmdH2BZEXVH7Hqquu+h+1AIYMGaIddthBUn18fDHiZsUbFD4E7LLLLpKks88+O/pefPHFaC+55JLRXm211aK95pprSpLuvvvu6PvVr37V6ft+85vfRNtrZ4EFFoi+J55oet+deOKJ0f7c5z4nSXr44YejjxvilltuGW3e2Hnv4g341772tWjvsMMO3X58hw4dqq985SuS6ufSY8ffy/aHPvShaB955JGSpLvuuiv6vIdJ9b2dF90VV1xRkvTXv/41+u6///5or7zyytH+xS9+MdPn+eIuSR//+MejzZtS34Bx/33ggQeizbm76aabRvuXv/ylJGnVVVeNPl6oN9hgg24/tlLjHH3+85+XVL8J+PKXG8ULfP2RpPe9L4yba+flhz9seIN6vKT6jQjft8kmm0T7vPPOk1S/6dx5552jze/mWPta+K9/Natw8Hi8J0jS+eefL0n6+9//Hn377bdftH/yk59E++STT4629wLeS2yxxRbR/shHPjJH49ulm6CBAwfGD/XFUWpO0r/9rWmc/H//93+19xme3Nxcuel++MMfjjYZpD322EOStP3220cffzzvMrkRbrzxxpLqGzcHjhdFXzR5PLzIv//974827z5983T44YdHnweUF5zujP79+wc7wwuRn5R/97tmmZiDDz442h/96Eej7fNw+eWXR58nuFS/qeXE/vSnPy1J+uMf/xh9vHlcbrnlos1j++IXvyhJWmedpgkqzzdvVjxvfvCDpsHoZz7zmWivu+660eZTrW/sTj311Ojbf//91WqYOnWqnn22Ud6Hm5Wfzslscl35JkGSLrroIknSgQceGH3HHntstM2aSfWLzW9/+1tJ0qOPPhp9H/nIR6LNfYMXMTO2vFklOJZ+6CKLt/TSzQoA/I5777032r454l5z2mmndfp93RUDBgyIh0A+APoCxnPCseXNjC98vDjxwZKsGx86rr76akl1lscPU9KsWSFfgDlnyNaz3+uRbBTnyY9//ONoc1/2fu35J9WvL62CwYMH65Of/KSkOvPia9duu+0WfTxH3MfWWGMNSfU1QUbn4osvjvYLL7ww02vIwH/sY02jaLKmPA5fA3hTzuPh5/mhg+rAlVde2el3cD8yW/T4449HH8mZOUXGBCUSiUQikWhL5E1QIpFIJBKJtkSX5LD55psv6ERSyqa2qeNao5fq8pIp0c022yz6SI05Zkiqx56YxqNMwhic++5r1mozdSg1JRHS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aWxXafv3byUt2tb+XUffOZegSuN7tKTBkh5ONd+VCSml8zr6zrkAVRrb70h6PKU0UbX1+1vVYk/mZlRifItaNufr/k/SWEkz2v7dbibZByE1c+hKSmmEpCWKotjs0z6WwJxFjO3cjRjfuRcxtnM35rbxjbIZgUAgEAgEKom4CQoEAoFAIFBJNLUcFggEAoFAIDC7CCYoEAgEAoFAJRE3QYFAIBAIBCqJLpkl9uzZs+jbt68kad55583948ePlyRRWuvfv39ujx07NreHDBkiSZo4cWLuq1vuSFOnTs1tfsf06bXMt+eeey739erVK7f5GT4eft+CC9YzBd9///3cHjeuborZu3fvWX6Hv1eSJkyYkNvdu9dP3ZQpUyRJ3brV7ynnm28+SdLrr7+ud955p35wDYq+ffsWgwYNklT+zQsssIAk6d133819PXv2zG2eq5aWFknl8zBp0qTc5th6HvH7Wltbcx/nB4+H49yvX79Zvu9///vfLMfO4+fx8HcMGFA3/X7rrbdm+X38Ds7Lp5566s2iKD6jBke/fv2KwYMHSyqfA59DjgfXT58+fXJ78uSamfIbb9QNXbnOPeel+pqQpLfffltS+bwuvPDCuc0x5bj7u997773cxznyzjvv5Lbnntc7j3fm30f4uznHONZPP/10w49vnz59ioEDB0oqH/tnPlM77Ndeq3vY8e8cW6+FadPqPnvc47j3zTNPPVPaeynPH9cV91eOsz+D38HP4Dj7mPh37iX8HZx3bvOzeDxjxoxp+LGVamvXe47XqyS98krN25N7F9fPQgvVDZy9/82YMSP38frJMXvzzTdze8yYWoF2rleC+z/HxOuRew3Hmu/zOHH/4GdxTLkX+Jhef71eZJ7X+WeeeaZT49ulm6C+ffvqBz/4gSRp4403zv333HPPLAe++uqr5/avfvWr3B4+fLgk6W9/q/sj+YRJ5R/E7/BGut566+W+L33pS7nNQfTxSNKWW24pSTrkkENy37///e/cvvnmm3N7qaWWklTePHnxv+++umu4LyhSfZPhYvzlL38pSdpxxx3VDBg0aJB22203SeWNYq+99pJUPqeLL754bnPT9GLkBefvf8+FgUsXz5VWWim3fZPMRfvwww/nNseAm/h3v/tdSeWN4ZRTTsntvffeO7fvvPNOSdLTTz/d7u/4/ve/n9uXX375LL+P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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Setup the number of layer we want to display.\n", "# We want to display the first hidden layer.\n", "layer_number = 1 \n", "\n", "# How many perceptrons to display.\n", "num_perceptrons = len(thetas[layer_number - 1])\n", "\n", "# Calculate the number of cells that will hold all the images.\n", "num_cells = math.ceil(math.sqrt(num_perceptrons))\n", "\n", "# Make the plot a little bit bigger than default one.\n", "plt.figure(figsize=(10, 10))\n", "\n", "# Go through the perceptrons plot what they've learnt.\n", "for perceptron_index in range(num_perceptrons):\n", " # Extract perceptron data.\n", " perceptron = thetas[layer_number - 1][perceptron_index][1:]\n", "\n", " # Calculate image size (remember that each picture has square proportions).\n", " image_size = int(math.sqrt(perceptron.shape[0]))\n", " \n", " # Convert image vector into the matrix of pixels.\n", " frame = perceptron.reshape((image_size, image_size))\n", " \n", " # Plot the image matrix.\n", " plt.subplot(num_cells, num_cells, perceptron_index + 1)\n", " plt.imshow(frame, cmap='Greys', vmin=np.amin(frame), vmax=np.amax(frame))\n", " plt.title('Percep. #%s' % perceptron_index)\n", " plt.tick_params(axis='both', which='both', bottom=False, left=False, labelbottom=False, labelleft=False)\n", "\n", "# Plot all subplots.\n", "plt.subplots_adjust(hspace=0.5, wspace=0.5)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Calculate Model Training Precision\n", "\n", "Calculate how many of training and test examples have been classified correctly. Normally we need test precission to be as high as possible. In case if training precision is high and test precission is low it may mean that our model is overfitted (it works really well with the training data set but it is not good at classifying new unknown data from the test dataset). In this case you may want to play with `regularization_param` parameter to fighth the overfitting." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Training Precision: 93.8000%\n", "Test Precision: 80.6000%\n" ] } ], "source": [ "# Make training set predictions.\n", "y_train_predictions = multilayer_perceptron.predict(x_train)\n", "y_test_predictions = multilayer_perceptron.predict(x_test)\n", "\n", "# Check what percentage of them are actually correct.\n", "train_precision = np.sum(y_train_predictions == y_train) / y_train.shape[0] * 100\n", "test_precision = np.sum(y_test_predictions == y_test) / y_test.shape[0] * 100\n", "\n", "print('Training Precision: {:5.4f}%'.format(train_precision))\n", "print('Test Precision: {:5.4f}%'.format(test_precision))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Plot Test Dataset Predictions\n", "\n", "In order to illustrate how our model classifies unknown examples let's plot first 64 predictions for testing dataset. All green clothes on the plot below have been recognized correctly but all the red clothes have not been recognized correctly by our classifier. On top of each image you may see the class that has been recognized on the image." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# How many images to display.\n", "numbers_to_display = 64\n", "\n", "# Calculate the number of cells that will hold all the images.\n", "num_cells = math.ceil(math.sqrt(numbers_to_display))\n", "\n", "# Make the plot a little bit bigger than default one.\n", "plt.figure(figsize=(15, 15))\n", "\n", "# Go through the first images in a test set and plot them.\n", "for plot_index in range(numbers_to_display):\n", " # Extract digit data.\n", " digit_label = y_test[plot_index, 0]\n", " digit_pixels = x_test[plot_index, :]\n", " \n", " # Predicted label.\n", " predicted_label = y_test_predictions[plot_index][0]\n", "\n", " # Calculate image size (remember that each picture has square proportions).\n", " image_size = int(math.sqrt(digit_pixels.shape[0]))\n", " \n", " # Convert image vector into the matrix of pixels.\n", " frame = digit_pixels.reshape((image_size, image_size))\n", " \n", " # Plot the image matrix.\n", " color_map = 'Greens' if predicted_label == digit_label else 'Reds'\n", " plt.subplot(num_cells, num_cells, plot_index + 1)\n", " plt.imshow(frame, cmap=color_map)\n", " plt.title(label_map[predicted_label])\n", " plt.tick_params(axis='both', which='both', bottom=False, left=False, labelbottom=False, labelleft=False)\n", "\n", "# Plot all subplots.\n", "plt.subplots_adjust(hspace=0.5, wspace=0.5)\n", "plt.show()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.0" } }, "nbformat": 4, "nbformat_minor": 2 } ================================================ FILE: pylintrc ================================================ [MASTER] # A comma-separated list of package or module names from where C extensions may # be loaded. Extensions are loading into the active Python interpreter and may # run arbitrary code. extension-pkg-whitelist= # Add files or directories to the blacklist. They should be base names, not # paths. ignore=CVS # Add files or directories matching the regex patterns to the blacklist. The # regex matches against base names, not paths. ignore-patterns= # Python code to execute, usually for sys.path manipulation such as # pygtk.require(). #init-hook= # Use multiple processes to speed up Pylint. Specifying 0 will auto-detect the # number of processors available to use. jobs=1 # Control the amount of potential inferred values when inferring a single # object. This can help the performance when dealing with large functions or # complex, nested conditions. limit-inference-results=100 # List of plugins (as comma separated values of python modules names) to load, # usually to register additional checkers. load-plugins= # Pickle collected data for later comparisons. persistent=yes # Specify a configuration file. #rcfile= # When enabled, pylint would attempt to guess common misconfiguration and emit # user-friendly hints instead of false-positive error messages. suggestion-mode=yes # Allow loading of arbitrary C extensions. Extensions are imported into the # active Python interpreter and may run arbitrary code. unsafe-load-any-extension=no [MESSAGES CONTROL] # Only show warnings with the listed confidence levels. Leave empty to show # all. Valid levels: HIGH, INFERENCE, INFERENCE_FAILURE, UNDEFINED. confidence= # Disable the message, report, category or checker with the given id(s). You # can either give multiple identifiers separated by comma (,) or put this # option multiple times (only on the command line, not in the configuration # file where it should appear only once). You can also use "--disable=all" to # disable everything first and then reenable specific checks. For example, if # you want to run only the similarities checker, you can use "--disable=all # --enable=similarities". If you want to run only the classes checker, but have # no Warning level messages displayed, use "--disable=all --enable=classes # --disable=W". disable=print-statement, parameter-unpacking, unpacking-in-except, old-raise-syntax, backtick, long-suffix, old-ne-operator, old-octal-literal, import-star-module-level, non-ascii-bytes-literal, raw-checker-failed, bad-inline-option, locally-disabled, locally-enabled, file-ignored, suppressed-message, useless-suppression, deprecated-pragma, use-symbolic-message-instead, apply-builtin, basestring-builtin, buffer-builtin, cmp-builtin, coerce-builtin, execfile-builtin, file-builtin, long-builtin, raw_input-builtin, reduce-builtin, standarderror-builtin, unicode-builtin, xrange-builtin, coerce-method, delslice-method, getslice-method, setslice-method, no-absolute-import, old-division, dict-iter-method, dict-view-method, next-method-called, metaclass-assignment, indexing-exception, raising-string, reload-builtin, oct-method, hex-method, nonzero-method, cmp-method, input-builtin, round-builtin, intern-builtin, unichr-builtin, map-builtin-not-iterating, zip-builtin-not-iterating, range-builtin-not-iterating, filter-builtin-not-iterating, using-cmp-argument, eq-without-hash, div-method, idiv-method, rdiv-method, exception-message-attribute, invalid-str-codec, sys-max-int, bad-python3-import, deprecated-string-function, deprecated-str-translate-call, deprecated-itertools-function, deprecated-types-field, next-method-defined, dict-items-not-iterating, dict-keys-not-iterating, dict-values-not-iterating, deprecated-operator-function, deprecated-urllib-function, xreadlines-attribute, deprecated-sys-function, exception-escape, comprehension-escape # Enable the message, report, category or checker with the given id(s). You can # either give multiple identifier separated by comma (,) or put this option # multiple time (only on the command line, not in the configuration file where # it should appear only once). See also the "--disable" option for examples. enable=c-extension-no-member [REPORTS] # Python expression which should return a note less than 10 (10 is the highest # note). You have access to the variables errors warning, statement which # respectively contain the number of errors / warnings messages and the total # number of statements analyzed. This is used by the global evaluation report # (RP0004). evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10) # Template used to display messages. This is a python new-style format string # used to format the message information. See doc for all details. #msg-template= # Set the output format. Available formats are text, parseable, colorized, json # and msvs (visual studio). You can also give a reporter class, e.g. # mypackage.mymodule.MyReporterClass. output-format=text # Tells whether to display a full report or only the messages. reports=no # Activate the evaluation score. score=yes [REFACTORING] # Maximum number of nested blocks for function / method body max-nested-blocks=5 # Complete name of functions that never returns. When checking for # inconsistent-return-statements if a never returning function is called then # it will be considered as an explicit return statement and no message will be # printed. never-returning-functions=sys.exit [LOGGING] # Logging modules to check that the string format arguments are in logging # function parameter format. logging-modules=logging [SPELLING] # Limits count of emitted suggestions for spelling mistakes. max-spelling-suggestions=4 # Spelling dictionary name. Available dictionaries: none. To make it working # install python-enchant package.. spelling-dict= # List of comma separated words that should not be checked. spelling-ignore-words= # A path to a file that contains private dictionary; one word per line. spelling-private-dict-file= # Tells whether to store unknown words to indicated private dictionary in # --spelling-private-dict-file option instead of raising a message. spelling-store-unknown-words=no [MISCELLANEOUS] # List of note tags to take in consideration, separated by a comma. notes=FIXME, XXX, TODO [TYPECHECK] # List of decorators that produce context managers, such as # contextlib.contextmanager. Add to this list to register other decorators that # produce valid context managers. contextmanager-decorators=contextlib.contextmanager # List of members which are set dynamically and missed by pylint inference # system, and so shouldn't trigger E1101 when accessed. Python regular # expressions are accepted. generated-members= # Tells whether missing members accessed in mixin class should be ignored. A # mixin class is detected if its name ends with "mixin" (case insensitive). ignore-mixin-members=yes # Tells whether to warn about missing members when the owner of the attribute # is inferred to be None. ignore-none=yes # This flag controls whether pylint should warn about no-member and similar # checks whenever an opaque object is returned when inferring. The inference # can return multiple potential results while evaluating a Python object, but # some branches might not be evaluated, which results in partial inference. In # that case, it might be useful to still emit no-member and other checks for # the rest of the inferred objects. ignore-on-opaque-inference=yes # List of class names for which member attributes should not be checked (useful # for classes with dynamically set attributes). This supports the use of # qualified names. ignored-classes=optparse.Values,thread._local,_thread._local # List of module names for which member attributes should not be checked # (useful for modules/projects where namespaces are manipulated during runtime # and thus existing member attributes cannot be deduced by static analysis. It # supports qualified module names, as well as Unix pattern matching. ignored-modules= # Show a hint with possible names when a member name was not found. The aspect # of finding the hint is based on edit distance. missing-member-hint=yes # The minimum edit distance a name should have in order to be considered a # similar match for a missing member name. missing-member-hint-distance=1 # The total number of similar names that should be taken in consideration when # showing a hint for a missing member. missing-member-max-choices=1 [VARIABLES] # List of additional names supposed to be defined in builtins. Remember that # you should avoid to define new builtins when possible. additional-builtins= # Tells whether unused global variables should be treated as a violation. allow-global-unused-variables=yes # List of strings which can identify a callback function by name. A callback # name must start or end with one of those strings. callbacks=cb_, _cb # A regular expression matching the name of dummy variables (i.e. expected to # not be used). dummy-variables-rgx=_+$|(_[a-zA-Z0-9_]*[a-zA-Z0-9]+?$)|dummy|^ignored_|^unused_ # Argument names that match this expression will be ignored. Default to name # with leading underscore. ignored-argument-names=_.*|^ignored_|^unused_ # Tells whether we should check for unused import in __init__ files. init-import=no # List of qualified module names which can have objects that can redefine # builtins. redefining-builtins-modules=six.moves,past.builtins,future.builtins,builtins,io [FORMAT] # Expected format of line ending, e.g. empty (any line ending), LF or CRLF. expected-line-ending-format= # Regexp for a line that is allowed to be longer than the limit. ignore-long-lines=^\s*(# )??$ # Number of spaces of indent required inside a hanging or continued line. indent-after-paren=4 # String used as indentation unit. This is usually " " (4 spaces) or "\t" (1 # tab). indent-string=' ' # Maximum number of characters on a single line. max-line-length=100 # Maximum number of lines in a module. max-module-lines=1000 # List of optional constructs for which whitespace checking is disabled. `dict- # separator` is used to allow tabulation in dicts, etc.: {1 : 1,\n222: 2}. # `trailing-comma` allows a space between comma and closing bracket: (a, ). # `empty-line` allows space-only lines. no-space-check=trailing-comma, dict-separator # Allow the body of a class to be on the same line as the declaration if body # contains single statement. single-line-class-stmt=no # Allow the body of an if to be on the same line as the test if there is no # else. single-line-if-stmt=no [SIMILARITIES] # Ignore comments when computing similarities. ignore-comments=yes # Ignore docstrings when computing similarities. ignore-docstrings=yes # Ignore imports when computing similarities. ignore-imports=no # Minimum lines number of a similarity. min-similarity-lines=4 [BASIC] # Naming style matching correct argument names. argument-naming-style=snake_case # Regular expression matching correct argument names. Overrides argument- # naming-style. #argument-rgx= # Naming style matching correct attribute names. attr-naming-style=snake_case # Regular expression matching correct attribute names. Overrides attr-naming- # style. #attr-rgx= # Bad variable names which should always be refused, separated by a comma. bad-names=foo, bar, baz, toto, tutu, tata # Naming style matching correct class attribute names. class-attribute-naming-style=any # Regular expression matching correct class attribute names. Overrides class- # attribute-naming-style. #class-attribute-rgx= # Naming style matching correct class names. class-naming-style=PascalCase # Regular expression matching correct class names. Overrides class-naming- # style. #class-rgx= # Naming style matching correct constant names. const-naming-style=UPPER_CASE # Regular expression matching correct constant names. Overrides const-naming- # style. #const-rgx= # Minimum line length for functions/classes that require docstrings, shorter # ones are exempt. docstring-min-length=-1 # Naming style matching correct function names. function-naming-style=snake_case # Regular expression matching correct function names. Overrides function- # naming-style. #function-rgx= # Good variable names which should always be accepted, separated by a comma. good-names=i, j, k, ex, Run, _ # Include a hint for the correct naming format with invalid-name. include-naming-hint=no # Naming style matching correct inline iteration names. inlinevar-naming-style=any # Regular expression matching correct inline iteration names. Overrides # inlinevar-naming-style. #inlinevar-rgx= # Naming style matching correct method names. method-naming-style=snake_case # Regular expression matching correct method names. Overrides method-naming- # style. #method-rgx= # Naming style matching correct module names. module-naming-style=snake_case # Regular expression matching correct module names. Overrides module-naming- # style. #module-rgx= # Colon-delimited sets of names that determine each other's naming style when # the name regexes allow several styles. name-group= # Regular expression which should only match function or class names that do # not require a docstring. no-docstring-rgx=^_ # List of decorators that produce properties, such as abc.abstractproperty. Add # to this list to register other decorators that produce valid properties. # These decorators are taken in consideration only for invalid-name. property-classes=abc.abstractproperty # Naming style matching correct variable names. variable-naming-style=snake_case # Regular expression matching correct variable names. Overrides variable- # naming-style. #variable-rgx= [IMPORTS] # Allow wildcard imports from modules that define __all__. allow-wildcard-with-all=no # Analyse import fallback blocks. This can be used to support both Python 2 and # 3 compatible code, which means that the block might have code that exists # only in one or another interpreter, leading to false positives when analysed. analyse-fallback-blocks=no # Deprecated modules which should not be used, separated by a comma. deprecated-modules=optparse,tkinter.tix # Create a graph of external dependencies in the given file (report RP0402 must # not be disabled). ext-import-graph= # Create a graph of every (i.e. internal and external) dependencies in the # given file (report RP0402 must not be disabled). import-graph= # Create a graph of internal dependencies in the given file (report RP0402 must # not be disabled). int-import-graph= # Force import order to recognize a module as part of the standard # compatibility libraries. known-standard-library= # Force import order to recognize a module as part of a third party library. known-third-party=enchant [CLASSES] # List of method names used to declare (i.e. assign) instance attributes. defining-attr-methods=__init__, __new__, setUp # List of member names, which should be excluded from the protected access # warning. exclude-protected=_asdict, _fields, _replace, _source, _make # List of valid names for the first argument in a class method. valid-classmethod-first-arg=cls # List of valid names for the first argument in a metaclass class method. valid-metaclass-classmethod-first-arg=cls [DESIGN] # Maximum number of arguments for function / method. max-args=5 # Maximum number of attributes for a class (see R0902). max-attributes=7 # Maximum number of boolean expressions in an if statement. max-bool-expr=5 # Maximum number of branch for function / method body. max-branches=12 # Maximum number of locals for function / method body. max-locals=15 # Maximum number of parents for a class (see R0901). max-parents=7 # Maximum number of public methods for a class (see R0904). max-public-methods=20 # Maximum number of return / yield for function / method body. max-returns=6 # Maximum number of statements in function / method body. max-statements=50 # Minimum number of public methods for a class (see R0903). min-public-methods=2 [EXCEPTIONS] # Exceptions that will emit a warning when being caught. Defaults to # "Exception". overgeneral-exceptions=Exception ================================================ FILE: requirements.txt ================================================ jupyter==1.0.0 matplotlib==3.0.1 numpy==1.15.3 pandas==0.23.4 plotly==3.4.1 pylint==2.1.1 scipy==1.1.0