From 38da1dc56e79f5f9d47ef93c2903eebbc9cfa858 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20Quispe?= <47084770+RubenMcCarty@users.noreply.github.com> Date: Sat, 28 Nov 2020 10:50:33 -0500 Subject: [PATCH 01/51] Hola mundo de ML con DL --- ...achine Learning con Redes neuronales.ipynb | 1252 +++++++++++++++++ 1 file changed, 1252 insertions(+) create mode 100644 Lab_00_Hello World de Machine Learning con Redes neuronales.ipynb diff --git a/Lab_00_Hello World de Machine Learning con Redes neuronales.ipynb b/Lab_00_Hello World de Machine Learning con Redes neuronales.ipynb new file mode 100644 index 0000000..ca4e463 --- /dev/null +++ b/Lab_00_Hello World de Machine Learning con Redes neuronales.ipynb @@ -0,0 +1,1252 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# HOLA MUNDO DE MACHINE LEARNING CON REDES NEURONALES\n", + "## Creado por [M.Sc. Ruben Quispe](https://machinelearningmastery.com/tutorial-to-implement-k-nearest-neighbors-in-python-from-scratch/)\n", + "### Curso [Machine Learning](https://eie.pe/curso-machine-learning/)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Iniciamos con Hola Mundo, para este caso crearemos redes neuronales, vamos a mostrar el siguiente ejemplo:\n", + "Como cada primera aplicación, debe comenzar con algo súper simple que muestre el andamio general de cómo funciona su código.\n", + "\n", + "En el caso de crear redes neuronales, la muestra que me gusta usar es una en la que aprende la relación entre dos números. Entonces, por ejemplo, si estuviera escribiendo código para una función como esta, ya conoce las 'reglas'\n", + "* X = -1, 0, 1, 2, 3, 4, .....10\n", + "* Y = -3, -1, 1, 3, 5, 7, .....19\n", + "* ENCONTRAR LA ECUACIÓN DE Y = 2X-1\n", + "Esto se puede hacer en c como:\n", + "```\n", + "float hw_function(float x){\n", + " float y = (2 * x) - 1;\n", + " return y;\n", + "}\n", + "```\n", + "\n", + "Entonces, ¿cómo entrenaría una red neuronal para hacer la tarea equivalente? ¡Usando datos! Al alimentarlo con un conjunto de X y un conjunto de Y, debería poder averiguar la relación entre ellos.\n", + "\n", + "Obviamente, este es un paradigma muy diferente al que podría estar acostumbrado, así que vamos a analizarlo pieza por pieza." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Imports\n", + "Comencemos con nuestras importaciones. Aquí estamos importando TensorFlow y lo llamamos __tf__ para facilitar su uso.\n", + "\n", + "Luego importamos una biblioteca llamada numpy, que nos ayuda a representar nuestros datos como listas de manera fácil y rápida.\n", + "\n", + "El marco para definir una red neuronal como un conjunto de capas secuenciales se llama keras, por lo que también lo importamos." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "# Importa las librerias\n", + "import tensorflow as tf\n", + "import numpy as np\n", + "from tensorflow import keras" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Definir y compilar nuestra red neuronal\n", + "A continuación, crearemos la red neuronal más simple posible. Tiene 1 capa, y esa capa tiene 1 neurona, y la forma de entrada es solo 1 valor." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "model = tf.keras.Sequential([keras.layers.Dense(units=1, input_shape=[1])])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Ahora compilamos nuestra red neuronal. Cuando lo hacemos, tenemos que especificar 2 funciones, una función de pérdida y un optimizador.\n", + "\n", + "Si ha visto muchas matemáticas para el aprendizaje automático, aquí es donde se usa generalmente, pero en este caso está muy bien encapsulado en funciones para usted. Pero qué pasa aquí, expliquemos ...\n", + "\n", + "Sabemos que en nuestra función, la relación entre los números es y = 2x-1.\n", + "\n", + "Cuando la computadora está tratando de 'aprender' eso, hace una suposición ... tal vez y = 10x + 10. La función de PÉRDIDA mide las respuestas adivinadas contra las respuestas correctas conocidas y mide qué tan bien o qué mal lo hizo.\n", + "\n", + "Luego usa la función OPTIMIZER para hacer otra conjetura. Según cómo fue la función de pérdida, intentará minimizar la pérdida. En ese punto, tal vez se le ocurra algo como y = 5x + 5, que, aunque sigue siendo bastante malo, está más cerca del resultado correcto (es decir, la pérdida es menor)\n", + "\n", + "Repetirá esto para el número de EPOCHS que verá en breve. Pero primero, así es como le decimos que use 'ERROR AL CUADRADO MEDIO' para la pérdida y 'DESCENSO DE GRADIENTE ESTOCÁSTICO' para el optimizador. No es necesario que entiendas las matemáticas para estos todavía, ¡pero puedes ver que funcionan! :)\n", + "\n", + "Con el tiempo, aprenderá las diferentes y apropiadas funciones de optimización y pérdida para diferentes escenarios.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "# desenso gradiente stocastico SGD\n", + "model.compile(optimizer='sgd', loss='mean_squared_error')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Proporcionando datos\n", + "A continuación, incluiremos algunos datos. En este caso, estamos tomando 6 xs y 6ys. Puede ver que la relación entre estos es que y = 2x-1, entonces donde x = -1, y = -3 etc.etc.\n", + "\n", + "Una biblioteca de Python llamada 'Numpy' proporciona muchas estructuras de datos de tipo matriz que son una forma estándar de facto de hacerlo. Declaramos que queremos usarlos especificando los valores como np.array []" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "# Proporcionar los datos\n", + "\n", + "xs = np.array([-1.0, 0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0,9.0,10.0], dtype=float)\n", + "ys = np.array([-3.0, -1.0, 1.0, 3.0, 5.0, 7.0, 9.0, 11.0,13.0,15.0,17.0,19.0], dtype=float)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Training nuestra red neuronal\n", + "El proceso de entrenamiento de la red neuronal, donde 'aprende' la relación entre las X y las Y, está en la llamada model.fit. Aquí es donde pasará por el ciclo del que hablamos anteriormente, haciendo una suposición, midiendo qué tan bueno o malo es (también conocido como la pérdida), usando el opimizador para hacer otra suposición, etc. Lo hará por la cantidad de épocas que usted especificar. Cuando ejecute este código, verá la pérdida en el lado derecho." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/500\n", + "1/1 [==============================] - 0s 7ms/step - loss: 139.7114\n", + "Epoch 2/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 17.0599\n", + "Epoch 3/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 2.5438\n", + "Epoch 4/500\n", + "1/1 [==============================] - 0s 9ms/step - loss: 0.8191\n", + "Epoch 5/500\n", + "1/1 [==============================] - 0s 7ms/step - loss: 0.6076\n", + "Epoch 6/500\n", + "1/1 [==============================] - 0s 7ms/step - loss: 0.5751\n", + "Epoch 7/500\n", + "1/1 [==============================] - 0s 8ms/step - loss: 0.5640\n", + "Epoch 8/500\n", + "1/1 [==============================] - 0s 11ms/step - loss: 0.5555\n", + "Epoch 9/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.5474\n", + "Epoch 10/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.5395\n", + "Epoch 11/500\n", + "1/1 [==============================] - 0s 10ms/step - loss: 0.5317\n", + "Epoch 12/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.5240\n", + "Epoch 13/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.5164\n", + "Epoch 14/500\n", + "1/1 [==============================] - 0s 998us/step - loss: 0.5089\n", + "Epoch 15/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.5016\n", + "Epoch 16/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.4943\n", + "Epoch 17/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.4872\n", + "Epoch 18/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.4801\n", + "Epoch 19/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.4732\n", + "Epoch 20/500\n", + "1/1 [==============================] - 0s 6ms/step - loss: 0.4663\n", + "Epoch 21/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.4595\n", + "Epoch 22/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.4529\n", + "Epoch 23/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.4463\n", + "Epoch 24/500\n", + "1/1 [==============================] - 0s 7ms/step - loss: 0.4399\n", + "Epoch 25/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.4335\n", + "Epoch 26/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.4272\n", + "Epoch 27/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.4210\n", + "Epoch 28/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.4150\n", + "Epoch 29/500\n", + "1/1 [==============================] - 0s 6ms/step - loss: 0.4089\n", + "Epoch 30/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.4030\n", + "Epoch 31/500\n", + "1/1 [==============================] - 0s 6ms/step - loss: 0.3972\n", + "Epoch 32/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.3914\n", + "Epoch 33/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.3858\n", + "Epoch 34/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.3802\n", + "Epoch 35/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.3747\n", + "Epoch 36/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.3693\n", + "Epoch 37/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.3639\n", + "Epoch 38/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.3586\n", + "Epoch 39/500\n", + "1/1 [==============================] - 0s 1ms/step - loss: 0.3534\n", + "Epoch 40/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.3483\n", + "Epoch 41/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.3433\n", + "Epoch 42/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.3383\n", + "Epoch 43/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.3334\n", + "Epoch 44/500\n", + "1/1 [==============================] - 0s 8ms/step - loss: 0.3286\n", + "Epoch 45/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.3238\n", + "Epoch 46/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.3191\n", + "Epoch 47/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.3145\n", + "Epoch 48/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.3100\n", + "Epoch 49/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.3055\n", + "Epoch 50/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.3011\n", + "Epoch 51/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.2967\n", + "Epoch 52/500\n", + "1/1 [==============================] - 0s 8ms/step - loss: 0.2924\n", + "Epoch 53/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.2882\n", + "Epoch 54/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.2840\n", + "Epoch 55/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.2799\n", + "Epoch 56/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.2758\n", + "Epoch 57/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.2718\n", + "Epoch 58/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.2679\n", + "Epoch 59/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.2640\n", + "Epoch 60/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.2602\n", + "Epoch 61/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.2564\n", + "Epoch 62/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.2527\n", + "Epoch 63/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.2491\n", + "Epoch 64/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.2455\n", + "Epoch 65/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.2419\n", + "Epoch 66/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.2384\n", + "Epoch 67/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.2350\n", + "Epoch 68/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.2316\n", + "Epoch 69/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.2282\n", + "Epoch 70/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.2249\n", + "Epoch 71/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.2216\n", + "Epoch 72/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.2184\n", + "Epoch 73/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.2153\n", + "Epoch 74/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.2121\n", + "Epoch 75/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.2091\n", + "Epoch 76/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.2061\n", + "Epoch 77/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.2031\n", + "Epoch 78/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.2001\n", + "Epoch 79/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.1972\n", + "Epoch 80/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.1944\n", + "Epoch 81/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.1916\n", + "Epoch 82/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.1888\n", + "Epoch 83/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.1861\n", + "Epoch 84/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.1834\n", + "Epoch 85/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.1807\n", + "Epoch 86/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.1781\n", + "Epoch 87/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.1755\n", + "Epoch 88/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.1730\n", + "Epoch 89/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.1705\n", + "Epoch 90/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.1680\n", + "Epoch 91/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.1656\n", + "Epoch 92/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.1632\n", + "Epoch 93/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.1608\n", + "Epoch 94/500\n", + "1/1 [==============================] - 0s 998us/step - loss: 0.1585\n", + "Epoch 95/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.1562\n", + "Epoch 96/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.1539\n", + "Epoch 97/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.1517\n", + "Epoch 98/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.1495\n", + "Epoch 99/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.1473\n", + "Epoch 100/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.1452\n", + "Epoch 101/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.1431\n", + "Epoch 102/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.1410\n", + "Epoch 103/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.1390\n", + "Epoch 104/500\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1/1 [==============================] - 0s 4ms/step - loss: 0.1370\n", + "Epoch 105/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.1350\n", + "Epoch 106/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.1330\n", + "Epoch 107/500\n", + "1/1 [==============================] - 0s 6ms/step - loss: 0.1311\n", + "Epoch 108/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.1292\n", + "Epoch 109/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.1273\n", + "Epoch 110/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.1255\n", + "Epoch 111/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.1237\n", + "Epoch 112/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.1219\n", + "Epoch 113/500\n", + "1/1 [==============================] - ETA: 0s - loss: 0.120 - 0s 3ms/step - loss: 0.1201\n", + "Epoch 114/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.1184\n", + "Epoch 115/500\n", + "1/1 [==============================] - 0s 9ms/step - loss: 0.1167\n", + "Epoch 116/500\n", + "1/1 [==============================] - 0s 6ms/step - loss: 0.1150\n", + "Epoch 117/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.1133\n", + "Epoch 118/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.1117\n", + "Epoch 119/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.1101\n", + "Epoch 120/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.1085\n", + "Epoch 121/500\n", + "1/1 [==============================] - ETA: 0s - loss: 0.106 - 0s 7ms/step - loss: 0.1069\n", + "Epoch 122/500\n", + "1/1 [==============================] - ETA: 0s - loss: 0.105 - 0s 4ms/step - loss: 0.1053\n", + "Epoch 123/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.1038\n", + "Epoch 124/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.1023\n", + "Epoch 125/500\n", + "1/1 [==============================] - 0s 7ms/step - loss: 0.1008\n", + "Epoch 126/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0994\n", + "Epoch 127/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0979\n", + "Epoch 128/500\n", + "1/1 [==============================] - 0s 6ms/step - loss: 0.0965\n", + "Epoch 129/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0951\n", + "Epoch 130/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0937\n", + "Epoch 131/500\n", + "1/1 [==============================] - 0s 6ms/step - loss: 0.0924\n", + "Epoch 132/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.0911\n", + "Epoch 133/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0897\n", + "Epoch 134/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.0884\n", + "Epoch 135/500\n", + "1/1 [==============================] - 0s 8ms/step - loss: 0.0872\n", + "Epoch 136/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.0859\n", + "Epoch 137/500\n", + "1/1 [==============================] - 0s 6ms/step - loss: 0.0846\n", + "Epoch 138/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0834\n", + "Epoch 139/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0822\n", + "Epoch 140/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0810\n", + "Epoch 141/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0799\n", + "Epoch 142/500\n", + "1/1 [==============================] - 0s 8ms/step - loss: 0.0787\n", + "Epoch 143/500\n", + "1/1 [==============================] - 0s 8ms/step - loss: 0.0776\n", + "Epoch 144/500\n", + "1/1 [==============================] - 0s 6ms/step - loss: 0.0764\n", + "Epoch 145/500\n", + "1/1 [==============================] - 0s 7ms/step - loss: 0.0753\n", + "Epoch 146/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.0742\n", + "Epoch 147/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0732\n", + "Epoch 148/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.0721\n", + "Epoch 149/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0711\n", + "Epoch 150/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0700\n", + "Epoch 151/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.0690\n", + "Epoch 152/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0680\n", + "Epoch 153/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0670\n", + "Epoch 154/500\n", + "1/1 [==============================] - 0s 7ms/step - loss: 0.0661\n", + "Epoch 155/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.0651\n", + "Epoch 156/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0642\n", + "Epoch 157/500\n", + "1/1 [==============================] - 0s 6ms/step - loss: 0.0632\n", + "Epoch 158/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0623\n", + "Epoch 159/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0614\n", + "Epoch 160/500\n", + "1/1 [==============================] - 0s 7ms/step - loss: 0.0605\n", + "Epoch 161/500\n", + "1/1 [==============================] - 0s 7ms/step - loss: 0.0596\n", + "Epoch 162/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0588\n", + "Epoch 163/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.0579\n", + "Epoch 164/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.0571\n", + "Epoch 165/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0563\n", + "Epoch 166/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0555\n", + "Epoch 167/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0547\n", + "Epoch 168/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.0539\n", + "Epoch 169/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0531\n", + "Epoch 170/500\n", + "1/1 [==============================] - 0s 1ms/step - loss: 0.0523\n", + "Epoch 171/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0516\n", + "Epoch 172/500\n", + "1/1 [==============================] - 0s 9ms/step - loss: 0.0508\n", + "Epoch 173/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0501\n", + "Epoch 174/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0493\n", + "Epoch 175/500\n", + "1/1 [==============================] - 0s 6ms/step - loss: 0.0486\n", + "Epoch 176/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.0479\n", + "Epoch 177/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0472\n", + "Epoch 178/500\n", + "1/1 [==============================] - 0s 6ms/step - loss: 0.0466\n", + "Epoch 179/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0459\n", + "Epoch 180/500\n", + "1/1 [==============================] - ETA: 0s - loss: 0.045 - 0s 3ms/step - loss: 0.0452\n", + "Epoch 181/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.0446\n", + "Epoch 182/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0439\n", + "Epoch 183/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0433\n", + "Epoch 184/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.0427\n", + "Epoch 185/500\n", + "1/1 [==============================] - 0s 6ms/step - loss: 0.0420\n", + "Epoch 186/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0414\n", + "Epoch 187/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.0408\n", + "Epoch 188/500\n", + "1/1 [==============================] - 0s 1ms/step - loss: 0.0402\n", + "Epoch 189/500\n", + "1/1 [==============================] - 0s 6ms/step - loss: 0.0397\n", + "Epoch 190/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0391\n", + "Epoch 191/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.0385\n", + "Epoch 192/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0380\n", + "Epoch 193/500\n", + "1/1 [==============================] - 0s 6ms/step - loss: 0.0374\n", + "Epoch 194/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0369\n", + "Epoch 195/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0363\n", + "Epoch 196/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0358\n", + "Epoch 197/500\n", + "1/1 [==============================] - 0s 1ms/step - loss: 0.0353\n", + "Epoch 198/500\n", + "1/1 [==============================] - 0s 6ms/step - loss: 0.0348\n", + "Epoch 199/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0343\n", + "Epoch 200/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.0338\n", + "Epoch 201/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0333\n", + "Epoch 202/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0328\n", + "Epoch 203/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0323\n", + "Epoch 204/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0319\n", + "Epoch 205/500\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1/1 [==============================] - 0s 8ms/step - loss: 0.0314\n", + "Epoch 206/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0309\n", + "Epoch 207/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0305\n", + "Epoch 208/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0301\n", + "Epoch 209/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.0296\n", + "Epoch 210/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0292\n", + "Epoch 211/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0288\n", + "Epoch 212/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0284\n", + "Epoch 213/500\n", + "1/1 [==============================] - 0s 8ms/step - loss: 0.0279\n", + "Epoch 214/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.0275\n", + "Epoch 215/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0271\n", + "Epoch 216/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.0267\n", + "Epoch 217/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0264\n", + "Epoch 218/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0260\n", + "Epoch 219/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0256\n", + "Epoch 220/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.0252\n", + "Epoch 221/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.0249\n", + "Epoch 222/500\n", + "1/1 [==============================] - 0s 7ms/step - loss: 0.0245\n", + "Epoch 223/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0241\n", + "Epoch 224/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0238\n", + "Epoch 225/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0235\n", + "Epoch 226/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0231\n", + "Epoch 227/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0228\n", + "Epoch 228/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.0225\n", + "Epoch 229/500\n", + "1/1 [==============================] - 0s 6ms/step - loss: 0.0221\n", + "Epoch 230/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0218\n", + "Epoch 231/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.0215\n", + "Epoch 232/500\n", + "1/1 [==============================] - 0s 7ms/step - loss: 0.0212\n", + "Epoch 233/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0209\n", + "Epoch 234/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0206\n", + "Epoch 235/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0203\n", + "Epoch 236/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0200\n", + "Epoch 237/500\n", + "1/1 [==============================] - 0s 6ms/step - loss: 0.0197\n", + "Epoch 238/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0194\n", + "Epoch 239/500\n", + "1/1 [==============================] - 0s 9ms/step - loss: 0.0191\n", + "Epoch 240/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.0188\n", + "Epoch 241/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0186\n", + "Epoch 242/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0183\n", + "Epoch 243/500\n", + "1/1 [==============================] - 0s 7ms/step - loss: 0.0180\n", + "Epoch 244/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0178\n", + "Epoch 245/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0175\n", + "Epoch 246/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0173\n", + "Epoch 247/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0170\n", + "Epoch 248/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0168\n", + "Epoch 249/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.0165\n", + "Epoch 250/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0163\n", + "Epoch 251/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0161\n", + "Epoch 252/500\n", + "1/1 [==============================] - 0s 9ms/step - loss: 0.0158\n", + "Epoch 253/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.0156\n", + "Epoch 254/500\n", + "1/1 [==============================] - 0s 7ms/step - loss: 0.0154\n", + "Epoch 255/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0151\n", + "Epoch 256/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0149\n", + "Epoch 257/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0147\n", + "Epoch 258/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0145\n", + "Epoch 259/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0143\n", + "Epoch 260/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.0141\n", + "Epoch 261/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0139\n", + "Epoch 262/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0137\n", + "Epoch 263/500\n", + "1/1 [==============================] - 0s 6ms/step - loss: 0.0135\n", + "Epoch 264/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0133\n", + "Epoch 265/500\n", + "1/1 [==============================] - 0s 8ms/step - loss: 0.0131\n", + "Epoch 266/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0129\n", + "Epoch 267/500\n", + "1/1 [==============================] - 0s 7ms/step - loss: 0.0127\n", + "Epoch 268/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0125\n", + "Epoch 269/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0123\n", + "Epoch 270/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0122\n", + "Epoch 271/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0120\n", + "Epoch 272/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.0118\n", + "Epoch 273/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.0116\n", + "Epoch 274/500\n", + "1/1 [==============================] - ETA: 0s - loss: 0.011 - 0s 2ms/step - loss: 0.0115\n", + "Epoch 275/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0113\n", + "Epoch 276/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0111\n", + "Epoch 277/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0110\n", + "Epoch 278/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0108\n", + "Epoch 279/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.0107\n", + "Epoch 280/500\n", + "1/1 [==============================] - ETA: 0s - loss: 0.010 - 0s 3ms/step - loss: 0.0105\n", + "Epoch 281/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0104\n", + "Epoch 282/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0102\n", + "Epoch 283/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0101\n", + "Epoch 284/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0099\n", + "Epoch 285/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0098\n", + "Epoch 286/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0096\n", + "Epoch 287/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0095\n", + "Epoch 288/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0094\n", + "Epoch 289/500\n", + "1/1 [==============================] - 0s 10ms/step - loss: 0.0092\n", + "Epoch 290/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0091\n", + "Epoch 291/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0090\n", + "Epoch 292/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.0088\n", + "Epoch 293/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.0087\n", + "Epoch 294/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.0086\n", + "Epoch 295/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0085\n", + "Epoch 296/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0083\n", + "Epoch 297/500\n", + "1/1 [==============================] - 0s 7ms/step - loss: 0.0082\n", + "Epoch 298/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0081\n", + "Epoch 299/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.0080\n", + "Epoch 300/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0079\n", + "Epoch 301/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0077\n", + "Epoch 302/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0076\n", + "Epoch 303/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0075\n", + "Epoch 304/500\n", + "1/1 [==============================] - 0s 10ms/step - loss: 0.0074\n", + "Epoch 305/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0073\n", + "Epoch 306/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0072\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 307/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0071\n", + "Epoch 308/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0070\n", + "Epoch 309/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0069\n", + "Epoch 310/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0068\n", + "Epoch 311/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0067\n", + "Epoch 312/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0066\n", + "Epoch 313/500\n", + "1/1 [==============================] - 0s 10ms/step - loss: 0.0065\n", + "Epoch 314/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0064\n", + "Epoch 315/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0063\n", + "Epoch 316/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.0062\n", + "Epoch 317/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0061\n", + "Epoch 318/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0060\n", + "Epoch 319/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0060\n", + "Epoch 320/500\n", + "1/1 [==============================] - 0s 6ms/step - loss: 0.0059\n", + "Epoch 321/500\n", + "1/1 [==============================] - 0s 8ms/step - loss: 0.0058\n", + "Epoch 322/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0057\n", + "Epoch 323/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0056\n", + "Epoch 324/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0055\n", + "Epoch 325/500\n", + "1/1 [==============================] - ETA: 0s - loss: 0.005 - 0s 2ms/step - loss: 0.0055\n", + "Epoch 326/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0054\n", + "Epoch 327/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.0053\n", + "Epoch 328/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.0052\n", + "Epoch 329/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0051\n", + "Epoch 330/500\n", + "1/1 [==============================] - 0s 6ms/step - loss: 0.0051\n", + "Epoch 331/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0050\n", + "Epoch 332/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0049\n", + "Epoch 333/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0049\n", + "Epoch 334/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.0048\n", + "Epoch 335/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0047\n", + "Epoch 336/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0046\n", + "Epoch 337/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.0046\n", + "Epoch 338/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0045\n", + "Epoch 339/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0044\n", + "Epoch 340/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0044\n", + "Epoch 341/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0043\n", + "Epoch 342/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0043\n", + "Epoch 343/500\n", + "1/1 [==============================] - 0s 7ms/step - loss: 0.0042\n", + "Epoch 344/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0041\n", + "Epoch 345/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0041\n", + "Epoch 346/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0040\n", + "Epoch 347/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0040\n", + "Epoch 348/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0039\n", + "Epoch 349/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0038\n", + "Epoch 350/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0038\n", + "Epoch 351/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0037\n", + "Epoch 352/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0037\n", + "Epoch 353/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0036\n", + "Epoch 354/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0036\n", + "Epoch 355/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0035\n", + "Epoch 356/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0035\n", + "Epoch 357/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0034\n", + "Epoch 358/500\n", + "1/1 [==============================] - 0s 7ms/step - loss: 0.0034\n", + "Epoch 359/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0033\n", + "Epoch 360/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0033\n", + "Epoch 361/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0032\n", + "Epoch 362/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0032\n", + "Epoch 363/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0031\n", + "Epoch 364/500\n", + "1/1 [==============================] - 0s 27ms/step - loss: 0.0031\n", + "Epoch 365/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0030\n", + "Epoch 366/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0030\n", + "Epoch 367/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0030\n", + "Epoch 368/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.0029\n", + "Epoch 369/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0029\n", + "Epoch 370/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0028\n", + "Epoch 371/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0028\n", + "Epoch 372/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.0027\n", + "Epoch 373/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0027\n", + "Epoch 374/500\n", + "1/1 [==============================] - 0s 6ms/step - loss: 0.0027\n", + "Epoch 375/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0026\n", + "Epoch 376/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0026\n", + "Epoch 377/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0026\n", + "Epoch 378/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0025\n", + "Epoch 379/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.0025\n", + "Epoch 380/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.0024\n", + "Epoch 381/500\n", + "1/1 [==============================] - 0s 6ms/step - loss: 0.0024\n", + "Epoch 382/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0024\n", + "Epoch 383/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.0023\n", + "Epoch 384/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0023\n", + "Epoch 385/500\n", + "1/1 [==============================] - 0s 6ms/step - loss: 0.0023\n", + "Epoch 386/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.0022\n", + "Epoch 387/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0022\n", + "Epoch 388/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0022\n", + "Epoch 389/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0021\n", + "Epoch 390/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0021\n", + "Epoch 391/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0021\n", + "Epoch 392/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0021\n", + "Epoch 393/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.0020\n", + "Epoch 394/500\n", + "1/1 [==============================] - 0s 6ms/step - loss: 0.0020\n", + "Epoch 395/500\n", + "1/1 [==============================] - 0s 7ms/step - loss: 0.0020\n", + "Epoch 396/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0019\n", + "Epoch 397/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0019\n", + "Epoch 398/500\n", + "1/1 [==============================] - 0s 6ms/step - loss: 0.0019\n", + "Epoch 399/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0019\n", + "Epoch 400/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0018\n", + "Epoch 401/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0018\n", + "Epoch 402/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.0018\n", + "Epoch 403/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0017\n", + "Epoch 404/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0017\n", + "Epoch 405/500\n", + "1/1 [==============================] - 0s 9ms/step - loss: 0.0017\n", + "Epoch 406/500\n", + "1/1 [==============================] - 0s 6ms/step - loss: 0.0017\n", + "Epoch 407/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0017\n", + "Epoch 408/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0016\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 409/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0016\n", + "Epoch 410/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0016\n", + "Epoch 411/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.0016\n", + "Epoch 412/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.0015\n", + "Epoch 413/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0015\n", + "Epoch 414/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0015\n", + "Epoch 415/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0015\n", + "Epoch 416/500\n", + "1/1 [==============================] - 0s 6ms/step - loss: 0.0014\n", + "Epoch 417/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0014\n", + "Epoch 418/500\n", + "1/1 [==============================] - 0s 6ms/step - loss: 0.0014\n", + "Epoch 419/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0014\n", + "Epoch 420/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0014\n", + "Epoch 421/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0013\n", + "Epoch 422/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0013\n", + "Epoch 423/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.0013\n", + "Epoch 424/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0013\n", + "Epoch 425/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0013\n", + "Epoch 426/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0013\n", + "Epoch 427/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0012\n", + "Epoch 428/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0012\n", + "Epoch 429/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.0012\n", + "Epoch 430/500\n", + "1/1 [==============================] - ETA: 0s - loss: 0.001 - 0s 6ms/step - loss: 0.0012\n", + "Epoch 431/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0012\n", + "Epoch 432/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0011\n", + "Epoch 433/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0011\n", + "Epoch 434/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0011\n", + "Epoch 435/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0011\n", + "Epoch 436/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0011\n", + "Epoch 437/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0011\n", + "Epoch 438/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0010\n", + "Epoch 439/500\n", + "1/1 [==============================] - 0s 6ms/step - loss: 0.0010\n", + "Epoch 440/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0010\n", + "Epoch 441/500\n", + "1/1 [==============================] - 0s 16ms/step - loss: 0.0010\n", + "Epoch 442/500\n", + "1/1 [==============================] - 0s 6ms/step - loss: 9.9041e-04\n", + "Epoch 443/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 9.7608e-04\n", + "Epoch 444/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 9.6194e-04\n", + "Epoch 445/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 9.4800e-04\n", + "Epoch 446/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 9.3428e-04\n", + "Epoch 447/500\n", + "1/1 [==============================] - 0s 11ms/step - loss: 9.2075e-04\n", + "Epoch 448/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 9.0742e-04\n", + "Epoch 449/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 8.9429e-04\n", + "Epoch 450/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 8.8134e-04\n", + "Epoch 451/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 8.6857e-04\n", + "Epoch 452/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 8.5600e-04\n", + "Epoch 453/500\n", + "1/1 [==============================] - 0s 6ms/step - loss: 8.4361e-04\n", + "Epoch 454/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 8.3140e-04\n", + "Epoch 455/500\n", + "1/1 [==============================] - 0s 6ms/step - loss: 8.1936e-04\n", + "Epoch 456/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 8.0749e-04\n", + "Epoch 457/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 7.9581e-04\n", + "Epoch 458/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 7.8429e-04\n", + "Epoch 459/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 7.7293e-04\n", + "Epoch 460/500\n", + "1/1 [==============================] - 0s 8ms/step - loss: 7.6174e-04\n", + "Epoch 461/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 7.5071e-04\n", + "Epoch 462/500\n", + "1/1 [==============================] - 0s 6ms/step - loss: 7.3984e-04\n", + "Epoch 463/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 7.2912e-04\n", + "Epoch 464/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 7.1857e-04\n", + "Epoch 465/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 7.0817e-04\n", + "Epoch 466/500\n", + "1/1 [==============================] - 0s 13ms/step - loss: 6.9792e-04\n", + "Epoch 467/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 6.8781e-04\n", + "Epoch 468/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 6.7785e-04\n", + "Epoch 469/500\n", + "1/1 [==============================] - 0s 8ms/step - loss: 6.6803e-04\n", + "Epoch 470/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 6.5836e-04\n", + "Epoch 471/500\n", + "1/1 [==============================] - 0s 6ms/step - loss: 6.4882e-04\n", + "Epoch 472/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 6.3944e-04\n", + "Epoch 473/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 6.3017e-04\n", + "Epoch 474/500\n", + "1/1 [==============================] - 0s 6ms/step - loss: 6.2105e-04\n", + "Epoch 475/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 6.1206e-04\n", + "Epoch 476/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 6.0320e-04\n", + "Epoch 477/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 5.9446e-04\n", + "Epoch 478/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 5.8586e-04\n", + "Epoch 479/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 5.7737e-04\n", + "Epoch 480/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 5.6902e-04\n", + "Epoch 481/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 5.6078e-04\n", + "Epoch 482/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 5.5266e-04\n", + "Epoch 483/500\n", + "1/1 [==============================] - 0s 7ms/step - loss: 5.4465e-04\n", + "Epoch 484/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 5.3677e-04\n", + "Epoch 485/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 5.2900e-04\n", + "Epoch 486/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 5.2134e-04\n", + "Epoch 487/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 5.1379e-04\n", + "Epoch 488/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 5.0636e-04\n", + "Epoch 489/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 4.9903e-04\n", + "Epoch 490/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 4.9180e-04\n", + "Epoch 491/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 4.8467e-04\n", + "Epoch 492/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 4.7766e-04\n", + "Epoch 493/500\n", + "1/1 [==============================] - 0s 4ms/step - loss: 4.7074e-04\n", + "Epoch 494/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 4.6393e-04\n", + "Epoch 495/500\n", + "1/1 [==============================] - 0s 6ms/step - loss: 4.5721e-04\n", + "Epoch 496/500\n", + "1/1 [==============================] - 0s 5ms/step - loss: 4.5059e-04\n", + "Epoch 497/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 4.4407e-04\n", + "Epoch 498/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 4.3764e-04\n", + "Epoch 499/500\n", + "1/1 [==============================] - 0s 3ms/step - loss: 4.3130e-04\n", + "Epoch 500/500\n", + "1/1 [==============================] - 0s 2ms/step - loss: 4.2506e-04\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model.fit(xs,ys, epochs = 500)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Bien, ahora tienes un modelo que ha sido entrenado para aprender la relación entre X e Y. Puedes usar el método model.predict para que calcule la Y para una X previamente desconocida. Entonces, por ejemplo, si X = 10 , ¿cuál crees que será Y? Adivine antes de ejecutar este código:" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[18.98605]]\n" + ] + } + ], + "source": [ + "print(model.predict([10.0]))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Podrías haber pensado 19, ¿verdad? Pero terminó quedando un poco por debajo. ¿Por qué crees que es?\n", + "\n", + "Recuerde que las redes neuronales tratan con probabilidades, por lo que dados los datos con los que alimentamos al NN, calculó que existe una probabilidad muy alta de que la relación entre X e Y sea Y = 2X-1, pero con solo 6 puntos de datos podemos No lo sé con seguridad. Como resultado, el resultado de 10 está muy cerca de 19, pero no necesariamente 19.\n", + "\n", + "Mientras trabaja con redes neuronales, verá que este patrón se repite. Casi siempre se ocupará de probabilidades, no de certezas, y codificará un poco para averiguar cuál es el resultado en función de las probabilidades, especialmente cuando se trata de clasificación." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Gracias" + ] + } + ], + "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.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From 1d97cb07f98f52d3ba3ce1fc1bbe21a6e5f9665c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20Quispe?= <47084770+RubenMcCarty@users.noreply.github.com> Date: Sat, 28 Nov 2020 10:51:34 -0500 Subject: [PATCH 02/51] Precios de casa Question --- ...01_Ejecicio_1_Precios_Casas_Question.ipynb | 70 +++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 Lab_01_Ejecicio_1_Precios_Casas_Question.ipynb diff --git a/Lab_01_Ejecicio_1_Precios_Casas_Question.ipynb b/Lab_01_Ejecicio_1_Precios_Casas_Question.ipynb new file mode 100644 index 0000000..560376b --- /dev/null +++ b/Lab_01_Ejecicio_1_Precios_Casas_Question.ipynb @@ -0,0 +1,70 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "mw2VBrBcgvGa" + }, + "source": [ + "# Predicción de Precios de una casa\n", + "## Creado por [M.Sc. Ruben Quispe](https://machinelearningmastery.com/tutorial-to-implement-k-nearest-neighbors-in-python-from-scratch/)\n", + "### Curso [Machine Learning](https://eie.pe/curso-machine-learning/)\n", + "En este **LAB_01**, intentará construir una red neuronal que prediga el precio de una casa de acuerdo con una fórmula simple.\n", + "\n", + "Entonces, imagínese si el precio de la casa fuera tan fácil como que una casa cuesta 50k + 50k por habitación, de modo que una casa de 1 habitación cuesta 100k, una casa de 2 habitaciones cuesta 150k, una casa con 3 habitacciones cuesta 200k, etc.\n", + "\n", + "\n", + "¿Cómo crearía una red neuronal que aprenda esta relación para predecir que una casa de 11 habitaciones cuesta cerca de 600k, etc.?\n", + "\n", + "Sugerencia: su red podría funcionar mejor si reduce el precio de la vivienda. No tiene que dar la respuesta 600 ... podría ser mejor crear algo que prediga el número 6, y luego su respuesta está en los 'cientos de miles', etc." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "PUNO2E6SeURH" + }, + "outputs": [], + "source": [ + "import tensorflow as tf\n", + "import numpy as np\n", + "from tensorflow import keras\n", + "model = # Your Code Here#\n", + "model.compile(# Your Code Here#)\n", + "xs = # Your Code Here#\n", + "ys = # Your Code Here#\n", + "model.fit(# Your Code here#)\n", + "print(model.predict([11.0]))" + ] + } + ], + "metadata": { + "colab": { + "name": "Exercise_1_House_Prices_Question.ipynb", + "provenance": [] + }, + "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.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} From 7be83f4d904d05b12aabcdab15dbefeeb8d9014d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20Quispe?= <47084770+RubenMcCarty@users.noreply.github.com> Date: Sat, 28 Nov 2020 10:52:56 -0500 Subject: [PATCH 03/51] Precio de casa Answer --- Lab_01_Precios_casas_Answer.ipynb | 2146 +++++++++++++++++++++++++++++ 1 file changed, 2146 insertions(+) create mode 100644 Lab_01_Precios_casas_Answer.ipynb diff --git a/Lab_01_Precios_casas_Answer.ipynb b/Lab_01_Precios_casas_Answer.ipynb new file mode 100644 index 0000000..e2ccd4f --- /dev/null +++ b/Lab_01_Precios_casas_Answer.ipynb @@ -0,0 +1,2146 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "mw2VBrBcgvGa" + }, + "source": [ + "# Predicción de Precios de una casa\n", + "## Creado por [M.Sc. Ruben Quispe](https://machinelearningmastery.com/tutorial-to-implement-k-nearest-neighbors-in-python-from-scratch/)\n", + "### Curso [Machine Learning](https://eie.pe/curso-machine-learning/)\n", + "En este ejercicio, intentará construir una red neuronal que prediga el precio de una casa de acuerdo con una fórmula simple.\n", + "\n", + "Entonces, imagínese si el precio de la casa fuera tan fácil como que una casa cuesta 50k + 50k por habitación, de modo que una casa de 1 habitación cuesta 100k, una casa de 2 habitaciones cuesta 150k, etc.\n", + "\n", + "¿Cómo crearía una red neuronal que aprenda esta relación para predecir que una casa de 7 habitaciones cuesta cerca de 400k, etc.?\n", + "\n", + "Sugerencia: su red podría funcionar mejor si reduce el precio de la vivienda. No tiene que dar la respuesta 400 ... podría ser mejor crear algo que prediga el número 4, y luego su respuesta está en los 'cientos de miles', etc." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000 + }, + "id": "PUNO2E6SeURH", + "outputId": "42c522a9-4840-44ad-b002-30208fbb9270" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/1000\n", + "1/1 [==============================] - 0s 998us/step - loss: 48.7498\n", + "Epoch 2/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 22.5639\n", + "Epoch 3/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 10.4443\n", + "Epoch 4/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 4.8350\n", + "Epoch 5/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 2.2388\n", + "Epoch 6/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 1.0373\n", + "Epoch 7/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.4811\n", + "Epoch 8/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.2237\n", + "Epoch 9/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.1046\n", + "Epoch 10/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0494\n", + "Epoch 11/1000\n", + "1/1 [==============================] - 0s 7ms/step - loss: 0.0239\n", + "Epoch 12/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.0121\n", + "Epoch 13/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.0066\n", + "Epoch 14/1000\n", + "1/1 [==============================] - 0s 6ms/step - loss: 0.0040\n", + "Epoch 15/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.0028\n", + "Epoch 16/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0023\n", + "Epoch 17/1000\n", + "1/1 [==============================] - 0s 7ms/step - loss: 0.0020\n", + "Epoch 18/1000\n", + "1/1 [==============================] - 0s 8ms/step - loss: 0.0019\n", + "Epoch 19/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0018\n", + "Epoch 20/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0018\n", + "Epoch 21/1000\n", + "1/1 [==============================] - 0s 8ms/step - loss: 0.0018\n", + "Epoch 22/1000\n", + "1/1 [==============================] - 0s 7ms/step - loss: 0.0017\n", + "Epoch 23/1000\n", + "1/1 [==============================] - 0s 9ms/step - loss: 0.0017\n", + "Epoch 24/1000\n", + "1/1 [==============================] - 0s 6ms/step - loss: 0.0017\n", + "Epoch 25/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0017\n", + "Epoch 26/1000\n", + "1/1 [==============================] - 0s 6ms/step - loss: 0.0017\n", + "Epoch 27/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0017\n", + "Epoch 28/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0017\n", + "Epoch 29/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0017\n", + "Epoch 30/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0016\n", + "Epoch 31/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0016\n", + "Epoch 32/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0016\n", + "Epoch 33/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0016\n", + "Epoch 34/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0016\n", + "Epoch 35/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0016\n", + "Epoch 36/1000\n", + "1/1 [==============================] - 0s 7ms/step - loss: 0.0016\n", + "Epoch 37/1000\n", + "1/1 [==============================] - 0s 7ms/step - loss: 0.0016\n", + "Epoch 38/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0016\n", + "Epoch 39/1000\n", + "1/1 [==============================] - 0s 11ms/step - loss: 0.0015\n", + "Epoch 40/1000\n", + "1/1 [==============================] - 0s 1ms/step - loss: 0.0015\n", + "Epoch 41/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.0015\n", + "Epoch 42/1000\n", + "1/1 [==============================] - 0s 6ms/step - loss: 0.0015\n", + "Epoch 43/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0015\n", + "Epoch 44/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0015\n", + "Epoch 45/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.0015\n", + "Epoch 46/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0015\n", + "Epoch 47/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0015\n", + "Epoch 48/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0014\n", + "Epoch 49/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0014\n", + "Epoch 50/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0014\n", + "Epoch 51/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.0014\n", + "Epoch 52/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0014\n", + "Epoch 53/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0014\n", + "Epoch 54/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0014\n", + "Epoch 55/1000\n", + "1/1 [==============================] - 0s 8ms/step - loss: 0.0014\n", + "Epoch 56/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.0014\n", + "Epoch 57/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.0013\n", + "Epoch 58/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0013\n", + "Epoch 59/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0013\n", + "Epoch 60/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0013\n", + "Epoch 61/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0013\n", + "Epoch 62/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0013\n", + "Epoch 63/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0013\n", + "Epoch 64/1000\n", + "1/1 [==============================] - 0s 6ms/step - loss: 0.0013\n", + "Epoch 65/1000\n", + "1/1 [==============================] - 0s 7ms/step - loss: 0.0013\n", + "Epoch 66/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0013\n", + "Epoch 67/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0013\n", + "Epoch 68/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.0012\n", + "Epoch 69/1000\n", + "1/1 [==============================] - ETA: 0s - loss: 0.001 - 0s 6ms/step - loss: 0.0012\n", + "Epoch 70/1000\n", + "1/1 [==============================] - 0s 7ms/step - loss: 0.0012\n", + "Epoch 71/1000\n", + "1/1 [==============================] - 0s 6ms/step - loss: 0.0012\n", + "Epoch 72/1000\n", + "1/1 [==============================] - 0s 6ms/step - loss: 0.0012\n", + "Epoch 73/1000\n", + "1/1 [==============================] - 0s 8ms/step - loss: 0.0012\n", + "Epoch 74/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.0012\n", + "Epoch 75/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0012\n", + "Epoch 76/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0012\n", + "Epoch 77/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0012\n", + "Epoch 78/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0012\n", + "Epoch 79/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0011\n", + "Epoch 80/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0011\n", + "Epoch 81/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0011\n", + "Epoch 82/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0011\n", + "Epoch 83/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0011\n", + "Epoch 84/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0011\n", + "Epoch 85/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0011\n", + "Epoch 86/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0011\n", + "Epoch 87/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0011\n", + "Epoch 88/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 0.0011\n", + "Epoch 89/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0011\n", + "Epoch 90/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0011\n", + "Epoch 91/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 0.0011\n", + "Epoch 92/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0010\n", + "Epoch 93/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0010\n", + "Epoch 94/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0010\n", + "Epoch 95/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0010\n", + "Epoch 96/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 0.0010\n", + "Epoch 97/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0010\n", + "Epoch 98/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 0.0010\n", + "Epoch 99/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 9.9282e-04\n", + "Epoch 100/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 9.8559e-04\n", + "Epoch 101/1000\n", + "1/1 [==============================] - 0s 6ms/step - loss: 9.7840e-04\n", + "Epoch 102/1000\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1/1 [==============================] - 0s 5ms/step - loss: 9.7128e-04\n", + "Epoch 103/1000\n", + "1/1 [==============================] - 0s 7ms/step - loss: 9.6420e-04\n", + "Epoch 104/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 9.5718e-04\n", + "Epoch 105/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 9.5020e-04\n", + "Epoch 106/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 9.4328e-04\n", + "Epoch 107/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 9.3641e-04\n", + "Epoch 108/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 9.2959e-04\n", + "Epoch 109/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 9.2281e-04\n", + "Epoch 110/1000\n", + "1/1 [==============================] - 0s 8ms/step - loss: 9.1609e-04\n", + "Epoch 111/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 9.0941e-04\n", + "Epoch 112/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 9.0279e-04\n", + "Epoch 113/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 8.9621e-04\n", + "Epoch 114/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 8.8969e-04\n", + "Epoch 115/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 8.8320e-04\n", + "Epoch 116/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 8.7677e-04\n", + "Epoch 117/1000\n", + "1/1 [==============================] - 0s 7ms/step - loss: 8.7038e-04\n", + "Epoch 118/1000\n", + "1/1 [==============================] - 0s 997us/step - loss: 8.6404e-04\n", + "Epoch 119/1000\n", + "1/1 [==============================] - 0s 6ms/step - loss: 8.5774e-04\n", + "Epoch 120/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 8.5149e-04\n", + "Epoch 121/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 8.4529e-04\n", + "Epoch 122/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 8.3913e-04\n", + "Epoch 123/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 8.3302e-04\n", + "Epoch 124/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 8.2695e-04\n", + "Epoch 125/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 8.2092e-04\n", + "Epoch 126/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 8.1494e-04\n", + "Epoch 127/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 8.0901e-04\n", + "Epoch 128/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 8.0311e-04\n", + "Epoch 129/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 7.9726e-04\n", + "Epoch 130/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 7.9145e-04\n", + "Epoch 131/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 7.8569e-04\n", + "Epoch 132/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 7.7996e-04\n", + "Epoch 133/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 7.7428e-04\n", + "Epoch 134/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 7.6864e-04\n", + "Epoch 135/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 7.6304e-04\n", + "Epoch 136/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 7.5748e-04\n", + "Epoch 137/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 7.5196e-04\n", + "Epoch 138/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 7.4648e-04\n", + "Epoch 139/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 7.4104e-04\n", + "Epoch 140/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 7.3564e-04\n", + "Epoch 141/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 7.3029e-04\n", + "Epoch 142/1000\n", + "1/1 [==============================] - 0s 1ms/step - loss: 7.2496e-04\n", + "Epoch 143/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 7.1968e-04\n", + "Epoch 144/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 7.1444e-04\n", + "Epoch 145/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 7.0924e-04\n", + "Epoch 146/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 7.0407e-04\n", + "Epoch 147/1000\n", + "1/1 [==============================] - 0s 6ms/step - loss: 6.9894e-04\n", + "Epoch 148/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 6.9385e-04\n", + "Epoch 149/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 6.8879e-04\n", + "Epoch 150/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 6.8377e-04\n", + "Epoch 151/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 6.7879e-04\n", + "Epoch 152/1000\n", + "1/1 [==============================] - 0s 7ms/step - loss: 6.7385e-04\n", + "Epoch 153/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 6.6894e-04\n", + "Epoch 154/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 6.6406e-04\n", + "Epoch 155/1000\n", + "1/1 [==============================] - ETA: 0s - loss: 6.5923e-0 - 0s 4ms/step - loss: 6.5923e-04\n", + "Epoch 156/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 6.5442e-04\n", + "Epoch 157/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 6.4965e-04\n", + "Epoch 158/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 6.4492e-04\n", + "Epoch 159/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 6.4022e-04\n", + "Epoch 160/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 6.3556e-04\n", + "Epoch 161/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 6.3093e-04\n", + "Epoch 162/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 6.2633e-04\n", + "Epoch 163/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 6.2177e-04\n", + "Epoch 164/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 6.1724e-04\n", + "Epoch 165/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 6.1274e-04\n", + "Epoch 166/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 6.0828e-04\n", + "Epoch 167/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 6.0385e-04\n", + "Epoch 168/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 5.9945e-04\n", + "Epoch 169/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 5.9508e-04\n", + "Epoch 170/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 5.9074e-04\n", + "Epoch 171/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 5.8644e-04\n", + "Epoch 172/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 5.8217e-04\n", + "Epoch 173/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 5.7793e-04\n", + "Epoch 174/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 5.7371e-04\n", + "Epoch 175/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 5.6954e-04\n", + "Epoch 176/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 5.6539e-04\n", + "Epoch 177/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 5.6127e-04\n", + "Epoch 178/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 5.5718e-04\n", + "Epoch 179/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 5.5312e-04\n", + "Epoch 180/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 5.4909e-04\n", + "Epoch 181/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 5.4509e-04\n", + "Epoch 182/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 5.4112e-04\n", + "Epoch 183/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 5.3717e-04\n", + "Epoch 184/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 5.3326e-04\n", + "Epoch 185/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 5.2937e-04\n", + "Epoch 186/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 5.2552e-04\n", + "Epoch 187/1000\n", + "1/1 [==============================] - 0s 7ms/step - loss: 5.2169e-04\n", + "Epoch 188/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 5.1789e-04\n", + "Epoch 189/1000\n", + "1/1 [==============================] - 0s 1000us/step - loss: 5.1412e-04\n", + "Epoch 190/1000\n", + "1/1 [==============================] - ETA: 0s - loss: 5.1037e-0 - 0s 3ms/step - loss: 5.1037e-04\n", + "Epoch 191/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 5.0665e-04\n", + "Epoch 192/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 5.0296e-04\n", + "Epoch 193/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 4.9930e-04\n", + "Epoch 194/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 4.9566e-04\n", + "Epoch 195/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 4.9205e-04\n", + "Epoch 196/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 4.8846e-04\n", + "Epoch 197/1000\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1/1 [==============================] - 0s 3ms/step - loss: 4.8490e-04\n", + "Epoch 198/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 4.8137e-04\n", + "Epoch 199/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 4.7786e-04\n", + "Epoch 200/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 4.7438e-04\n", + "Epoch 201/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 4.7093e-04\n", + "Epoch 202/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 4.6749e-04\n", + "Epoch 203/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 4.6409e-04\n", + "Epoch 204/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 4.6071e-04\n", + "Epoch 205/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 4.5735e-04\n", + "Epoch 206/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 4.5402e-04\n", + "Epoch 207/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 4.5071e-04\n", + "Epoch 208/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 4.4743e-04\n", + "Epoch 209/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 4.4417e-04\n", + "Epoch 210/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 4.4093e-04\n", + "Epoch 211/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 4.3772e-04\n", + "Epoch 212/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 4.3453e-04\n", + "Epoch 213/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 4.3136e-04\n", + "Epoch 214/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 4.2822e-04\n", + "Epoch 215/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 4.2510e-04\n", + "Epoch 216/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 4.2200e-04\n", + "Epoch 217/1000\n", + "1/1 [==============================] - 0s 6ms/step - loss: 4.1893e-04\n", + "Epoch 218/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 4.1588e-04\n", + "Epoch 219/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 4.1285e-04\n", + "Epoch 220/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 4.0984e-04\n", + "Epoch 221/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 4.0685e-04\n", + "Epoch 222/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 4.0389e-04\n", + "Epoch 223/1000\n", + "1/1 [==============================] - 0s 7ms/step - loss: 4.0095e-04\n", + "Epoch 224/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 3.9803e-04\n", + "Epoch 225/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 3.9512e-04\n", + "Epoch 226/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 3.9225e-04\n", + "Epoch 227/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 3.8939e-04\n", + "Epoch 228/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 3.8655e-04\n", + "Epoch 229/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 3.8374e-04\n", + "Epoch 230/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 3.8094e-04\n", + "Epoch 231/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 3.7817e-04\n", + "Epoch 232/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 3.7541e-04\n", + "Epoch 233/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 3.7268e-04\n", + "Epoch 234/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 3.6996e-04\n", + "Epoch 235/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 3.6727e-04\n", + "Epoch 236/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 3.6459e-04\n", + "Epoch 237/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 3.6193e-04\n", + "Epoch 238/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 3.5930e-04\n", + "Epoch 239/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 3.5668e-04\n", + "Epoch 240/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 3.5408e-04\n", + "Epoch 241/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 3.5150e-04\n", + "Epoch 242/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 3.4894e-04\n", + "Epoch 243/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 3.4640e-04\n", + "Epoch 244/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 3.4387e-04\n", + "Epoch 245/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 3.4137e-04\n", + "Epoch 246/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 3.3888e-04\n", + "Epoch 247/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 3.3641e-04\n", + "Epoch 248/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 3.3396e-04\n", + "Epoch 249/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 3.3153e-04\n", + "Epoch 250/1000\n", + "1/1 [==============================] - 0s 6ms/step - loss: 3.2911e-04\n", + "Epoch 251/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 3.2671e-04\n", + "Epoch 252/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 3.2433e-04\n", + "Epoch 253/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 3.2197e-04\n", + "Epoch 254/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 3.1963e-04\n", + "Epoch 255/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 3.1730e-04\n", + "Epoch 256/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 3.1499e-04\n", + "Epoch 257/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 3.1269e-04\n", + "Epoch 258/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 3.1041e-04\n", + "Epoch 259/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 3.0815e-04\n", + "Epoch 260/1000\n", + "1/1 [==============================] - 0s 6ms/step - loss: 3.0591e-04\n", + "Epoch 261/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 3.0368e-04\n", + "Epoch 262/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 3.0147e-04\n", + "Epoch 263/1000\n", + "1/1 [==============================] - 0s 7ms/step - loss: 2.9927e-04\n", + "Epoch 264/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 2.9709e-04\n", + "Epoch 265/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 2.9493e-04\n", + "Epoch 266/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 2.9278e-04\n", + "Epoch 267/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 2.9064e-04\n", + "Epoch 268/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 2.8853e-04\n", + "Epoch 269/1000\n", + "1/1 [==============================] - 0s 1ms/step - loss: 2.8642e-04\n", + "Epoch 270/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 2.8434e-04\n", + "Epoch 271/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.8227e-04\n", + "Epoch 272/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 2.8021e-04\n", + "Epoch 273/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 2.7817e-04\n", + "Epoch 274/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 2.7614e-04\n", + "Epoch 275/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.7413e-04\n", + "Epoch 276/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.7213e-04\n", + "Epoch 277/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 2.7015e-04\n", + "Epoch 278/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.6818e-04\n", + "Epoch 279/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 2.6623e-04\n", + "Epoch 280/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.6429e-04\n", + "Epoch 281/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 2.6236e-04\n", + "Epoch 282/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.6045e-04\n", + "Epoch 283/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.5855e-04\n", + "Epoch 284/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 2.5667e-04\n", + "Epoch 285/1000\n", + "1/1 [==============================] - 0s 997us/step - loss: 2.5480e-04\n", + "Epoch 286/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 2.5294e-04\n", + "Epoch 287/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.5110e-04\n", + "Epoch 288/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 2.4927e-04\n", + "Epoch 289/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.4745e-04\n", + "Epoch 290/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.4565e-04\n", + "Epoch 291/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 2.4386e-04\n", + "Epoch 292/1000\n", + "1/1 [==============================] - 0s 997us/step - loss: 2.4209e-04\n", + "Epoch 293/1000\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1/1 [==============================] - 0s 2ms/step - loss: 2.4032e-04\n", + "Epoch 294/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.3857e-04\n", + "Epoch 295/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.3683e-04\n", + "Epoch 296/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.3511e-04\n", + "Epoch 297/1000\n", + "1/1 [==============================] - 0s 996us/step - loss: 2.3339e-04\n", + "Epoch 298/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 2.3169e-04\n", + "Epoch 299/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 2.3001e-04\n", + "Epoch 300/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.2833e-04\n", + "Epoch 301/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 2.2667e-04\n", + "Epoch 302/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 2.2502e-04\n", + "Epoch 303/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 2.2338e-04\n", + "Epoch 304/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 2.2175e-04\n", + "Epoch 305/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 2.2013e-04\n", + "Epoch 306/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 2.1853e-04\n", + "Epoch 307/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.1694e-04\n", + "Epoch 308/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 2.1536e-04\n", + "Epoch 309/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 2.1379e-04\n", + "Epoch 310/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.1223e-04\n", + "Epoch 311/1000\n", + "1/1 [==============================] - ETA: 0s - loss: 2.1068e-0 - 0s 4ms/step - loss: 2.1068e-04\n", + "Epoch 312/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 2.0915e-04\n", + "Epoch 313/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 2.0762e-04\n", + "Epoch 314/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 2.0611e-04\n", + "Epoch 315/1000\n", + "1/1 [==============================] - 0s 1ms/step - loss: 2.0461e-04\n", + "Epoch 316/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 2.0312e-04\n", + "Epoch 317/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 2.0164e-04\n", + "Epoch 318/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 2.0017e-04\n", + "Epoch 319/1000\n", + "1/1 [==============================] - 0s 1000us/step - loss: 1.9871e-04\n", + "Epoch 320/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.9726e-04\n", + "Epoch 321/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.9583e-04\n", + "Epoch 322/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.9440e-04\n", + "Epoch 323/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 1.9298e-04\n", + "Epoch 324/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 1.9158e-04\n", + "Epoch 325/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 1.9018e-04\n", + "Epoch 326/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.8880e-04\n", + "Epoch 327/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.8742e-04\n", + "Epoch 328/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 1.8605e-04\n", + "Epoch 329/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.8470e-04\n", + "Epoch 330/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 1.8335e-04\n", + "Epoch 331/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 1.8202e-04\n", + "Epoch 332/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.8069e-04\n", + "Epoch 333/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.7938e-04\n", + "Epoch 334/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.7807e-04\n", + "Epoch 335/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.7677e-04\n", + "Epoch 336/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.7548e-04\n", + "Epoch 337/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.7420e-04\n", + "Epoch 338/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.7293e-04\n", + "Epoch 339/1000\n", + "1/1 [==============================] - 0s 6ms/step - loss: 1.7168e-04\n", + "Epoch 340/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.7043e-04\n", + "Epoch 341/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.6918e-04\n", + "Epoch 342/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 1.6795e-04\n", + "Epoch 343/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.6673e-04\n", + "Epoch 344/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.6551e-04\n", + "Epoch 345/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.6431e-04\n", + "Epoch 346/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.6311e-04\n", + "Epoch 347/1000\n", + "1/1 [==============================] - 0s 6ms/step - loss: 1.6192e-04\n", + "Epoch 348/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.6074e-04\n", + "Epoch 349/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.5957e-04\n", + "Epoch 350/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 1.5841e-04\n", + "Epoch 351/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.5725e-04\n", + "Epoch 352/1000\n", + "1/1 [==============================] - 0s 6ms/step - loss: 1.5611e-04\n", + "Epoch 353/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 1.5497e-04\n", + "Epoch 354/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 1.5384e-04\n", + "Epoch 355/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.5272e-04\n", + "Epoch 356/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.5161e-04\n", + "Epoch 357/1000\n", + "1/1 [==============================] - 0s 8ms/step - loss: 1.5050e-04\n", + "Epoch 358/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 1.4941e-04\n", + "Epoch 359/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.4832e-04\n", + "Epoch 360/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.4724e-04\n", + "Epoch 361/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.4617e-04\n", + "Epoch 362/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.4510e-04\n", + "Epoch 363/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.4404e-04\n", + "Epoch 364/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.4299e-04\n", + "Epoch 365/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.4195e-04\n", + "Epoch 366/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.4092e-04\n", + "Epoch 367/1000\n", + "1/1 [==============================] - 0s 1000us/step - loss: 1.3989e-04\n", + "Epoch 368/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 1.3887e-04\n", + "Epoch 369/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 1.3786e-04\n", + "Epoch 370/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.3685e-04\n", + "Epoch 371/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 1.3586e-04\n", + "Epoch 372/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.3487e-04\n", + "Epoch 373/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.3389e-04\n", + "Epoch 374/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.3291e-04\n", + "Epoch 375/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 1.3194e-04\n", + "Epoch 376/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.3098e-04\n", + "Epoch 377/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 1.3003e-04\n", + "Epoch 378/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.2908e-04\n", + "Epoch 379/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.2814e-04\n", + "Epoch 380/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.2721e-04\n", + "Epoch 381/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.2628e-04\n", + "Epoch 382/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 1.2536e-04\n", + "Epoch 383/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.2444e-04\n", + "Epoch 384/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 1.2354e-04\n", + "Epoch 385/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.2264e-04\n", + "Epoch 386/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.2175e-04\n", + "Epoch 387/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.2086e-04\n", + "Epoch 388/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 1.1998e-04\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 389/1000\n", + "1/1 [==============================] - 0s 998us/step - loss: 1.1910e-04\n", + "Epoch 390/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.1824e-04\n", + "Epoch 391/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.1738e-04\n", + "Epoch 392/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.1652e-04\n", + "Epoch 393/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.1567e-04\n", + "Epoch 394/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.1483e-04\n", + "Epoch 395/1000\n", + "1/1 [==============================] - 0s 6ms/step - loss: 1.1399e-04\n", + "Epoch 396/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.1316e-04\n", + "Epoch 397/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.1234e-04\n", + "Epoch 398/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 1.1152e-04\n", + "Epoch 399/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.1071e-04\n", + "Epoch 400/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.0990e-04\n", + "Epoch 401/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.0910e-04\n", + "Epoch 402/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.0830e-04\n", + "Epoch 403/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.0751e-04\n", + "Epoch 404/1000\n", + "1/1 [==============================] - 0s 999us/step - loss: 1.0673e-04\n", + "Epoch 405/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 1.0595e-04\n", + "Epoch 406/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.0518e-04\n", + "Epoch 407/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.0442e-04\n", + "Epoch 408/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.0366e-04\n", + "Epoch 409/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.0290e-04\n", + "Epoch 410/1000\n", + "1/1 [==============================] - 0s 999us/step - loss: 1.0215e-04\n", + "Epoch 411/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.0141e-04\n", + "Epoch 412/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 1.0067e-04\n", + "Epoch 413/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 9.9934e-05\n", + "Epoch 414/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 9.9205e-05\n", + "Epoch 415/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 9.8483e-05\n", + "Epoch 416/1000\n", + "1/1 [==============================] - 0s 999us/step - loss: 9.7765e-05\n", + "Epoch 417/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 9.7054e-05\n", + "Epoch 418/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 9.6346e-05\n", + "Epoch 419/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 9.5644e-05\n", + "Epoch 420/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 9.4948e-05\n", + "Epoch 421/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 9.4256e-05\n", + "Epoch 422/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 9.3569e-05\n", + "Epoch 423/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 9.2887e-05\n", + "Epoch 424/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 9.2211e-05\n", + "Epoch 425/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 9.1539e-05\n", + "Epoch 426/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 9.0872e-05\n", + "Epoch 427/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 9.0210e-05\n", + "Epoch 428/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 8.9553e-05\n", + "Epoch 429/1000\n", + "1/1 [==============================] - 0s 6ms/step - loss: 8.8900e-05\n", + "Epoch 430/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 8.8252e-05\n", + "Epoch 431/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 8.7610e-05\n", + "Epoch 432/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 8.6972e-05\n", + "Epoch 433/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 8.6338e-05\n", + "Epoch 434/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 8.5708e-05\n", + "Epoch 435/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 8.5084e-05\n", + "Epoch 436/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 8.4464e-05\n", + "Epoch 437/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 8.3849e-05\n", + "Epoch 438/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 8.3239e-05\n", + "Epoch 439/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 8.2632e-05\n", + "Epoch 440/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 8.2030e-05\n", + "Epoch 441/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 8.1433e-05\n", + "Epoch 442/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 8.0839e-05\n", + "Epoch 443/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 8.0251e-05\n", + "Epoch 444/1000\n", + "1/1 [==============================] - 0s 1000us/step - loss: 7.9665e-05\n", + "Epoch 445/1000\n", + "1/1 [==============================] - 0s 6ms/step - loss: 7.9085e-05\n", + "Epoch 446/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 7.8509e-05\n", + "Epoch 447/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 7.7937e-05\n", + "Epoch 448/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 7.7369e-05\n", + "Epoch 449/1000\n", + "1/1 [==============================] - 0s 6ms/step - loss: 7.6806e-05\n", + "Epoch 450/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 7.6246e-05\n", + "Epoch 451/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 7.5691e-05\n", + "Epoch 452/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 7.5140e-05\n", + "Epoch 453/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 7.4592e-05\n", + "Epoch 454/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 7.4048e-05\n", + "Epoch 455/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 7.3509e-05\n", + "Epoch 456/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 7.2973e-05\n", + "Epoch 457/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 7.2442e-05\n", + "Epoch 458/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 7.1914e-05\n", + "Epoch 459/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 7.1390e-05\n", + "Epoch 460/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 7.0870e-05\n", + "Epoch 461/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 7.0353e-05\n", + "Epoch 462/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 6.9841e-05\n", + "Epoch 463/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 6.9332e-05\n", + "Epoch 464/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 6.8827e-05\n", + "Epoch 465/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 6.8325e-05\n", + "Epoch 466/1000\n", + "1/1 [==============================] - 0s 9ms/step - loss: 6.7828e-05\n", + "Epoch 467/1000\n", + "1/1 [==============================] - 0s 1000us/step - loss: 6.7334e-05\n", + "Epoch 468/1000\n", + "1/1 [==============================] - 0s 23ms/step - loss: 6.6843e-05\n", + "Epoch 469/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 6.6356e-05\n", + "Epoch 470/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 6.5872e-05\n", + "Epoch 471/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 6.5392e-05\n", + "Epoch 472/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 6.4916e-05\n", + "Epoch 473/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 6.4444e-05\n", + "Epoch 474/1000\n", + "1/1 [==============================] - 0s 6ms/step - loss: 6.3974e-05\n", + "Epoch 475/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 6.3507e-05\n", + "Epoch 476/1000\n", + "1/1 [==============================] - ETA: 0s - loss: 6.3045e-0 - 0s 4ms/step - loss: 6.3045e-05\n", + "Epoch 477/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 6.2585e-05\n", + "Epoch 478/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 6.2129e-05\n", + "Epoch 479/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 6.1677e-05\n", + "Epoch 480/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 6.1228e-05\n", + "Epoch 481/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 6.0781e-05\n", + "Epoch 482/1000\n", + "1/1 [==============================] - 0s 7ms/step - loss: 6.0339e-05\n", + "Epoch 483/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 5.9899e-05\n", + "Epoch 484/1000\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1/1 [==============================] - 0s 3ms/step - loss: 5.9463e-05\n", + "Epoch 485/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 5.9029e-05\n", + "Epoch 486/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 5.8599e-05\n", + "Epoch 487/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 5.8173e-05\n", + "Epoch 488/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 5.7749e-05\n", + "Epoch 489/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 5.7328e-05\n", + "Epoch 490/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 5.6910e-05\n", + "Epoch 491/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 5.6495e-05\n", + "Epoch 492/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 5.6084e-05\n", + "Epoch 493/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 5.5675e-05\n", + "Epoch 494/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 5.5269e-05\n", + "Epoch 495/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 5.4868e-05\n", + "Epoch 496/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 5.4467e-05\n", + "Epoch 497/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 5.4071e-05\n", + "Epoch 498/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 5.3676e-05\n", + "Epoch 499/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 5.3286e-05\n", + "Epoch 500/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 5.2898e-05\n", + "Epoch 501/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 5.2511e-05\n", + "Epoch 502/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 5.2129e-05\n", + "Epoch 503/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 5.1749e-05\n", + "Epoch 504/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 5.1373e-05\n", + "Epoch 505/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 5.0998e-05\n", + "Epoch 506/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 5.0627e-05\n", + "Epoch 507/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 5.0258e-05\n", + "Epoch 508/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 4.9892e-05\n", + "Epoch 509/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 4.9528e-05\n", + "Epoch 510/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 4.9167e-05\n", + "Epoch 511/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 4.8809e-05\n", + "Epoch 512/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 4.8453e-05\n", + "Epoch 513/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 4.8101e-05\n", + "Epoch 514/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 4.7750e-05\n", + "Epoch 515/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 4.7402e-05\n", + "Epoch 516/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 4.7057e-05\n", + "Epoch 517/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 4.6713e-05\n", + "Epoch 518/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 4.6374e-05\n", + "Epoch 519/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 4.6036e-05\n", + "Epoch 520/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 4.5700e-05\n", + "Epoch 521/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 4.5368e-05\n", + "Epoch 522/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 4.5037e-05\n", + "Epoch 523/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 4.4709e-05\n", + "Epoch 524/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 4.4383e-05\n", + "Epoch 525/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 4.4060e-05\n", + "Epoch 526/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 4.3739e-05\n", + "Epoch 527/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 4.3420e-05\n", + "Epoch 528/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 4.3103e-05\n", + "Epoch 529/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 4.2789e-05\n", + "Epoch 530/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 4.2478e-05\n", + "Epoch 531/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 4.2168e-05\n", + "Epoch 532/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 4.1861e-05\n", + "Epoch 533/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 4.1556e-05\n", + "Epoch 534/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 4.1254e-05\n", + "Epoch 535/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 4.0953e-05\n", + "Epoch 536/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 4.0655e-05\n", + "Epoch 537/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 4.0358e-05\n", + "Epoch 538/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 4.0064e-05\n", + "Epoch 539/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 3.9772e-05\n", + "Epoch 540/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 3.9483e-05\n", + "Epoch 541/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 3.9195e-05\n", + "Epoch 542/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 3.8910e-05\n", + "Epoch 543/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 3.8626e-05\n", + "Epoch 544/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 3.8345e-05\n", + "Epoch 545/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 3.8065e-05\n", + "Epoch 546/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 3.7788e-05\n", + "Epoch 547/1000\n", + "1/1 [==============================] - 0s 998us/step - loss: 3.7513e-05\n", + "Epoch 548/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 3.7239e-05\n", + "Epoch 549/1000\n", + "1/1 [==============================] - 0s 1000us/step - loss: 3.6969e-05\n", + "Epoch 550/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 3.6699e-05\n", + "Epoch 551/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 3.6432e-05\n", + "Epoch 552/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 3.6166e-05\n", + "Epoch 553/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 3.5903e-05\n", + "Epoch 554/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 3.5641e-05\n", + "Epoch 555/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 3.5381e-05\n", + "Epoch 556/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 3.5123e-05\n", + "Epoch 557/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 3.4867e-05\n", + "Epoch 558/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 3.4613e-05\n", + "Epoch 559/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 3.4362e-05\n", + "Epoch 560/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 3.4111e-05\n", + "Epoch 561/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 3.3863e-05\n", + "Epoch 562/1000\n", + "1/1 [==============================] - 0s 6ms/step - loss: 3.3616e-05\n", + "Epoch 563/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 3.3371e-05\n", + "Epoch 564/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 3.3128e-05\n", + "Epoch 565/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 3.2887e-05\n", + "Epoch 566/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 3.2647e-05\n", + "Epoch 567/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 3.2409e-05\n", + "Epoch 568/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 3.2173e-05\n", + "Epoch 569/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 3.1939e-05\n", + "Epoch 570/1000\n", + "1/1 [==============================] - 0s 999us/step - loss: 3.1706e-05\n", + "Epoch 571/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 3.1475e-05\n", + "Epoch 572/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 3.1246e-05\n", + "Epoch 573/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 3.1018e-05\n", + "Epoch 574/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 3.0792e-05\n", + "Epoch 575/1000\n", + "1/1 [==============================] - 0s 997us/step - loss: 3.0568e-05\n", + "Epoch 576/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 3.0345e-05\n", + "Epoch 577/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 3.0124e-05\n", + "Epoch 578/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.9905e-05\n", + "Epoch 579/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.9687e-05\n", + "Epoch 580/1000\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1/1 [==============================] - 0s 2ms/step - loss: 2.9471e-05\n", + "Epoch 581/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.9256e-05\n", + "Epoch 582/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.9043e-05\n", + "Epoch 583/1000\n", + "1/1 [==============================] - 0s 6ms/step - loss: 2.8831e-05\n", + "Epoch 584/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.8621e-05\n", + "Epoch 585/1000\n", + "1/1 [==============================] - 0s 6ms/step - loss: 2.8413e-05\n", + "Epoch 586/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.8206e-05\n", + "Epoch 587/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 2.8000e-05\n", + "Epoch 588/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.7796e-05\n", + "Epoch 589/1000\n", + "1/1 [==============================] - 0s 6ms/step - loss: 2.7594e-05\n", + "Epoch 590/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 2.7393e-05\n", + "Epoch 591/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 2.7193e-05\n", + "Epoch 592/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 2.6995e-05\n", + "Epoch 593/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 2.6798e-05\n", + "Epoch 594/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.6603e-05\n", + "Epoch 595/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 2.6410e-05\n", + "Epoch 596/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.6217e-05\n", + "Epoch 597/1000\n", + "1/1 [==============================] - 0s 999us/step - loss: 2.6026e-05\n", + "Epoch 598/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.5836e-05\n", + "Epoch 599/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.5648e-05\n", + "Epoch 600/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.5461e-05\n", + "Epoch 601/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.5276e-05\n", + "Epoch 602/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.5091e-05\n", + "Epoch 603/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.4908e-05\n", + "Epoch 604/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.4727e-05\n", + "Epoch 605/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.4547e-05\n", + "Epoch 606/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 2.4368e-05\n", + "Epoch 607/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.4191e-05\n", + "Epoch 608/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.4014e-05\n", + "Epoch 609/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 2.3839e-05\n", + "Epoch 610/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.3666e-05\n", + "Epoch 611/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.3493e-05\n", + "Epoch 612/1000\n", + "1/1 [==============================] - 0s 1000us/step - loss: 2.3322e-05\n", + "Epoch 613/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.3152e-05\n", + "Epoch 614/1000\n", + "1/1 [==============================] - 0s 999us/step - loss: 2.2984e-05\n", + "Epoch 615/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.2816e-05\n", + "Epoch 616/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.2650e-05\n", + "Epoch 617/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.2485e-05\n", + "Epoch 618/1000\n", + "1/1 [==============================] - 0s 997us/step - loss: 2.2321e-05\n", + "Epoch 619/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.2159e-05\n", + "Epoch 620/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.1997e-05\n", + "Epoch 621/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.1837e-05\n", + "Epoch 622/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 2.1678e-05\n", + "Epoch 623/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 2.1520e-05\n", + "Epoch 624/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.1363e-05\n", + "Epoch 625/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 2.1207e-05\n", + "Epoch 626/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.1053e-05\n", + "Epoch 627/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 2.0899e-05\n", + "Epoch 628/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.0747e-05\n", + "Epoch 629/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 2.0596e-05\n", + "Epoch 630/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 2.0446e-05\n", + "Epoch 631/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 2.0297e-05\n", + "Epoch 632/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 2.0149e-05\n", + "Epoch 633/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 2.0002e-05\n", + "Epoch 634/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 1.9856e-05\n", + "Epoch 635/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.9712e-05\n", + "Epoch 636/1000\n", + "1/1 [==============================] - 0s 999us/step - loss: 1.9568e-05\n", + "Epoch 637/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.9426e-05\n", + "Epoch 638/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.9284e-05\n", + "Epoch 639/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.9144e-05\n", + "Epoch 640/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.9004e-05\n", + "Epoch 641/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.8866e-05\n", + "Epoch 642/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.8728e-05\n", + "Epoch 643/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 1.8592e-05\n", + "Epoch 644/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.8456e-05\n", + "Epoch 645/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.8322e-05\n", + "Epoch 646/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.8188e-05\n", + "Epoch 647/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.8056e-05\n", + "Epoch 648/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.7924e-05\n", + "Epoch 649/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.7794e-05\n", + "Epoch 650/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.7664e-05\n", + "Epoch 651/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.7535e-05\n", + "Epoch 652/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.7408e-05\n", + "Epoch 653/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 1.7281e-05\n", + "Epoch 654/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 1.7155e-05\n", + "Epoch 655/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 1.7030e-05\n", + "Epoch 656/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 1.6906e-05\n", + "Epoch 657/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.6783e-05\n", + "Epoch 658/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.6661e-05\n", + "Epoch 659/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.6539e-05\n", + "Epoch 660/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.6419e-05\n", + "Epoch 661/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.6299e-05\n", + "Epoch 662/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.6180e-05\n", + "Epoch 663/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 1.6062e-05\n", + "Epoch 664/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 1.5945e-05\n", + "Epoch 665/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.5829e-05\n", + "Epoch 666/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.5714e-05\n", + "Epoch 667/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 1.5599e-05\n", + "Epoch 668/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.5486e-05\n", + "Epoch 669/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.5373e-05\n", + "Epoch 670/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 1.5261e-05\n", + "Epoch 671/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.5150e-05\n", + "Epoch 672/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 1.5040e-05\n", + "Epoch 673/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.4930e-05\n", + "Epoch 674/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.4821e-05\n", + "Epoch 675/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 1.4713e-05\n", + "Epoch 676/1000\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1/1 [==============================] - 0s 3ms/step - loss: 1.4606e-05\n", + "Epoch 677/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.4500e-05\n", + "Epoch 678/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.4394e-05\n", + "Epoch 679/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.4289e-05\n", + "Epoch 680/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.4185e-05\n", + "Epoch 681/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.4081e-05\n", + "Epoch 682/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.3979e-05\n", + "Epoch 683/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.3877e-05\n", + "Epoch 684/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.3776e-05\n", + "Epoch 685/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.3676e-05\n", + "Epoch 686/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.3576e-05\n", + "Epoch 687/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.3477e-05\n", + "Epoch 688/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 1.3379e-05\n", + "Epoch 689/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.3281e-05\n", + "Epoch 690/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 1.3185e-05\n", + "Epoch 691/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 1.3088e-05\n", + "Epoch 692/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.2993e-05\n", + "Epoch 693/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.2898e-05\n", + "Epoch 694/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.2805e-05\n", + "Epoch 695/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 1.2711e-05\n", + "Epoch 696/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.2619e-05\n", + "Epoch 697/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.2527e-05\n", + "Epoch 698/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.2435e-05\n", + "Epoch 699/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.2345e-05\n", + "Epoch 700/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 1.2255e-05\n", + "Epoch 701/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.2165e-05\n", + "Epoch 702/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 1.2077e-05\n", + "Epoch 703/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 1.1989e-05\n", + "Epoch 704/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.1901e-05\n", + "Epoch 705/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.1815e-05\n", + "Epoch 706/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.1728e-05\n", + "Epoch 707/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.1643e-05\n", + "Epoch 708/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 1.1558e-05\n", + "Epoch 709/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.1474e-05\n", + "Epoch 710/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 1.1391e-05\n", + "Epoch 711/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.1308e-05\n", + "Epoch 712/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.1225e-05\n", + "Epoch 713/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.1143e-05\n", + "Epoch 714/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.1062e-05\n", + "Epoch 715/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.0982e-05\n", + "Epoch 716/1000\n", + "1/1 [==============================] - 0s 6ms/step - loss: 1.0902e-05\n", + "Epoch 717/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.0822e-05\n", + "Epoch 718/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.0743e-05\n", + "Epoch 719/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.0665e-05\n", + "Epoch 720/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 1.0588e-05\n", + "Epoch 721/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.0510e-05\n", + "Epoch 722/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.0434e-05\n", + "Epoch 723/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.0358e-05\n", + "Epoch 724/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.0282e-05\n", + "Epoch 725/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 1.0207e-05\n", + "Epoch 726/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.0133e-05\n", + "Epoch 727/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 1.0059e-05\n", + "Epoch 728/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 9.9856e-06\n", + "Epoch 729/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 9.9131e-06\n", + "Epoch 730/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 9.8409e-06\n", + "Epoch 731/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 9.7690e-06\n", + "Epoch 732/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 9.6979e-06\n", + "Epoch 733/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 9.6273e-06\n", + "Epoch 734/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 9.5571e-06\n", + "Epoch 735/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 9.4876e-06\n", + "Epoch 736/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 9.4181e-06\n", + "Epoch 737/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 9.3497e-06\n", + "Epoch 738/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 9.2816e-06\n", + "Epoch 739/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 9.2140e-06\n", + "Epoch 740/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 9.1468e-06\n", + "Epoch 741/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 9.0801e-06\n", + "Epoch 742/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 9.0140e-06\n", + "Epoch 743/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 8.9483e-06\n", + "Epoch 744/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 8.8831e-06\n", + "Epoch 745/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 8.8184e-06\n", + "Epoch 746/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 8.7541e-06\n", + "Epoch 747/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 8.6903e-06\n", + "Epoch 748/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 8.6270e-06\n", + "Epoch 749/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 8.5641e-06\n", + "Epoch 750/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 8.5020e-06\n", + "Epoch 751/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 8.4398e-06\n", + "Epoch 752/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 8.3784e-06\n", + "Epoch 753/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 8.3173e-06\n", + "Epoch 754/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 8.2566e-06\n", + "Epoch 755/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 8.1968e-06\n", + "Epoch 756/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 8.1371e-06\n", + "Epoch 757/1000\n", + "1/1 [==============================] - 0s 999us/step - loss: 8.0777e-06\n", + "Epoch 758/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 8.0189e-06\n", + "Epoch 759/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 7.9604e-06\n", + "Epoch 760/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 7.9025e-06\n", + "Epoch 761/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 7.8449e-06\n", + "Epoch 762/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 7.7874e-06\n", + "Epoch 763/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 7.7309e-06\n", + "Epoch 764/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 7.6745e-06\n", + "Epoch 765/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 7.6184e-06\n", + "Epoch 766/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 7.5631e-06\n", + "Epoch 767/1000\n", + "1/1 [==============================] - 0s 998us/step - loss: 7.5081e-06\n", + "Epoch 768/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 7.4532e-06\n", + "Epoch 769/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 7.3992e-06\n", + "Epoch 770/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 7.3449e-06\n", + "Epoch 771/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 7.2915e-06\n", + "Epoch 772/1000\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1/1 [==============================] - 0s 1ms/step - loss: 7.2383e-06\n", + "Epoch 773/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 7.1856e-06\n", + "Epoch 774/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 7.1333e-06\n", + "Epoch 775/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 7.0814e-06\n", + "Epoch 776/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 7.0298e-06\n", + "Epoch 777/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 6.9784e-06\n", + "Epoch 778/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 6.9278e-06\n", + "Epoch 779/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 6.8773e-06\n", + "Epoch 780/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 6.8271e-06\n", + "Epoch 781/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 6.7774e-06\n", + "Epoch 782/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 6.7280e-06\n", + "Epoch 783/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 6.6790e-06\n", + "Epoch 784/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 6.6303e-06\n", + "Epoch 785/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 6.5820e-06\n", + "Epoch 786/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 6.5339e-06\n", + "Epoch 787/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 6.4862e-06\n", + "Epoch 788/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 6.4391e-06\n", + "Epoch 789/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 6.3922e-06\n", + "Epoch 790/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 6.3457e-06\n", + "Epoch 791/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 6.2994e-06\n", + "Epoch 792/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 6.2536e-06\n", + "Epoch 793/1000\n", + "1/1 [==============================] - 0s 6ms/step - loss: 6.2079e-06\n", + "Epoch 794/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 6.1628e-06\n", + "Epoch 795/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 6.1176e-06\n", + "Epoch 796/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 6.0732e-06\n", + "Epoch 797/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 6.0290e-06\n", + "Epoch 798/1000\n", + "1/1 [==============================] - 0s 999us/step - loss: 5.9849e-06\n", + "Epoch 799/1000\n", + "1/1 [==============================] - 0s 6ms/step - loss: 5.9415e-06\n", + "Epoch 800/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 5.8981e-06\n", + "Epoch 801/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 5.8553e-06\n", + "Epoch 802/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 5.8125e-06\n", + "Epoch 803/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 5.7702e-06\n", + "Epoch 804/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 5.7282e-06\n", + "Epoch 805/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 5.6863e-06\n", + "Epoch 806/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 5.6451e-06\n", + "Epoch 807/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 5.6039e-06\n", + "Epoch 808/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 5.5630e-06\n", + "Epoch 809/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 5.5223e-06\n", + "Epoch 810/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 5.4823e-06\n", + "Epoch 811/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 5.4424e-06\n", + "Epoch 812/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 5.4029e-06\n", + "Epoch 813/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 5.3635e-06\n", + "Epoch 814/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 5.3242e-06\n", + "Epoch 815/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 5.2854e-06\n", + "Epoch 816/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 5.2469e-06\n", + "Epoch 817/1000\n", + "1/1 [==============================] - 0s 6ms/step - loss: 5.2088e-06\n", + "Epoch 818/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 5.1708e-06\n", + "Epoch 819/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 5.1332e-06\n", + "Epoch 820/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 5.0958e-06\n", + "Epoch 821/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 5.0585e-06\n", + "Epoch 822/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 5.0216e-06\n", + "Epoch 823/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 4.9853e-06\n", + "Epoch 824/1000\n", + "1/1 [==============================] - 0s 6ms/step - loss: 4.9489e-06\n", + "Epoch 825/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 4.9128e-06\n", + "Epoch 826/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 4.8770e-06\n", + "Epoch 827/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 4.8416e-06\n", + "Epoch 828/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 4.8062e-06\n", + "Epoch 829/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 4.7712e-06\n", + "Epoch 830/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 4.7364e-06\n", + "Epoch 831/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 4.7019e-06\n", + "Epoch 832/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 4.6676e-06\n", + "Epoch 833/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 4.6337e-06\n", + "Epoch 834/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 4.5999e-06\n", + "Epoch 835/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 4.5663e-06\n", + "Epoch 836/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 4.5331e-06\n", + "Epoch 837/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 4.5001e-06\n", + "Epoch 838/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 4.4673e-06\n", + "Epoch 839/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 4.4347e-06\n", + "Epoch 840/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 4.4025e-06\n", + "Epoch 841/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 4.3704e-06\n", + "Epoch 842/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 4.3385e-06\n", + "Epoch 843/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 4.3069e-06\n", + "Epoch 844/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 4.2756e-06\n", + "Epoch 845/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 4.2444e-06\n", + "Epoch 846/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 4.2135e-06\n", + "Epoch 847/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 4.1828e-06\n", + "Epoch 848/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 4.1524e-06\n", + "Epoch 849/1000\n", + "1/1 [==============================] - 0s 6ms/step - loss: 4.1219e-06\n", + "Epoch 850/1000\n", + "1/1 [==============================] - 0s 1000us/step - loss: 4.0921e-06\n", + "Epoch 851/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 4.0622e-06\n", + "Epoch 852/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 4.0326e-06\n", + "Epoch 853/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 4.0030e-06\n", + "Epoch 854/1000\n", + "1/1 [==============================] - 0s 6ms/step - loss: 3.9740e-06\n", + "Epoch 855/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 3.9450e-06\n", + "Epoch 856/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 3.9163e-06\n", + "Epoch 857/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 3.8878e-06\n", + "Epoch 858/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 3.8596e-06\n", + "Epoch 859/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 3.8314e-06\n", + "Epoch 860/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 3.8035e-06\n", + "Epoch 861/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 3.7758e-06\n", + "Epoch 862/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 3.7484e-06\n", + "Epoch 863/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 3.7212e-06\n", + "Epoch 864/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 3.6940e-06\n", + "Epoch 865/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 3.6670e-06\n", + "Epoch 866/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 3.6404e-06\n", + "Epoch 867/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 3.6138e-06\n", + "Epoch 868/1000\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1/1 [==============================] - 0s 5ms/step - loss: 3.5875e-06\n", + "Epoch 869/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 3.5612e-06\n", + "Epoch 870/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 3.5354e-06\n", + "Epoch 871/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 3.5097e-06\n", + "Epoch 872/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 3.4840e-06\n", + "Epoch 873/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 3.4587e-06\n", + "Epoch 874/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 3.4334e-06\n", + "Epoch 875/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 3.4085e-06\n", + "Epoch 876/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 3.3836e-06\n", + "Epoch 877/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 3.3590e-06\n", + "Epoch 878/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 3.3345e-06\n", + "Epoch 879/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 3.3102e-06\n", + "Epoch 880/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 3.2859e-06\n", + "Epoch 881/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 3.2622e-06\n", + "Epoch 882/1000\n", + "1/1 [==============================] - 0s 6ms/step - loss: 3.2385e-06\n", + "Epoch 883/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 3.2147e-06\n", + "Epoch 884/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 3.1913e-06\n", + "Epoch 885/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 3.1680e-06\n", + "Epoch 886/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 3.1451e-06\n", + "Epoch 887/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 3.1220e-06\n", + "Epoch 888/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 3.0993e-06\n", + "Epoch 889/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 3.0768e-06\n", + "Epoch 890/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 3.0544e-06\n", + "Epoch 891/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 3.0320e-06\n", + "Epoch 892/1000\n", + "1/1 [==============================] - 0s 1ms/step - loss: 3.0100e-06\n", + "Epoch 893/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.9880e-06\n", + "Epoch 894/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.9661e-06\n", + "Epoch 895/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 2.9447e-06\n", + "Epoch 896/1000\n", + "1/1 [==============================] - 0s 1ms/step - loss: 2.9230e-06\n", + "Epoch 897/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.9019e-06\n", + "Epoch 898/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 2.8808e-06\n", + "Epoch 899/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 2.8597e-06\n", + "Epoch 900/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 2.8390e-06\n", + "Epoch 901/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.8183e-06\n", + "Epoch 902/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.7977e-06\n", + "Epoch 903/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.7774e-06\n", + "Epoch 904/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.7572e-06\n", + "Epoch 905/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.7371e-06\n", + "Epoch 906/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 2.7171e-06\n", + "Epoch 907/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 2.6973e-06\n", + "Epoch 908/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 2.6776e-06\n", + "Epoch 909/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.6581e-06\n", + "Epoch 910/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 2.6388e-06\n", + "Epoch 911/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 2.6196e-06\n", + "Epoch 912/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 2.6005e-06\n", + "Epoch 913/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.5815e-06\n", + "Epoch 914/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.5628e-06\n", + "Epoch 915/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.5440e-06\n", + "Epoch 916/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.5255e-06\n", + "Epoch 917/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 2.5071e-06\n", + "Epoch 918/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.4889e-06\n", + "Epoch 919/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.4707e-06\n", + "Epoch 920/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.4527e-06\n", + "Epoch 921/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 2.4349e-06\n", + "Epoch 922/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 2.4172e-06\n", + "Epoch 923/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 2.3995e-06\n", + "Epoch 924/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 2.3820e-06\n", + "Epoch 925/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.3646e-06\n", + "Epoch 926/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.3474e-06\n", + "Epoch 927/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 2.3304e-06\n", + "Epoch 928/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 2.3134e-06\n", + "Epoch 929/1000\n", + "1/1 [==============================] - 0s 6ms/step - loss: 2.2963e-06\n", + "Epoch 930/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 2.2797e-06\n", + "Epoch 931/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 2.2631e-06\n", + "Epoch 932/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 2.2466e-06\n", + "Epoch 933/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.2304e-06\n", + "Epoch 934/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.2141e-06\n", + "Epoch 935/1000\n", + "1/1 [==============================] - 0s 999us/step - loss: 2.1980e-06\n", + "Epoch 936/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 2.1818e-06\n", + "Epoch 937/1000\n", + "1/1 [==============================] - 0s 998us/step - loss: 2.1660e-06\n", + "Epoch 938/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.1503e-06\n", + "Epoch 939/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 2.1345e-06\n", + "Epoch 940/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 2.1189e-06\n", + "Epoch 941/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.1036e-06\n", + "Epoch 942/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.0883e-06\n", + "Epoch 943/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.0731e-06\n", + "Epoch 944/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 2.0579e-06\n", + "Epoch 945/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 2.0430e-06\n", + "Epoch 946/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 2.0281e-06\n", + "Epoch 947/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 2.0133e-06\n", + "Epoch 948/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.9987e-06\n", + "Epoch 949/1000\n", + "1/1 [==============================] - 0s 7ms/step - loss: 1.9841e-06\n", + "Epoch 950/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.9696e-06\n", + "Epoch 951/1000\n", + "1/1 [==============================] - 0s 8ms/step - loss: 1.9553e-06\n", + "Epoch 952/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 1.9411e-06\n", + "Epoch 953/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.9269e-06\n", + "Epoch 954/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.9129e-06\n", + "Epoch 955/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.8989e-06\n", + "Epoch 956/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.8851e-06\n", + "Epoch 957/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.8714e-06\n", + "Epoch 958/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.8577e-06\n", + "Epoch 959/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.8442e-06\n", + "Epoch 960/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.8309e-06\n", + "Epoch 961/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 1.8174e-06\n", + "Epoch 962/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.8042e-06\n", + "Epoch 963/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.7911e-06\n", + "Epoch 964/1000\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1/1 [==============================] - 0s 3ms/step - loss: 1.7779e-06\n", + "Epoch 965/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.7651e-06\n", + "Epoch 966/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.7521e-06\n", + "Epoch 967/1000\n", + "1/1 [==============================] - 0s 7ms/step - loss: 1.7395e-06\n", + "Epoch 968/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.7268e-06\n", + "Epoch 969/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.7142e-06\n", + "Epoch 970/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.7017e-06\n", + "Epoch 971/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.6892e-06\n", + "Epoch 972/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.6771e-06\n", + "Epoch 973/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.6648e-06\n", + "Epoch 974/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.6527e-06\n", + "Epoch 975/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.6406e-06\n", + "Epoch 976/1000\n", + "1/1 [==============================] - 0s 9ms/step - loss: 1.6287e-06\n", + "Epoch 977/1000\n", + "1/1 [==============================] - 0s 6ms/step - loss: 1.6168e-06\n", + "Epoch 978/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 1.6051e-06\n", + "Epoch 979/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.5934e-06\n", + "Epoch 980/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 1.5817e-06\n", + "Epoch 981/1000\n", + "1/1 [==============================] - 0s 6ms/step - loss: 1.5703e-06\n", + "Epoch 982/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 1.5587e-06\n", + "Epoch 983/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.5475e-06\n", + "Epoch 984/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 1.5362e-06\n", + "Epoch 985/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.5249e-06\n", + "Epoch 986/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 1.5139e-06\n", + "Epoch 987/1000\n", + "1/1 [==============================] - 0s 6ms/step - loss: 1.5028e-06\n", + "Epoch 988/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.4919e-06\n", + "Epoch 989/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.4810e-06\n", + "Epoch 990/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 1.4701e-06\n", + "Epoch 991/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.4596e-06\n", + "Epoch 992/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 1.4489e-06\n", + "Epoch 993/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.4383e-06\n", + "Epoch 994/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.4279e-06\n", + "Epoch 995/1000\n", + "1/1 [==============================] - 0s 2ms/step - loss: 1.4174e-06\n", + "Epoch 996/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.4071e-06\n", + "Epoch 997/1000\n", + "1/1 [==============================] - 0s 5ms/step - loss: 1.3968e-06\n", + "Epoch 998/1000\n", + "1/1 [==============================] - 0s 4ms/step - loss: 1.3868e-06\n", + "Epoch 999/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.3766e-06\n", + "Epoch 1000/1000\n", + "1/1 [==============================] - 0s 3ms/step - loss: 1.3665e-06\n", + "[[6.004167]]\n" + ] + } + ], + "source": [ + "import tensorflow as tf\n", + "import numpy as np\n", + "from tensorflow import keras\n", + "model = tf.keras.Sequential([keras.layers.Dense(units=1, input_shape=[1])])\n", + "model.compile(optimizer='sgd', loss='mean_squared_error')\n", + "xs = np.array([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], dtype=float)\n", + "ys = np.array([1.0, 1.5, 2.0, 2.5, 3.0, 3.5], dtype=float)\n", + "model.fit(xs, ys, epochs=1000)\n", + "print(model.predict([11.0]))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "colab": { + "name": "Sol. LAB_02 _Pred_Precios_casas.ipynb", + "provenance": [] + }, + "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.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} From a7a2e9ce4b4a4190e4a12d5f856a321ace9b8f85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20Quispe?= <47084770+RubenMcCarty@users.noreply.github.com> Date: Sat, 28 Nov 2020 10:54:57 -0500 Subject: [PATCH 04/51] =?UTF-8?q?Regresi=C3=B3n=20Lineal=20simple=5FPredit?= =?UTF-8?q?=5FEmisionCO2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...63n_Linea_Predic_Emisi\303\263n_CO2.ipynb" | 1016 +++++++++++++++++ 1 file changed, 1016 insertions(+) create mode 100644 "Lab_02_Regresi\303\263n_Linea_Predic_Emisi\303\263n_CO2.ipynb" diff --git "a/Lab_02_Regresi\303\263n_Linea_Predic_Emisi\303\263n_CO2.ipynb" "b/Lab_02_Regresi\303\263n_Linea_Predic_Emisi\303\263n_CO2.ipynb" new file mode 100644 index 0000000..3f021d2 --- /dev/null +++ "b/Lab_02_Regresi\303\263n_Linea_Predic_Emisi\303\263n_CO2.ipynb" @@ -0,0 +1,1016 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "view-in-github" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "_LqUaT4cbuUC" + }, + "source": [ + "# Regresión Lineal Simple ---Predición de Emisión de CO2 \n", + "## Creado por [M.Sc. Ruben Quispe](https://machinelearningmastery.com/tutorial-to-implement-k-nearest-neighbors-in-python-from-scratch/)\n", + "### Curso [Machine Learning](https://eie.pe/curso-machine-learning/)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "a6uUg1JIbuUH" + }, + "source": [ + "# Acerca de este laboratorio\n", + "Aprenderemos cómo utilizar la librería scikit-learn para implementar regresión lineal simple. Descargaremos un set de datos relacionado al consumo de combustible y a la emisión del dióxido de Carbono en autos. Luego, separaremos nuestros datos en un set de entrenamiento y en otro set de prueba, crearemos un modelo utilizando un set de entrenamiento, se evaluará utilizando el set de prueba para finalmente usar el modelo para predecir valores desconocidos\n", + "\n", + "# Tabla de contenidos\n", + "1. Comprendiendo la data\n", + "2. Leyendo la data\n", + "3. Explorando la data\n", + "4. Modelo de regresión simple" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "x6ATViTSbuUJ" + }, + "source": [ + "# 1. Importar las librerias " + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "id": "xrEYcfhdbuUK" + }, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import pandas as pd\n", + "import pylab as pl\n", + "import numpy as np\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "CYHLNxJrbuUg" + }, + "source": [ + "# Nuestro dataset comprende estos datos\n", + "Hemos descargado un conjunto de datos de consumo de combustible, FuelConsumption.csv, que contiene clasificaciones de consumo de combustible específicas del modelo y emisiones estimadas de dióxido de carbono para los vehículos ligeros nuevos para la venta minorista en Canadá. [Dataset](https://open.canada.ca/data/en/dataset/98f1a129-f628-4ce4-b24d-6f16bf24dd64)\n", + "1. MODELYEAR e.g. 2014\n", + "2. MAKE e.g. Acura\n", + "3. MODEL e.g. ILX\n", + "4. VEHICLE CLASS e.g. SUV\n", + "5. ENGINE SIZE e.g. 4.7\n", + "6. CYLINDERS e.g 6\n", + "7. TRANSMISSION e.g. A6\n", + "8. FUEL CONSUMPTION in CITY(L/100 km) e.g. 9.9\n", + "9. FUEL CONSUMPTION in HWY (L/100 km) e.g. 8.9\n", + "10. FUEL CONSUMPTION COMB (L/100 km) e.g. 9.2\n", + "11. CO2 EMISSIONS (g/km) e.g. 182 --> low --> 0" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Kjfq_J_7buUQ" + }, + "source": [ + "# 2. Cargar los dataset" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "id": "_kSpATgCbuUR" + }, + "outputs": [], + "source": [ + "df = pd.read_csv(\"D:/TECHNOLOGY 2020/Data/FuelConsumption.csv\")" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "id": "RAVv7NRwbuUY", + "outputId": "3c8199b4-957c-4c1b-ccf3-66279b81d281" + }, + "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", + "
MODELYEARMAKEMODELVEHICLECLASSENGINESIZECYLINDERSTRANSMISSIONFUELTYPEFUELCONSUMPTION_CITYFUELCONSUMPTION_HWYFUELCONSUMPTION_COMBFUELCONSUMPTION_COMB_MPGCO2EMISSIONS
02014ACURAILXCOMPACT2.04AS5Z9.96.78.533196
12014ACURAILXCOMPACT2.44M6Z11.27.79.629221
22014ACURAILX HYBRIDCOMPACT1.54AV7Z6.05.85.948136
32014ACURAMDX 4WDSUV - SMALL3.56AS6Z12.79.111.125255
42014ACURARDX AWDSUV - SMALL3.56AS6Z12.18.710.627244
52014ACURARLXMID-SIZE3.56AS6Z11.97.710.028230
62014ACURATLMID-SIZE3.56AS6Z11.88.110.128232
72014ACURATL AWDMID-SIZE3.76AS6Z12.89.011.125255
82014ACURATL AWDMID-SIZE3.76M6Z13.49.511.624267
\n", + "
" + ], + "text/plain": [ + " MODELYEAR MAKE MODEL VEHICLECLASS ENGINESIZE CYLINDERS \\\n", + "0 2014 ACURA ILX COMPACT 2.0 4 \n", + "1 2014 ACURA ILX COMPACT 2.4 4 \n", + "2 2014 ACURA ILX HYBRID COMPACT 1.5 4 \n", + "3 2014 ACURA MDX 4WD SUV - SMALL 3.5 6 \n", + "4 2014 ACURA RDX AWD SUV - SMALL 3.5 6 \n", + "5 2014 ACURA RLX MID-SIZE 3.5 6 \n", + "6 2014 ACURA TL MID-SIZE 3.5 6 \n", + "7 2014 ACURA TL AWD MID-SIZE 3.7 6 \n", + "8 2014 ACURA TL AWD MID-SIZE 3.7 6 \n", + "\n", + " TRANSMISSION FUELTYPE FUELCONSUMPTION_CITY FUELCONSUMPTION_HWY \\\n", + "0 AS5 Z 9.9 6.7 \n", + "1 M6 Z 11.2 7.7 \n", + "2 AV7 Z 6.0 5.8 \n", + "3 AS6 Z 12.7 9.1 \n", + "4 AS6 Z 12.1 8.7 \n", + "5 AS6 Z 11.9 7.7 \n", + "6 AS6 Z 11.8 8.1 \n", + "7 AS6 Z 12.8 9.0 \n", + "8 M6 Z 13.4 9.5 \n", + "\n", + " FUELCONSUMPTION_COMB FUELCONSUMPTION_COMB_MPG CO2EMISSIONS \n", + "0 8.5 33 196 \n", + "1 9.6 29 221 \n", + "2 5.9 48 136 \n", + "3 11.1 25 255 \n", + "4 10.6 27 244 \n", + "5 10.0 28 230 \n", + "6 10.1 28 232 \n", + "7 11.1 25 255 \n", + "8 11.6 24 267 " + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.head(9)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "RAVgtAg-buUi" + }, + "source": [ + "# 3 Explorar nuestros dataset\n", + "Tengamos primero una exploración descriptiva de nuestros datos." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "id": "kKuCzyWCbuUj", + "outputId": "b7b2c7e1-23eb-4abf-986f-06498d0b7e67" + }, + "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", + "
MODELYEARENGINESIZECYLINDERSFUELCONSUMPTION_CITYFUELCONSUMPTION_HWYFUELCONSUMPTION_COMBFUELCONSUMPTION_COMB_MPGCO2EMISSIONS
count1067.01067.0000001067.0000001067.0000001067.0000001067.0000001067.0000001067.000000
mean2014.03.3462985.79475213.2965329.47460211.58088126.441425256.228679
std0.01.4158951.7974474.1012532.7945103.4855957.46870263.372304
min2014.01.0000003.0000004.6000004.9000004.70000011.000000108.000000
25%2014.02.0000004.00000010.2500007.5000009.00000021.000000207.000000
50%2014.03.4000006.00000012.6000008.80000010.90000026.000000251.000000
75%2014.04.3000008.00000015.55000010.85000013.35000031.000000294.000000
max2014.08.40000012.00000030.20000020.50000025.80000060.000000488.000000
\n", + "
" + ], + "text/plain": [ + " MODELYEAR ENGINESIZE CYLINDERS FUELCONSUMPTION_CITY \\\n", + "count 1067.0 1067.000000 1067.000000 1067.000000 \n", + "mean 2014.0 3.346298 5.794752 13.296532 \n", + "std 0.0 1.415895 1.797447 4.101253 \n", + "min 2014.0 1.000000 3.000000 4.600000 \n", + "25% 2014.0 2.000000 4.000000 10.250000 \n", + "50% 2014.0 3.400000 6.000000 12.600000 \n", + "75% 2014.0 4.300000 8.000000 15.550000 \n", + "max 2014.0 8.400000 12.000000 30.200000 \n", + "\n", + " FUELCONSUMPTION_HWY FUELCONSUMPTION_COMB FUELCONSUMPTION_COMB_MPG \\\n", + "count 1067.000000 1067.000000 1067.000000 \n", + "mean 9.474602 11.580881 26.441425 \n", + "std 2.794510 3.485595 7.468702 \n", + "min 4.900000 4.700000 11.000000 \n", + "25% 7.500000 9.000000 21.000000 \n", + "50% 8.800000 10.900000 26.000000 \n", + "75% 10.850000 13.350000 31.000000 \n", + "max 20.500000 25.800000 60.000000 \n", + "\n", + " CO2EMISSIONS \n", + "count 1067.000000 \n", + "mean 256.228679 \n", + "std 63.372304 \n", + "min 108.000000 \n", + "25% 207.000000 \n", + "50% 251.000000 \n", + "75% 294.000000 \n", + "max 488.000000 " + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.describe()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "id": "RqSPJOSGbuUp", + "outputId": "0fd26976-c5c5-4a13-8d5f-a9190bf0aa4f" + }, + "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", + "
CYLINDERSENGINESIZEFUELCONSUMPTION_COMBCO2EMISSIONS
042.08.5196
142.49.6221
241.55.9136
363.511.1255
463.510.6244
\n", + "
" + ], + "text/plain": [ + " CYLINDERS ENGINESIZE FUELCONSUMPTION_COMB CO2EMISSIONS\n", + "0 4 2.0 8.5 196\n", + "1 4 2.4 9.6 221\n", + "2 4 1.5 5.9 136\n", + "3 6 3.5 11.1 255\n", + "4 6 3.5 10.6 244" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Seleccionemos algunas características para explorar más en detalle.\n", + "cdf = df[['CYLINDERS', 'ENGINESIZE', 'FUELCONSUMPTION_COMB', 'CO2EMISSIONS']]\n", + "cdf.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "id": "Xubo6gzUbuUu", + "outputId": "9e41e0f1-b805-41bb-f934-e94a3d26c1ca" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# Podemos realizar graficos como se comportan estos datos\n", + "viz = cdf[['CYLINDERS', 'ENGINESIZE', 'FUELCONSUMPTION_COMB', 'CO2EMISSIONS']]\n", + "viz.hist()\n", + "plt.show" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "K22JrWO1buU1", + "outputId": "5af9e6f7-c415-493e-d839-f51536d19633" + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light", + "tags": [] + }, + "output_type": "display_data" + } + ], + "source": [ + "# Ahora, grafiquemos cada una de estas características frente a la emisión, para ver qué tan lineal es su relación:\n", + "plt.scatter(cdf.FUELCONSUMPTION_COMB, cdf.CO2EMISSIONS, color ='blue')\n", + "plt.xlabel('FUELCONSUMPTION_COMB')\n", + "plt.ylabel('EmissionCO2')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "id": "5qDogVxibuU6", + "outputId": "f5abdcc0-903d-4c8c-fd71-3859484eb449" + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# ver la grafica de enginesize vs emisionCO2\n", + "plt.scatter(cdf.ENGINESIZE, cdf.CO2EMISSIONS, color ='blue')\n", + "plt.xlabel('ENGINESIZE')\n", + "plt.ylabel('EmissionCO2')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "uujXjyp8buU-" + }, + "source": [ + "# Practica lab\n", + "Grafique CILINDRO vs la Emisión, para ver cuán lineal es su relación:" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "id": "o8BrRLjzbuU_", + "outputId": "c74f4faf-2b43-4401-fbef-fc6eb65fa40a" + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAEHCAYAAABBW1qbAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAAeW0lEQVR4nO3df5QddZnn8fcn3SQQxeVXgzEh6QwGNEEnOD0cM8yuQMLAIkt0d3XitpoVzjRLQKPOqmQye3ScjcuuILIz23FazSRqa8z445BFQEkj6+ogOR2JSIJI3PxqEknEdUXCBNN59o+qvn27c7vvvZ2uW7f7fl7n3FNVT/24T4pwn1R9q75fRQRmZmYAU/JOwMzM6oeLgpmZFbgomJlZgYuCmZkVuCiYmVmBi4KZmRU0Z3lwSXuA54F+4FhEtEk6C/gq0ArsAd4eEf833X4VcGO6/fsi4tujHf+cc86J1tbWrNI3M5uUtm3b9suIaCm1LtOikLoiIn5ZtHwb0BMRt0u6LV3+iKT5wDJgAfAqYIukCyOif6QDt7a20tvbm2XuZmaTjqS9I63L4/bRUmBDOr8BeEtRfGNEHI2I3cAu4NLap2dm1riyLgoBfEfSNkkdaey8iDgIkE7PTeMzgf1F+/alMTMzq5Gsbx9dFhEHJJ0LPCjpp6NsqxKxE/rgSItLB8Ds2bPHJ0szMwMyvlKIiAPp9BDwTZLbQc9KmgGQTg+lm/cB5xftPgs4UOKYXRHRFhFtLS0l20nMzGyMMisKkl4m6fSBeeBPgCeAzcDydLPlwD3p/GZgmaRpkuYC84CtWeVnZmYnyvJK4Tzg+5J+TPLj/q2IeAC4HbhK0tPAVekyEbED2ATsBB4AbhntySMzaxDd3dDaClOmJNPu7rwzmtQ0kbvObmtrCz+SajaJdXdDRwccOTIYmz4durqgvT2/vCY4Sdsioq3UOr/RbGb1a/XqoQUBkuXVq/PJpwG4KJhZ/dq3r7q4nTQXBTOrXyM9du7H0TPjomBm9WvNmqQNodj06UncMuGiYGb1q709aVSeMwekZOpG5kzVokM8M7Oxa293EaghXymYmVmBi4KZmRW4KJiZWYGLgpmZFbgomJlZgYuCmZkVuCiYmVmBi4KZmRW4KJiZWYGLgpmZFbgomJlZQeZFQVKTpMck3Zsuf0zSM5K2p59ri7ZdJWmXpKckXZ11bmZmNlQtOsRbCTwJvKIodldE3FG8kaT5wDJgAfAqYIukCz1Os5lZ7WR6pSBpFvBm4HMVbL4U2BgRRyNiN7ALuDTL/MzMbKisbx99GvgwcHxY/FZJj0taJ+nMNDYT2F+0TV8aMzOzGsmsKEi6DjgUEduGrVoLXAAsBA4Cdw7sUuIwUeK4HZJ6JfUePnx4HDM2M7MsrxQuA66XtAfYCFwp6UsR8WxE9EfEceCzDN4i6gPOL9p/FnBg+EEjoisi2iKiraWlJcP0zcwaT2ZFISJWRcSsiGglaUB+KCLeKWlG0WZvBZ5I5zcDyyRNkzQXmAdszSo/MzM7UR7Dcf43SQtJbg3tAW4CiIgdkjYBO4FjwC1+8sjMrLZq8vJaRDwcEdel8++KiNdFxOsj4vqIOFi03ZqIuCAiLoqI+2uRm1ld6u6G1laYMiWZdnfnnZE1iDyuFMxsNN3d8O53w/H0ob29e5Nl8AD2ljl3c2FWb266abAgDDh+PImbZcxFwazevPBCdXGzceSiYGZmBS4KZmZW4KJgZmYFLgpm9ebmm6uLm40jFwWzetPZCYsXD40tXpzEzTJ+h8VFwazedHfDQw8NjT30kF9gs+TvQEdH8u5KRDLt6BjXvxuKOKEj0gmjra0tent7807DbHxNmwYvvXRifOpUOHq09vlY/WhtTQrBcHPmwJ49FR9G0raIaCu1zlcKZvWmVEEYLW6NY9++6uJj4KJgZjZRzJ5dXXwMXBTMzCaKNWtg+vShsenTk/g4cVEws/q2YgU0N4OUTFesyDuj/LS3Q1dX0oYgJdOurnHtKNG9pJpZ/VqxAtauHVzu7x9cbtRHdNvbM+0t11cKZla/urqqi9tJc1Ews/rVP8LgiyPF7aRlXhQkNUl6TNK96fJZkh6U9HQ6PbNo21WSdkl6StLVWedmZnWuqam6uJ20WlwprASeLFq+DeiJiHlAT7qMpPnAMmABcA3QKcn/5c0aWUdHdXE7aZkWBUmzgDcDnysKLwU2pPMbgLcUxTdGxNGI2A3sAi7NMj+zujRtWnXxyeyyy5Injoo1Nydxy0TWVwqfBj4MFI8teF5EHARIp+em8ZnA/qLt+tKYWWMZqSuLRuziYvVqOHZsaOzYsSRumcisKEi6DjgUEdsq3aVE7ISOmSR1SOqV1Hv48OGTytGsLk0Z4X/LkeKTWQ26dbChsvxbdhlwvaQ9wEbgSklfAp6VNAMgnR5Kt+8Dzi/afxZwYPhBI6IrItoioq2lpSXD9M1ycvx4dfHJrAbdOkw4CxYkL64NfBYsGNfDZ1YUImJVRMyKiFaSBuSHIuKdwGZgebrZcuCedH4zsEzSNElzgXnA1qzyM7MJoAbdOkwoCxbAzp1DYzt3jmthyON69HbgKklPA1ely0TEDmATsBN4ALglIvwwsjWes8+uLj6ZtbfDokVDY4sWZfpGb10bXhDKxcegJkUhIh6OiOvS+eciYnFEzEunvyrabk1EXBARF0XE/bXIzazu3H33ie0HU6Yk8UazYgX09AyN9fQ0dv9HGWvAliuzCUAafblRuJuLmnNRMKs3K1ee2I1Df38SbzTu5mKo+fOri4+Bi4JZvXnuuerik5m7uRhqxw447bShsdNOS+LjxEXBzOqXu7kYaskSePHFobEXX0zi48TjKZhZ/RoYM6GrK7ll1NSUFIRGHUtheKN7ufgYuCiYWX3r7GzcIpAD3z4yM7MCFwUzs4li8eLq4mPgomBmNlFs2XJiAVi8OImPExcFM7OJ5MILBx/JbWpKlseRG5rNzCaKFStg7drB5f7+weVxaoz3lYKZ2URRg24/XBTMrL51d0Nra9IpYGtrstyoatDth28fmVn96u5OXlY7ciRZ3rt38G3mRuw+e8qU0oMtjeOofL5SMLP6tXr1YEEYcORI447RXINR+VwUzKx+eYzmmnNRMLP65TGaay6zoiDpVElbJf1Y0g5Jf5XGPybpGUnb08+1RfuskrRL0lOSrs4qNzObIF796uridtLKNjSnP86zgJ6I2FMUvyEi1o2y61Hgyoj4raRTgO9LGhhi866IuGPY98wHlgELgFcBWyRd6HGazRrYww9XF7eTNuqVgqRPAKuB1wE9kt5btPrW0faNxG/TxVPST4yyy1JgY0QcjYjdwC7g0jL5m9lk5pHXhqrBoEPlbh/9K5J/7b8f+APgX0q6K11XdtBYSU2StgOHgAcj4tF01a2SHpe0TtKZaWwmsL9o9740Zo1gxQpobk7GIm5u9sDslvDIa0PVYNChckWhOSKOAUTEr0mKxCsk/QMwtdzBI6I/IhaS3H66VNLFwFrgAmAhcBC4M928VJE54cpCUoekXkm9hw8fLpeCTQQDr+4P/Otv4NV9FwbzyGtDdXbCzTcP7fvo5pvHdbyJckXh55LeNLCQ/sjfCDwFvLbSL0kLysPANRHxbHqc48BnGbxF1AecX7TbLOBAiWN1RURbRLS1tLRUmoLVsxq8um8TVA1+BCeczk44dgwikuk4n4tyReFtwNbhwYj4S4b+gJ9AUoukM9L504AlwE8lzSja7K3AE+n8ZmCZpGmS5gLzSn23TUK+b2yjyfhH0IYa9emjiHhR0lRJ7yF5KiiAncCXI+KZMseeAWyQ1ERSfDZFxL2SvihpYXqsPcBN6XftkLQpPf4x4BY/edQgmppKF4BGvW9slqNRi0L6mOhm4AfANpL7/pcDqyVdHxE7R9o3Ih4HLikRf9co+6wB1lSUuU0eHR1DuwMujptZTZV7T+FvgJsj4sHioKQlwP8ArsgqMWsgnZ3ws59BT89gbPFi3yYwy0G5NoWZwwsCQERsAV6ZTUrWcLq74ZFHhsYeeaSxu0g2y0m5ojBF0rThQUmn4m63bby4J0yzulGuKHwB+Lqk1oFAOr8J+GJ2aVlDcU+YZnVj1KIQEf8ZeAD4nqRfSvol8L9I3k7+eC0StAbgnjDN6kbZXlIj4m8jYjYwF5gbEXMi4m+yT80axrXXVhc3s8yU6xDvg5JuBIiI5yPi+TT+Xknvr0F+1gjuu6+6uJllptyVwg2UbjvoSteZnby9e6uLm1lmyhWFiIiXSgSPUkEvqWZmNrGUbVOQdF4lMTMzm/jKFYVPAt+S9CZJp6efy4H/Cdwx6p5mZjbhlOsQ7wuSDgMfBy5Ow08AH42I+0fe08zMJqKybyWnP/4uAGZmDaCirioktQB/BrQW7xMRfgLJzGwSqbT/onuA/w1sATzGgZnZJFVpUZgeER/JNBMzM8td2UdSU/dKcp8DZmaTXKVFYSVJYfgnSc+nn9+MtoOkUyVtlfRjSTsk/VUaP0vSg5KeTqdnFu2zStIuSU9JunrsfywzMxuLiopCRJweEVMi4tR0/vSIeEWZ3Y4CV0bE7wMLgWskvRG4DeiJiHlAT7o8MPTnMpKxoK8BOtPxnc3MrEYqvVJA0vWS7kg/15XbPhK/TRdPST8BLAU2pPENwFvS+aXAxog4GhG7gV3ApZXmZ2ZmJ6+ioiDpdpJbSDvTz8o0Vm6/JknbgUMkYzA8CpwXEQcB0um56eYzgf1Fu/elMTMzq5FKnz66FlgYEccBJG0AHiO99TOSiOgHFko6A/impItH2bxUB3txwkZSB9ABMNuDsJiZjauKbx8BZxTN/7NqviQifg08TNJW8KykGQDp9FC6WR9wftFus4ADJY7VFRFtEdHW0tJSTRpmZlZGpUXhvwCPSVqfXiVsAz4x2g6SWtIrBCSdBiwBfgpsBpanmy0neTGONL5M0jRJc4F5wNYq/ixmZnaSKrp9FBFfkfQw8Ickt3k+EhG/KLPbDGBD+gTRFGBTRNwr6RFgUzqi2z7gbel37JC0iaTN4hhwS3r7aXJasgR6egaXFy+GLVvyy8fMDFDECbftB1dKr4mIn0p6Q6n1EfGjzDKrQFtbW/T29uaZwtgMLwgDGrUwaJTxmkb5+zlp+XxYxiRti4i2UuvKXSl8kKRR984S6wK48iRza0ylCsJocTOzGik3nkJHOr2iNumYmVmeKn1P4W2STk/n/1LSNyRdkm1qZmZWa5U+ffSfIuJ5SX8MXE3yJvJnskvLzMzyUGlRGHgK6M3A2oi4B5iaTUpmZpaXSovCM5L+Dng7cJ+kaVXsa8M1jdDP30hxM7MaqfSH/e3At4Fr0reTzwI+lFVSk15HR3VxM7MaqbTvoxnAtyLiqKTLgdcDX8gqKTMzy0elVwpfB/olvRr4PDAX+HJmWU12nxmhjX6kuJlZjVRaFI5HxDHgXwOfjogPkFw92FiM9Faq31Y1s5xVWhR+J+kdwLuBe9PYKdmkZGZmeam0KLwHWASsiYjdaS+mX8ouLTMzy0OlvaTuBN5XtLwbKDvympmZTSyjFgVJmyLi7ZJ+wtBR0EQyDPPrM83OzMxqqtyVwsp0el3WiZiZWf7K9ZJ6MJ3uBZD0inL7mJnZxFXRD7ykm4CPAy8yeBspgN/LKC8zM8tBpU8f/UdgQUS0RsTc9DNqQZB0vqTvSnpS0g5JK9P4xyQ9I2l7+rm2aJ9VknZJekrS1WP/Y5mZ2VhUeivo58CRKo99DPjziPhROhbDNkkPpuvuiog7ijeWNB9YBiwAXgVskXThpB6n2ayUs8+G554rHTfLWKVFYRXwj5IeBY4OBCPifSPtkLZHDLRJPC/pSWDmKN+xFNgYEUeB3ZJ2AZcCj1SYo9nkcPfdcMMN8NJLg7GpU5O4WcYqvX30d8BDwA+BbUWfikhqBS4BHk1Dt0p6XNI6SWemsZnA/qLd+hi9iJhNTu3tcOONg12pNzUly+3t+eZlDaHSK4VjEfHBsXyBpJeTdKj3/oj4jaS1wF+TNFT/NXAncAPJuw/DndAZkKQOoANg9uzZY0nJrL51d8OGDdCf3jnt70+WL7vMhcEyV+mVwncldUiaIemsgU+5nSSdQlIQuiPiGwAR8WxE9EfEceCzJLeIILkyOL9o91nAgeHHjIiuiGiLiLaWlpYK0zebQFavhiPDmvCOHEniZhmr9Erh36XTVUWxUR9JlSSSbrafjIhPFcVnDLz/ALwVeCKd3wx8WdKnSBqa5wFbK8zPbPLYt6+6uNk4qrTvo7ljOPZlwLuAn0jansb+AniHpIUkRWUPcFP6HTskbQJ2kjy5dIufPLKGNHs27N1bOm6WsVFvH0n6cNH824at+8Ro+0bE9yNCEfH6iFiYfu6LiHdFxOvS+PVFVw1ExJqIuCAiLoqI+8f6hzKb0NasgenTh8amT0/iZhkr16awrGh+1bB114xzLmYGSWNyVxfMmQNSMu3qciOz1US5oqAR5kst20S0YgU0Nyc/Ps3NybLlr70d9uyB48eTqQuC1Ui5NoUYYb7Usk00K1bA2rWDy/39g8udnfnkZGa5UowyLrCkfuAFkquC0xjs6kLAqRGR65CcbW1t0dvbm2cKY6NRLrJqOU5zc/Pgs/DFmprg2LHa5VEv58OsQUjaFhFtpdaV6zq7KZuUrC6UKgijxc1s0qv05TWbjJpGqPkjxc1s0nNRaGQXXVRd3MwmPReFRrZzZ3VxM5v0XBTMzKzARcHMzApcFMzMrMBFwczMClwUzMyswEXBzMwKXBQa2dlnVxc3s0nPRaGR3X03TJ06NDZ1ahI3s4bkotDI2tth3bqh/favW+dums0aWGZFQdL5kr4r6UlJOyStTONnSXpQ0tPp9MyifVZJ2iXpKUlXZ5WbFamHfvuHX62Ui5tZZrK8UjgG/HlEvBZ4I3CLpPnAbUBPRMwDetJl0nXLgAUko7p1SnLPbI3gxhuri5tZZjIrChFxMCJ+lM4/DzwJzASWAhvSzTYAb0nnlwIbI+JoROwGdgGXZpWf1ZH77qsubmaZqUmbgqRW4BLgUeC8iDgISeEAzk03mwnsL9qtL43ZZLdvX3VxM8tM5kVB0suBrwPvj4jfjLZpidgJw25J6pDUK6n38OHD45Wm5Wn27OriZpaZTIuCpFNICkJ3RHwjDT8raUa6fgZwKI33AecX7T4LODD8mBHRFRFtEdHW0tKSXfJWO2vWwPTpQ2PTpydxM6upLJ8+EvB54MmI+FTRqs3A8nR+OXBPUXyZpGmS5gLzgK1Z5Wd1pL0dFi0aGlu0yI/GmuUgyyuFy4B3AVdK2p5+rgVuB66S9DRwVbpMROwANgE7gQeAWyLCgwU3ghUroKdnaKynJ4mbWU0p4oTb9hNGW1tb9Pb25p1G9VSq+SQ1gf97jJnPh1lNSdoWEW2l1vmNZjMzK3BRMDOzAhcFMzMrcFGw/C1eXF3czDLjomD527LlxAKweHESN7OaclGw+nDhhdCU9n/Y1JQsm1nNNeedgBkrVsDatYPL/f2Dy52d+eRk1qB8pWD56+qqLm5mmXFRsPz1j/Di+khxM8uMi4KZmRW4KJiZWYGLguVvzpzq4maWGRcFy5/HUzCrGy4Klr/29uRJozlzkh5T58xJlj2eglnN+T0Fqw/t7S4CZnXAVwpmZlbgomBmZgVZjtG8TtIhSU8UxT4m6Zlhw3MOrFslaZekpyRdnVVeZmY2siyvFNYD15SI3xURC9PPfQCS5gPLgAXpPp2SmjLMzczMSsisKETE94BfVbj5UmBjRByNiN3ALuDSrHIzM7PS8mhTuFXS4+ntpTPT2Exgf9E2fWksG0uWJI8+DnyWLMnsq8zMJpJaF4W1wAXAQuAgcGcaV4lto9QBJHVI6pXUe/jw4eozWLIEenqGxnp6alsYmka4MzZS3MysRmpaFCLi2Yjoj4jjwGcZvEXUB5xftOks4MAIx+iKiLaIaGtpaak+ieEFoVw8C+edV13czKxGaloUJM0oWnwrMPBk0mZgmaRpkuYC84Cttcytpg6UrHcjx83MaiSzN5olfQW4HDhHUh/wUeBySQtJbg3tAW4CiIgdkjYBO4FjwC0R4c70zcxqLLOiEBHvKBH+/CjbrwGy7wFt/nzYubN03MyswTXeG80vvFBd3MysgTReUdi3r7q4mVkDabyiMHt2dXEzswbSeEWhHgZ08XsKZlanGq8o1MOALqedVl3czKxGGnOQnbwHdPntb6uLm5nVSONdKZiZ2YhcFMzMrMBFwczMClwUzMyswEUhDy9/eXVxM7MacVHIw2c+A83DHvxqbk7iZmY5clHIQ3s7rF8/9F2J9evzfUzWzAwXhfz84AfQ1wcRyfQHP8g7IzOzBn15LW8rVsDatYPL/f2Dy52d+eRkZoavFPIxUtuB2xTMLGcuCnmIqC5uZlYjmRUFSeskHZL0RFHsLEkPSno6nZ5ZtG6VpF2SnpJ0dVZ5mZnZyLK8UlgPXDMsdhvQExHzgJ50GUnzgWXAgnSfTkmTtx9pv6dgZnUqs6IQEd8DfjUsvBTYkM5vAN5SFN8YEUcjYjewC7g0q9xy5/cUzKxO1bpN4byIOAiQTs9N4zOB/UXb9aWxycnvKZhZnaqXR1JVIlay1VVSB9ABMHsiD6GZ95gOZmYl1PpK4VlJMwDS6aE03gecX7TdLOBAqQNERFdEtEVEW0tLS6bJmpk1mloXhc3A8nR+OXBPUXyZpGmS5gLzgK01zs3MrOFldvtI0leAy4FzJPUBHwVuBzZJuhHYB7wNICJ2SNoE7ASOAbdERH9WuZmZWWmZFYWIeMcIqxaPsP0aYE1W+ZiZWXl+o9nMzAoUE7hrBUmHgb1553GSzgF+mXcSdcTnYyifj0E+F0OdzPmYExEln9SZ0EVhMpDUGxFteedRL3w+hvL5GORzMVRW58O3j8zMrMBFwczMClwU8teVdwJ1xudjKJ+PQT4XQ2VyPtymYGZmBb5SMDOzAheFnElqkvSYpHvzziVvks6Q9DVJP5X0pKRFeeeUF0kfkLRD0hOSviLp1LxzqqVqB+ma7EY4H59M/195XNI3JZ0xHt/lopC/lcCTeSdRJ+4GHoiI1wC/T4OeF0kzgfcBbRFxMdBEMghVI1lPhYN0NYj1nHg+HgQujojXAz8DVo3HF7ko5EjSLODNwOfyziVvkl4B/Avg8wAR8VJE/DrXpPLVDJwmqRmYzgi9Bk9WVQ7SNemVOh8R8Z2IOJYu/pCkd+mT5qKQr08DHwaO55xHPfg94DDw9+nttM9JelneSeUhIp4B7iDpNPIg8P8i4jv5ZlUXRhqky+AG4P7xOJCLQk4kXQcciohteedSJ5qBNwBrI+IS4AUa6/ZAQXqvfCkwF3gV8DJJ78w3K6tXklaT9C7dPR7Hc1HIz2XA9ZL2ABuBKyV9Kd+UctUH9EXEo+ny10iKRCNaAuyOiMMR8TvgG8Af5ZxTPRhpkK6GJWk5cB3QHuP0foGLQk4iYlVEzIqIVpJGxIciomH/NRgRvwD2S7ooDS0mGV+jEe0D3ihpuiSRnIuGbHQfZqRBuhqSpGuAjwDXR8SR8TpuvYzRbAbwXqBb0lTg/wDvyTmfXETEo5K+BvyI5LbAYzTY27zVDNLVCEY4H6uAacCDyb8d+GFE/IeT/i6/0WxmZgN8+8jMzApcFMzMrMBFwczMClwUzMyswEXBzMwKXBSsoUh6paSNkn4uaaek+ySFpFcWbdMp6TZJl5fqvVbSw5La0vk9kr5etO7fSlqfzv97SYfTbjuelvRtSX9UtO16SbslbU8//zhsv+1pL5gfKNrnovT7t6c9yTbUo6qWPb+nYA0jfRHsm8CGiFiWxhYCj5D0NfROSW8A/hj4A5K3zivRJmlBROwose6rEXFr+l1XAN+QdEVEDLyM9qGI+NpI+0k6G3hK0tciYj/w34G7IuKe9JivqzBHs4r4SsEayRXA7yLiMwOBiNgOrAEuSH+0/xa4Ne1eolJ3AH9RbqOI+C7JS2gdlR44Ip4DdgEz0tAMki5BBtb/pIo8zcpyUbBGcjFwQgeEEXEcuBn4OvCztJviamwC3iDp1RVs+yPgNUXLnyy6fXRCh2aSZgOnAo+nobuAhyTdnw7Ec0aVuZqNykXBjMIVwxNA5xh27wc+SWWDnGjY8ociYmH6aS+K/6mkHSTdfdwdEf+U5vn3wGuBfyDp9uCHkqaNIWezklwUrJHsIGkrGMlxxj62xRdJBgmaXWa7S6isc7uvRsQC4J8DdxY3hEfEgYhYFxFLSfpGuniMOZudwEXBGslDwDRJfzYQkPSHkt50sgdO2yDuAt4/0jbp93QAn63iuI+QFJyV6TGukXRKOv9K4GzgmTEnbjaMi4I1jLS/+bcCV6WPpO4APsboQ10ultRX9Fk0yraf58Qn+v40bS/4GUlj9L8pevIIhrYpbE97iB3uvwLvkXQ68CfAE5J+DHyb5PbTL0b7c5tVw72kmplZga8UzMyswEXBzMwKXBTMzKzARcHMzApcFMzMrMBFwczMClwUzMyswEXBzMwK/j8ts89ngYnGzgAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.scatter(cdf.CYLINDERS, cdf.CO2EMISSIONS, color ='RED')\n", + "plt.xlabel('CYLINDERS')\n", + "plt.ylabel('EmissionCO2')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "fa94DerWbuVG" + }, + "source": [ + "# 4 Creando el set de datos de entrenamiento y de el prueba\n", + "Train/Test Split divide el dataseet en uno de entrenamiento y otro de pruebas, siendo excluyentes. Después de ello, entrenas con el set de entrenamiento y pruebas con el de prueba. Esto brinda una evaluación más exacta porque el set de entrenamiento no es parte de un set de datos que se usaron para entrenar datos. Refleja un escenario más real basado en problemas más actuales.\n", + "\n", + "Esto significa que sabemos la salida de cada punto de datos del set, siendo un escenario ideal! y como estos datos no se usaron para entrenar el modelo, el modelo no sabe la salida de estos puntos de datos. Asi que, básicamente, es una real prueba fuera de muestra.\n", + "\n", + "Dividamos nuestro conjunto de datos en conjuntos de entrenamiento y de prueba, el 80% de todos los datos para entrenamiento y el 20% para pruebas. Creamos una máscara para seleccionar filas aleatorias usando la función **np.random.rand ():**" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "id": "kt9DM4sNbuVH" + }, + "outputs": [], + "source": [ + "msk = np.random.rand(len(df)) < 0.8\n", + "train = cdf[msk]\n", + "test = cdf[~msk]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "5NCFokP1buVM" + }, + "source": [ + "# 5 Modelo de regresión lineal simple\n", + "La regresión lineal se ajusta a un modelo lineal con coeficientes 𝜃 = (𝜃1, ..., 𝜃𝑛) θ = (θ1, ..., θn) para minimizar la 'suma de cuadrados residual' entre la x independiente en el conjunto de datos y la y por la aproximación lineal." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "NefASMTUbuVN" + }, + "source": [ + "# ENTRENAR LA DISTRIBUCIÓN DE DATA " + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "id": "w6jN-VtSbuVO", + "outputId": "1c969308-7f23-4f11-ae46-87f42976b630" + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.scatter(train.ENGINESIZE, train.CO2EMISSIONS, color='blue')\n", + "plt.xlabel(\"Engine size\")\n", + "plt.ylabel(\"Emission\")\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "9QAUxyotbuVT" + }, + "source": [ + "# Modelando nuestro dataset\n", + "Usando package de sklearn para modelar nuestros datos" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "id": "mFrdsnvqbuVU", + "outputId": "f8c0a2c3-30ba-4bd2-8010-8515e2a29933" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Coefficients: [[39.05307699]]\n", + "Intercept: [125.05358281]\n" + ] + } + ], + "source": [ + "from sklearn import linear_model\n", + "regr = linear_model.LinearRegression()\n", + "train_x = np.asanyarray(train[['ENGINESIZE']])\n", + "train_y = np.asanyarray(train[['CO2EMISSIONS']])\n", + "regr.fit (train_x, train_y)\n", + "# The coefficients\n", + "print ('Coefficients: ', regr.coef_)\n", + "print ('Intercept: ',regr.intercept_)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Xfr7XTXmbuVZ" + }, + "source": [ + "**Como** se mencionó antes, **Coeficiente e Intercepción** en la regresión lineal simple, son los parámetros de la recta de ajuste. Dado que es una regresión lineal simple, con 2 parámetros solamente, y sabiendo que los parámetros son la intersección y pendiente de la linea, sklearn puede estimarlas directamente a partir de los datos. Tener en cuenta que todos los datos deben estar disponibles para poder calcular los parámetros." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "jpY57tPmbuVa" + }, + "source": [ + "# 6 Graficando las salidas\n", + "podemos trazar o graficar la recta de ajuste sobre los datos:" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "id": "tjm8tLRfbuVb", + "outputId": "bfe8e351-29f8-4e70-eeca-79b43d64215f" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0, 0.5, 'Emission')" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.scatter(train.ENGINESIZE, train.CO2EMISSIONS, color='blue')\n", + "plt.plot(train_x, regr.coef_[0][0]*train_x + regr.intercept_[0], '-r')\n", + "plt.xlabel(\"Engine size\")\n", + "plt.ylabel(\"Emission\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "504P2xN-buVi" + }, + "source": [ + "# 7 Evaluation \n", + "comparamos los valores actuales y predichos para calcular la exactitud del modelo de regresión. Las métricas de la evaluación proveen un rol principal en el desarrollo de un modelo, ya que provee conocimiento profundo en areas que necesitan mejoras.\n", + "\n", + "Existen distintas métricas de evaluación de modelos, utilicemos MSE para calcular la exactitud de nuestro modelo basado en el set de prueba:\n", + "\n", + "* Error absoluto de media o **Mean absolute error**: Es una media del valor absoluto de los errores. Es la métrica más fácil de comprender ya que simplemente es el promedio de los errores.\n", + "* Error Cuadrado Medio (MSE-**Mean Squared Error**):MSE es la media del error cuadrático. Es más popular que el error absoluto medio porque hace foco en grandes errores. Esto se debe a que el término cuadrático tiene errores más grandes que van creciendo en comparación con más pequeños.\n", + "* **Root Mean Squared Error**(RMSE). esta es la raiz cuadrada del error cuadrático medio.\n", + "* **R-squared** no es un error, sino que es una medida popular para darle precisión a nuestro modelo. Representa cuán cerca están los datos de la linea de regresión ajustada. Mientras más alto el R-cuadrático, mejor se encontrará ajustado el modelo respecto de los datos. El puntaje mejor posible es 1.0 y puede tomar valores negativos (porque el modelo puede ser arbitrariamente peor)." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "id": "ZSA_Q6rxbuVj", + "outputId": "fdab1091-13b8-427c-9ae9-0dfd6d28f147" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Mean absolute error: 23.18\n", + "Residual sum of squares (MSE): 1008.60\n", + "R2-score: 0.65\n" + ] + } + ], + "source": [ + "from sklearn.metrics import r2_score\n", + "\n", + "test_x = np.asanyarray(test[['ENGINESIZE']])\n", + "test_y = np.asanyarray(test[['CO2EMISSIONS']])\n", + "test_y_hat = regr.predict(test_x)\n", + "\n", + "print(\"Mean absolute error: %.2f\" % np.mean(np.absolute(test_y_hat - test_y)))\n", + "print(\"Residual sum of squares (MSE): %.2f\" % np.mean((test_y_hat - test_y) ** 2))\n", + "print(\"R2-score: %.2f\" % r2_score(test_y_hat , test_y) )" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "R8PaeOImbuVp" + }, + "source": [ + "# GRACIAS" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "tsyl5185buVq" + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "colab": { + "include_colab_link": true, + "name": "Lab4_M4_Regresión_Linea_Emisión_CO2.ipynb", + "provenance": [] + }, + "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.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} From 00d68cee60c25490cc301bf8b9b4cf3e6f4acdf9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20Quispe?= <47084770+RubenMcCarty@users.noreply.github.com> Date: Sat, 28 Nov 2020 11:52:15 -0500 Subject: [PATCH 05/51] =?UTF-8?q?Regresi=C3=B3n=20Lineal=20M=C3=BAltiple?= =?UTF-8?q?=20Emisi=C3=B3n=20de=20CO2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...272ltiple_Predic_Emisi\303\263n_CO2.ipynb" | 1815 +++++++++++++++++ 1 file changed, 1815 insertions(+) create mode 100644 "Lab_03_Regresi\303\263n_Lineal_M\303\272ltiple_Predic_Emisi\303\263n_CO2.ipynb" diff --git "a/Lab_03_Regresi\303\263n_Lineal_M\303\272ltiple_Predic_Emisi\303\263n_CO2.ipynb" "b/Lab_03_Regresi\303\263n_Lineal_M\303\272ltiple_Predic_Emisi\303\263n_CO2.ipynb" new file mode 100644 index 0000000..1cff07c --- /dev/null +++ "b/Lab_03_Regresi\303\263n_Lineal_M\303\272ltiple_Predic_Emisi\303\263n_CO2.ipynb" @@ -0,0 +1,1815 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "view-in-github" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "cv9vYe9FfkTt" + }, + "source": [ + " # Regresión Lineal Múltiple --Predicción de Emisión de CO2\n", + "## Creado por [M.Sc. Ruben Quispe](https://machinelearningmastery.com/tutorial-to-implement-k-nearest-neighbors-in-python-from-scratch/)\n", + "### Curso [Machine Learning](https://eie.pe/curso-machine-learning/)\n", + "\n", + "## About this Notebook\n", + "En este Notebook, aprendemos cómo usar scikit-learn para implementar la regresión lineal múltiple. Descargamos un conjunto de datos relacionado con el consumo de combustible y la emisión de dióxido de carbono de los automóviles. Luego, dividimos nuestros datos en conjuntos de entrenamiento y prueba, creamos un modelo usando el conjunto de entrenamiento, evaluamos su modelo usando el conjunto de prueba y finalmente usamos el modelo para predecir un valor desconocido\n", + "## Tabla de contenidos\n", + "1. Comprendiendo la data\n", + "2. Leer los datos\n", + "3. Modelo Regresión Múltiple\n", + "4. Predicción\n", + "5. Práctica" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Nuestro dataset comprende estos datos\n", + "Hemos descargado un conjunto de datos de consumo de combustible, FuelConsumption.csv, que contiene clasificaciones de consumo de combustible específicas del modelo y emisiones estimadas de dióxido de carbono para los vehículos ligeros nuevos para la venta minorista en Canadá. [Dataset](https://open.canada.ca/data/en/dataset/98f1a129-f628-4ce4-b24d-6f16bf24dd64)\n", + "1. MODELYEAR e.g. 2014\n", + "2. MAKE e.g. Acura\n", + "3. MODEL e.g. ILX\n", + "4. VEHICLE CLASS e.g. SUV\n", + "5. ENGINE SIZE e.g. 4.7\n", + "6. CYLINDERS e.g 6\n", + "7. TRANSMISSION e.g. A6\n", + "8. FUEL CONSUMPTION in CITY(L/100 km) e.g. 9.9\n", + "9. FUEL CONSUMPTION in HWY (L/100 km) e.g. 8.9\n", + "10. FUEL CONSUMPTION COMB (L/100 km) e.g. 9.2\n", + "11. CO2 EMISSIONS (g/km) e.g. 182 --> low --> 0" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "qZSuD88OfkTv" + }, + "source": [ + "# 1 Importar las librerías Necesarias" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "id": "NxocRpqofkTy" + }, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import pandas as pd\n", + "import pylab as pl\n", + "import numpy as np\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "6-oM3NBWfkT8" + }, + "source": [ + "# 2 Descargar o cargar los dataset" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "id": "mVBFx2yYfkT9" + }, + "outputs": [], + "source": [ + "df = pd.read_csv(\"D:/TECHNOLOGY 2020/Data/FuelConsumption.csv\")" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "id": "MAeJNX3rfkUD", + "outputId": "d777c8b0-1fa2-4492-df4b-e9cf727a5091" + }, + "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", + "
MODELYEARMAKEMODELVEHICLECLASSENGINESIZECYLINDERSTRANSMISSIONFUELTYPEFUELCONSUMPTION_CITYFUELCONSUMPTION_HWYFUELCONSUMPTION_COMBFUELCONSUMPTION_COMB_MPGCO2EMISSIONS
02014ACURAILXCOMPACT2.04AS5Z9.96.78.533196
12014ACURAILXCOMPACT2.44M6Z11.27.79.629221
22014ACURAILX HYBRIDCOMPACT1.54AV7Z6.05.85.948136
32014ACURAMDX 4WDSUV - SMALL3.56AS6Z12.79.111.125255
42014ACURARDX AWDSUV - SMALL3.56AS6Z12.18.710.627244
\n", + "
" + ], + "text/plain": [ + " MODELYEAR MAKE MODEL VEHICLECLASS ENGINESIZE CYLINDERS \\\n", + "0 2014 ACURA ILX COMPACT 2.0 4 \n", + "1 2014 ACURA ILX COMPACT 2.4 4 \n", + "2 2014 ACURA ILX HYBRID COMPACT 1.5 4 \n", + "3 2014 ACURA MDX 4WD SUV - SMALL 3.5 6 \n", + "4 2014 ACURA RDX AWD SUV - SMALL 3.5 6 \n", + "\n", + " TRANSMISSION FUELTYPE FUELCONSUMPTION_CITY FUELCONSUMPTION_HWY \\\n", + "0 AS5 Z 9.9 6.7 \n", + "1 M6 Z 11.2 7.7 \n", + "2 AV7 Z 6.0 5.8 \n", + "3 AS6 Z 12.7 9.1 \n", + "4 AS6 Z 12.1 8.7 \n", + "\n", + " FUELCONSUMPTION_COMB FUELCONSUMPTION_COMB_MPG CO2EMISSIONS \n", + "0 8.5 33 196 \n", + "1 9.6 29 221 \n", + "2 5.9 48 136 \n", + "3 11.1 25 255 \n", + "4 10.6 27 244 " + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "0Q6mKpaDfkUK" + }, + "source": [ + "# 3. LEER LOS DATOS NECESARIOS" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "id": "UGyxVH5KfkUL", + "outputId": "a4a83b49-3987-4f56-d355-265bf1b771df" + }, + "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", + "
ENGINESIZECYLINDERSFUELCONSUMPTION_CITYFUELCONSUMPTION_HWYFUELCONSUMPTION_COMBCO2EMISSIONS
02.049.96.78.5196
12.4411.27.79.6221
21.546.05.85.9136
33.5612.79.111.1255
43.5612.18.710.6244
53.5611.97.710.0230
63.5611.88.110.1232
73.7612.89.011.1255
83.7613.49.511.6267
\n", + "
" + ], + "text/plain": [ + " ENGINESIZE CYLINDERS FUELCONSUMPTION_CITY FUELCONSUMPTION_HWY \\\n", + "0 2.0 4 9.9 6.7 \n", + "1 2.4 4 11.2 7.7 \n", + "2 1.5 4 6.0 5.8 \n", + "3 3.5 6 12.7 9.1 \n", + "4 3.5 6 12.1 8.7 \n", + "5 3.5 6 11.9 7.7 \n", + "6 3.5 6 11.8 8.1 \n", + "7 3.7 6 12.8 9.0 \n", + "8 3.7 6 13.4 9.5 \n", + "\n", + " FUELCONSUMPTION_COMB CO2EMISSIONS \n", + "0 8.5 196 \n", + "1 9.6 221 \n", + "2 5.9 136 \n", + "3 11.1 255 \n", + "4 10.6 244 \n", + "5 10.0 230 \n", + "6 10.1 232 \n", + "7 11.1 255 \n", + "8 11.6 267 " + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Seleccionar algunos features que queremos usar para la regresón\n", + "cdf = df[['ENGINESIZE', 'CYLINDERS', 'FUELCONSUMPTION_CITY', 'FUELCONSUMPTION_HWY', 'FUELCONSUMPTION_COMB', 'CO2EMISSIONS']]\n", + "cdf.head(9)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "juElkBxAfkUR" + }, + "source": [ + "# Grafiquemos los valores de emisión vs enginesize" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "id": "BMJ-GGUTfkUS", + "outputId": "bc9d3026-532c-4b6a-9caa-0e00ef678984" + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.scatter(cdf.ENGINESIZE, cdf.CO2EMISSIONS, color='blue')\n", + "plt.xlabel(\"Enginesize\")\n", + "plt.ylabel(\"Emisión de CO2\")\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "kYl-0THCfkUX" + }, + "source": [ + "# 4. Crear un conjunto de datos de Train/Test\n", + "La división de entrenamiento / prueba implica dividir el conjunto de datos en conjuntos de entrenamiento y prueba, respectivamente, que son mutuamente excluyentes. Después de lo cual, entrena con el conjunto de entrenamiento y prueba. Esto proporcionará una evaluación más precisa de la precisión fuera de la muestra porque el conjunto de datos de prueba no es parte del conjunto de datos que se ha utilizado para entrenar los datos. Es más realista para problemas del mundo real.\n", + "\n", + "Esto significa que conocemos el resultado de cada punto de datos en este conjunto de datos, ¡lo que lo hace genial para probar! Y dado que estos datos no se han utilizado para entrenar el modelo, el modelo no tiene conocimiento del resultado de estos puntos de datos. Entonces, en esencia, es realmente una prueba fuera de la muestra." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "id": "OSO8VDrSfkUY" + }, + "outputs": [], + "source": [ + "msk = np.random.rand(len(df))<0.8\n", + "train = cdf[msk]\n", + "test = cdf[~msk]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "YtTZL88AfkUf" + }, + "source": [ + "# 5 Distribucción de datos de Train" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "id": "LgJ8-X1VfkUg", + "outputId": "ec275a05-5ddf-45ba-bc6d-a00b56a2d1d2" + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.scatter(train.ENGINESIZE, train.CO2EMISSIONS, color ='blue')\n", + "plt.xlabel(\"Enginesize\")\n", + "plt.ylabel(\"Emisión de CO2\")\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ITy69a6LfkUl" + }, + "source": [ + "# 6 Modelo de regresión Múltiple\n", + "En realidad, existen múltiples variables que predicen la emisión de Co2. Cuando hay más de una variable independiente, el proceso se denomina regresión lineal múltiple. Por ejemplo, predecir la emisión de co2 utilizando FUELCONSUMPTION_COMB, EngineSize y Cylinders of cars. Lo bueno aquí es que la regresión lineal múltiple es la extensión del modelo de regresión lineal simple." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "id": "fMyo1q-zfkUm", + "outputId": "9d4d8599-4aa5-483a-a0bb-7a509a8a3217" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "coeficiente: [[10.76482898 6.95076743 10.16382763]]\n" + ] + } + ], + "source": [ + "from sklearn import linear_model\n", + "regr = linear_model.LinearRegression()\n", + "x = np.asanyarray(train[['ENGINESIZE', 'CYLINDERS', 'FUELCONSUMPTION_COMB']])\n", + "y = np.asanyarray(train[['CO2EMISSIONS']])\n", + "regr.fit(x,y)\n", + "#LOS COEFICIENTES\n", + "print ('coeficiente: ', regr.coef_)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "sh61vGECfkUr" + }, + "source": [ + "Como se mencionó anteriormente, Coeficiente e Intercepción, son los parámetros de la línea de ajuste. Dado que se trata de una regresión lineal múltiple, con 3 parámetros, y sabiendo que los parámetros son la intersección y los coeficientes del hiperplano, sklearn puede estimarlos a partir de nuestros datos. Scikit-learn usa el método simple de mínimos cuadrados ordinarios( **Ordinary Least Squared** )para resolver este problema." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "id": "2toCrdNXfkUs", + "outputId": "c5f2356f-c7bc-4833-eb78-b0aa09c4136f" + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig=plt.figure()\n", + "ax1 = fig.add_axes([0,0,1,1],projection='3d')\n", + "ax1.scatter(train.FUELCONSUMPTION_COMB,train.ENGINESIZE ,train.CO2EMISSIONS, color='red',marker='*')\n", + "\n", + "ax1.set_xlabel('FUELCONSUMPTION_COMB')\n", + "ax1.set_ylabel('Engine size')\n", + "ax1.set_zlabel('Emision')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Nce6BGUwfkUz" + }, + "source": [ + "# Mínimos cuadrados ordinarios (OLS-Ordinary Least Squares )\n", + "OLS es un método para estimar los parámetros desconocidos en un modelo de regresión lineal. OLS elige los parámetros de una función lineal de un conjunto de variables explicativas minimizando la suma de los cuadrados de las diferencias entre la variable dependiente objetivo y las predichas por la función lineal. En otras palabras, intenta minimizar la suma de los errores cuadrados (SSE) o el error cuadrático medio (MSE) entre la variable objetivo (y) y nuestra salida predicha (𝑦̂) en todas las muestras del conjunto de datos.\n", + "\n", + "OLS puede encontrar los mejores parámetros usando los siguientes métodos: - Resolviendo los parámetros del modelo analíticamente usando ecuaciones de forma cerrada - Usando un algoritmo de optimización (Gradient Descent, Stochastic Gradient Descent, Newton's Method, etc.)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ZsvWXAwTfkU0" + }, + "source": [ + "# 7 Predicciones" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "id": "4bZTRT21fkU1", + "outputId": "3c8feac0-0cc7-46e4-98ed-d040a9a2a126" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Residual sum of squares: 640.22\n", + "Variance score: 0.83\n" + ] + } + ], + "source": [ + "y_hat= regr.predict(test[['ENGINESIZE','CYLINDERS','FUELCONSUMPTION_COMB']])\n", + "x = np.asanyarray(test[['ENGINESIZE','CYLINDERS','FUELCONSUMPTION_COMB']])\n", + "y = np.asanyarray(test[['CO2EMISSIONS']])\n", + "print(\"Residual sum of squares: %.2f\"\n", + " % np.mean((y_hat - y) ** 2))\n", + "\n", + "# Explained variance score: 1 is perfect prediction\n", + "print('Variance score: %.2f' % regr.score(x, y))\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "04MvHARafkU6" + }, + "source": [ + "# Puntuación de regresión de varianza explicada\n", + "Si $\\hat{y}$ es la salida objetiva estimado, y el objetivo correspondiente (correcto) y Var es la varianza, el cuadrado de la desviación estándar, entonces la varianza explicada se estima de la siguiente manera:\n", + "\n", + "$\\texttt{explainedVariance}(y, \\hat{y}) = 1 - \\frac{Var\\{ y - \\hat{y}\\}}{Var\\{y\\}}$ \n", + "La mejor puntuación posible es 1.0, los valores más bajos son peores." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "OZhvpjrffkU7" + }, + "source": [ + "# Práctica de Lab\n", + "Intente usar una regresión lineal múltiple con el mismo conjunto de datos, pero esta vez use _ FUELCONSUMPTION en CITY__ y __FUELCONSUMPTION en HWY__ en lugar de CONSUMPTION. ¿Da como resultado una mejor precisión?" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "id": "M4csF2QwfkU8", + "outputId": "734acee4-fa01-400e-8a70-ac78890d43b8" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Coefficients: [[10.80655834 6.17662921 7.70459224 1.82747297]]\n", + "Residual sum of squares: 660.31\n", + "Variance score: 0.83\n" + ] + } + ], + "source": [ + "# escribe tu código aqui\n", + "\n", + "regr = linear_model.LinearRegression()\n", + "x = np.asanyarray(train[['ENGINESIZE','CYLINDERS','FUELCONSUMPTION_CITY','FUELCONSUMPTION_HWY']])\n", + "y = np.asanyarray(train[['CO2EMISSIONS']])\n", + "regr.fit (x, y)\n", + "print ('Coefficients: ', regr.coef_)\n", + "y_= regr.predict(test[['ENGINESIZE','CYLINDERS','FUELCONSUMPTION_CITY','FUELCONSUMPTION_HWY']])\n", + "x = np.asanyarray(test[['ENGINESIZE','CYLINDERS','FUELCONSUMPTION_CITY','FUELCONSUMPTION_HWY']])\n", + "y = np.asanyarray(test[['CO2EMISSIONS']])\n", + "print(\"Residual sum of squares: %.2f\"% np.mean((y_ - y) ** 2))\n", + "print('Variance score: %.2f' % regr.score(x, y))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "20AndEgkfkVD" + }, + "source": [ + "# MODELADO PARA 2 VARIABLES" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "id": "NFSvPhyAfkVF", + "outputId": "6efdef74-2e2e-405e-bf68-882908a6fa77" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Coefficients: [[10.25129004 18.90410034]]\n", + "Intercept: [75.12807571]\n" + ] + } + ], + "source": [ + "from sklearn import linear_model\n", + "regr = linear_model.LinearRegression()\n", + "train_x1 = np.asanyarray(train[['FUELCONSUMPTION_COMB']])\n", + "train_x2 = np.asanyarray(train[['ENGINESIZE']])\n", + "\n", + "train_x= np.hstack([train_x1,train_x2])\n", + "train_y = np.asanyarray(train[['CO2EMISSIONS']])\n", + "regr.fit (train_x, train_y)\n", + "# The coefficients\n", + "print ('Coefficients: ', regr.coef_)\n", + "print ('Intercept: ',regr.intercept_)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "IXU6_Q6MfkVM", + "outputId": "e119a3f1-67dd-4c66-ede1-2311779b4504" + }, + "outputs": [ + { + "data": { + "application/javascript": [ + "/* Put everything inside the global mpl namespace */\n", + "/* global mpl */\n", + "window.mpl = {};\n", + "\n", + "mpl.get_websocket_type = function () {\n", + " if (typeof WebSocket !== 'undefined') {\n", + " return WebSocket;\n", + " } else if (typeof MozWebSocket !== 'undefined') {\n", + " return MozWebSocket;\n", + " } else {\n", + " alert(\n", + " 'Your browser does not have WebSocket support. ' +\n", + " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", + " 'Firefox 4 and 5 are also supported but you ' +\n", + " 'have to enable WebSockets in about:config.'\n", + " );\n", + " }\n", + "};\n", + "\n", + "mpl.figure = function (figure_id, websocket, ondownload, parent_element) {\n", + " this.id = figure_id;\n", + "\n", + " this.ws = websocket;\n", + "\n", + " this.supports_binary = this.ws.binaryType !== undefined;\n", + "\n", + " if (!this.supports_binary) {\n", + " var warnings = document.getElementById('mpl-warnings');\n", + " if (warnings) {\n", + " warnings.style.display = 'block';\n", + " warnings.textContent =\n", + " 'This browser does not support binary websocket messages. ' +\n", + " 'Performance may be slow.';\n", + " }\n", + " }\n", + "\n", + " this.imageObj = new Image();\n", + "\n", + " this.context = undefined;\n", + " this.message = undefined;\n", + " this.canvas = undefined;\n", + " this.rubberband_canvas = undefined;\n", + " this.rubberband_context = undefined;\n", + " this.format_dropdown = undefined;\n", + "\n", + " this.image_mode = 'full';\n", + "\n", + " this.root = document.createElement('div');\n", + " this.root.setAttribute('style', 'display: inline-block');\n", + " this._root_extra_style(this.root);\n", + "\n", + " parent_element.appendChild(this.root);\n", + "\n", + " this._init_header(this);\n", + " this._init_canvas(this);\n", + " this._init_toolbar(this);\n", + "\n", + " var fig = this;\n", + "\n", + " this.waiting = false;\n", + "\n", + " this.ws.onopen = function () {\n", + " fig.send_message('supports_binary', { value: fig.supports_binary });\n", + " fig.send_message('send_image_mode', {});\n", + " if (mpl.ratio !== 1) {\n", + " fig.send_message('set_dpi_ratio', { dpi_ratio: mpl.ratio });\n", + " }\n", + " fig.send_message('refresh', {});\n", + " };\n", + "\n", + " this.imageObj.onload = function () {\n", + " if (fig.image_mode === 'full') {\n", + " // Full images could contain transparency (where diff images\n", + " // almost always do), so we need to clear the canvas so that\n", + " // there is no ghosting.\n", + " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", + " }\n", + " fig.context.drawImage(fig.imageObj, 0, 0);\n", + " };\n", + "\n", + " this.imageObj.onunload = function () {\n", + " fig.ws.close();\n", + " };\n", + "\n", + " this.ws.onmessage = this._make_on_message_function(this);\n", + "\n", + " this.ondownload = ondownload;\n", + "};\n", + "\n", + "mpl.figure.prototype._init_header = function () {\n", + " var titlebar = document.createElement('div');\n", + " titlebar.classList =\n", + " 'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n", + " var titletext = document.createElement('div');\n", + " titletext.classList = 'ui-dialog-title';\n", + " titletext.setAttribute(\n", + " 'style',\n", + " 'width: 100%; text-align: center; padding: 3px;'\n", + " );\n", + " titlebar.appendChild(titletext);\n", + " this.root.appendChild(titlebar);\n", + " this.header = titletext;\n", + "};\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n", + "\n", + "mpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n", + "\n", + "mpl.figure.prototype._init_canvas = function () {\n", + " var fig = this;\n", + "\n", + " var canvas_div = (this.canvas_div = document.createElement('div'));\n", + " canvas_div.setAttribute(\n", + " 'style',\n", + " 'border: 1px solid #ddd;' +\n", + " 'box-sizing: content-box;' +\n", + " 'clear: both;' +\n", + " 'min-height: 1px;' +\n", + " 'min-width: 1px;' +\n", + " 'outline: 0;' +\n", + " 'overflow: hidden;' +\n", + " 'position: relative;' +\n", + " 'resize: both;'\n", + " );\n", + "\n", + " function on_keyboard_event_closure(name) {\n", + " return function (event) {\n", + " return fig.key_event(event, name);\n", + " };\n", + " }\n", + "\n", + " canvas_div.addEventListener(\n", + " 'keydown',\n", + " on_keyboard_event_closure('key_press')\n", + " );\n", + " canvas_div.addEventListener(\n", + " 'keyup',\n", + " on_keyboard_event_closure('key_release')\n", + " );\n", + "\n", + " this._canvas_extra_style(canvas_div);\n", + " this.root.appendChild(canvas_div);\n", + "\n", + " var canvas = (this.canvas = document.createElement('canvas'));\n", + " canvas.classList.add('mpl-canvas');\n", + " canvas.setAttribute('style', 'box-sizing: content-box;');\n", + "\n", + " this.context = canvas.getContext('2d');\n", + "\n", + " var backingStore =\n", + " this.context.backingStorePixelRatio ||\n", + " this.context.webkitBackingStorePixelRatio ||\n", + " this.context.mozBackingStorePixelRatio ||\n", + " this.context.msBackingStorePixelRatio ||\n", + " this.context.oBackingStorePixelRatio ||\n", + " this.context.backingStorePixelRatio ||\n", + " 1;\n", + "\n", + " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", + "\n", + " var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n", + " 'canvas'\n", + " ));\n", + " rubberband_canvas.setAttribute(\n", + " 'style',\n", + " 'box-sizing: content-box; position: absolute; left: 0; top: 0; z-index: 1;'\n", + " );\n", + "\n", + " var resizeObserver = new ResizeObserver(function (entries) {\n", + " var nentries = entries.length;\n", + " for (var i = 0; i < nentries; i++) {\n", + " var entry = entries[i];\n", + " var width, height;\n", + " if (entry.contentBoxSize) {\n", + " if (entry.contentBoxSize instanceof Array) {\n", + " // Chrome 84 implements new version of spec.\n", + " width = entry.contentBoxSize[0].inlineSize;\n", + " height = entry.contentBoxSize[0].blockSize;\n", + " } else {\n", + " // Firefox implements old version of spec.\n", + " width = entry.contentBoxSize.inlineSize;\n", + " height = entry.contentBoxSize.blockSize;\n", + " }\n", + " } else {\n", + " // Chrome <84 implements even older version of spec.\n", + " width = entry.contentRect.width;\n", + " height = entry.contentRect.height;\n", + " }\n", + "\n", + " // Keep the size of the canvas and rubber band canvas in sync with\n", + " // the canvas container.\n", + " if (entry.devicePixelContentBoxSize) {\n", + " // Chrome 84 implements new version of spec.\n", + " canvas.setAttribute(\n", + " 'width',\n", + " entry.devicePixelContentBoxSize[0].inlineSize\n", + " );\n", + " canvas.setAttribute(\n", + " 'height',\n", + " entry.devicePixelContentBoxSize[0].blockSize\n", + " );\n", + " } else {\n", + " canvas.setAttribute('width', width * mpl.ratio);\n", + " canvas.setAttribute('height', height * mpl.ratio);\n", + " }\n", + " canvas.setAttribute(\n", + " 'style',\n", + " 'width: ' + width + 'px; height: ' + height + 'px;'\n", + " );\n", + "\n", + " rubberband_canvas.setAttribute('width', width);\n", + " rubberband_canvas.setAttribute('height', height);\n", + "\n", + " // And update the size in Python. We ignore the initial 0/0 size\n", + " // that occurs as the element is placed into the DOM, which should\n", + " // otherwise not happen due to the minimum size styling.\n", + " if (width != 0 && height != 0) {\n", + " fig.request_resize(width, height);\n", + " }\n", + " }\n", + " });\n", + " resizeObserver.observe(canvas_div);\n", + "\n", + " function on_mouse_event_closure(name) {\n", + " return function (event) {\n", + " return fig.mouse_event(event, name);\n", + " };\n", + " }\n", + "\n", + " rubberband_canvas.addEventListener(\n", + " 'mousedown',\n", + " on_mouse_event_closure('button_press')\n", + " );\n", + " rubberband_canvas.addEventListener(\n", + " 'mouseup',\n", + " on_mouse_event_closure('button_release')\n", + " );\n", + " // Throttle sequential mouse events to 1 every 20ms.\n", + " rubberband_canvas.addEventListener(\n", + " 'mousemove',\n", + " on_mouse_event_closure('motion_notify')\n", + " );\n", + "\n", + " rubberband_canvas.addEventListener(\n", + " 'mouseenter',\n", + " on_mouse_event_closure('figure_enter')\n", + " );\n", + " rubberband_canvas.addEventListener(\n", + " 'mouseleave',\n", + " on_mouse_event_closure('figure_leave')\n", + " );\n", + "\n", + " canvas_div.addEventListener('wheel', function (event) {\n", + " if (event.deltaY < 0) {\n", + " event.step = 1;\n", + " } else {\n", + " event.step = -1;\n", + " }\n", + " on_mouse_event_closure('scroll')(event);\n", + " });\n", + "\n", + " canvas_div.appendChild(canvas);\n", + " canvas_div.appendChild(rubberband_canvas);\n", + "\n", + " this.rubberband_context = rubberband_canvas.getContext('2d');\n", + " this.rubberband_context.strokeStyle = '#000000';\n", + "\n", + " this._resize_canvas = function (width, height, forward) {\n", + " if (forward) {\n", + " canvas_div.style.width = width + 'px';\n", + " canvas_div.style.height = height + 'px';\n", + " }\n", + " };\n", + "\n", + " // Disable right mouse context menu.\n", + " this.rubberband_canvas.addEventListener('contextmenu', function (_e) {\n", + " event.preventDefault();\n", + " return false;\n", + " });\n", + "\n", + " function set_focus() {\n", + " canvas.focus();\n", + " canvas_div.focus();\n", + " }\n", + "\n", + " window.setTimeout(set_focus, 100);\n", + "};\n", + "\n", + "mpl.figure.prototype._init_toolbar = function () {\n", + " var fig = this;\n", + "\n", + " var toolbar = document.createElement('div');\n", + " toolbar.classList = 'mpl-toolbar';\n", + " this.root.appendChild(toolbar);\n", + "\n", + " function on_click_closure(name) {\n", + " return function (_event) {\n", + " return fig.toolbar_button_onclick(name);\n", + " };\n", + " }\n", + "\n", + " function on_mouseover_closure(tooltip) {\n", + " return function (event) {\n", + " if (!event.currentTarget.disabled) {\n", + " return fig.toolbar_button_onmouseover(tooltip);\n", + " }\n", + " };\n", + " }\n", + "\n", + " fig.buttons = {};\n", + " var buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'mpl-button-group';\n", + " for (var toolbar_ind in mpl.toolbar_items) {\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) {\n", + " /* Instead of a spacer, we start a new button group. */\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", + " }\n", + " buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'mpl-button-group';\n", + " continue;\n", + " }\n", + "\n", + " var button = (fig.buttons[name] = document.createElement('button'));\n", + " button.classList = 'mpl-widget';\n", + " button.setAttribute('role', 'button');\n", + " button.setAttribute('aria-disabled', 'false');\n", + " button.addEventListener('click', on_click_closure(method_name));\n", + " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", + "\n", + " var icon_img = document.createElement('img');\n", + " icon_img.src = '_images/' + image + '.png';\n", + " icon_img.srcset = '_images/' + image + '_large.png 2x';\n", + " icon_img.alt = tooltip;\n", + " button.appendChild(icon_img);\n", + "\n", + " buttonGroup.appendChild(button);\n", + " }\n", + "\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", + " }\n", + "\n", + " var fmt_picker = document.createElement('select');\n", + " fmt_picker.classList = 'mpl-widget';\n", + " toolbar.appendChild(fmt_picker);\n", + " this.format_dropdown = fmt_picker;\n", + "\n", + " for (var ind in mpl.extensions) {\n", + " var fmt = mpl.extensions[ind];\n", + " var option = document.createElement('option');\n", + " option.selected = fmt === mpl.default_extension;\n", + " option.innerHTML = fmt;\n", + " fmt_picker.appendChild(option);\n", + " }\n", + "\n", + " var status_bar = document.createElement('span');\n", + " status_bar.classList = 'mpl-message';\n", + " toolbar.appendChild(status_bar);\n", + " this.message = status_bar;\n", + "};\n", + "\n", + "mpl.figure.prototype.request_resize = function (x_pixels, y_pixels) {\n", + " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n", + " // which will in turn request a refresh of the image.\n", + " this.send_message('resize', { width: x_pixels, height: y_pixels });\n", + "};\n", + "\n", + "mpl.figure.prototype.send_message = function (type, properties) {\n", + " properties['type'] = type;\n", + " properties['figure_id'] = this.id;\n", + " this.ws.send(JSON.stringify(properties));\n", + "};\n", + "\n", + "mpl.figure.prototype.send_draw_message = function () {\n", + " if (!this.waiting) {\n", + " this.waiting = true;\n", + " this.ws.send(JSON.stringify({ type: 'draw', figure_id: this.id }));\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", + " var format_dropdown = fig.format_dropdown;\n", + " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n", + " fig.ondownload(fig, format);\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_resize = function (fig, msg) {\n", + " var size = msg['size'];\n", + " if (size[0] !== fig.canvas.width || size[1] !== fig.canvas.height) {\n", + " fig._resize_canvas(size[0], size[1], msg['forward']);\n", + " fig.send_message('refresh', {});\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_rubberband = function (fig, msg) {\n", + " var x0 = msg['x0'] / mpl.ratio;\n", + " var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n", + " var x1 = msg['x1'] / mpl.ratio;\n", + " var y1 = (fig.canvas.height - msg['y1']) / mpl.ratio;\n", + " x0 = Math.floor(x0) + 0.5;\n", + " y0 = Math.floor(y0) + 0.5;\n", + " x1 = Math.floor(x1) + 0.5;\n", + " y1 = Math.floor(y1) + 0.5;\n", + " var min_x = Math.min(x0, x1);\n", + " var min_y = Math.min(y0, y1);\n", + " var width = Math.abs(x1 - x0);\n", + " var height = Math.abs(y1 - y0);\n", + "\n", + " fig.rubberband_context.clearRect(\n", + " 0,\n", + " 0,\n", + " fig.canvas.width / mpl.ratio,\n", + " fig.canvas.height / mpl.ratio\n", + " );\n", + "\n", + " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_figure_label = function (fig, msg) {\n", + " // Updates the figure title.\n", + " fig.header.textContent = msg['label'];\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_cursor = function (fig, msg) {\n", + " var cursor = msg['cursor'];\n", + " switch (cursor) {\n", + " case 0:\n", + " cursor = 'pointer';\n", + " break;\n", + " case 1:\n", + " cursor = 'default';\n", + " break;\n", + " case 2:\n", + " cursor = 'crosshair';\n", + " break;\n", + " case 3:\n", + " cursor = 'move';\n", + " break;\n", + " }\n", + " fig.rubberband_canvas.style.cursor = cursor;\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_message = function (fig, msg) {\n", + " fig.message.textContent = msg['message'];\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_draw = function (fig, _msg) {\n", + " // Request the server to send over a new figure.\n", + " fig.send_draw_message();\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_image_mode = function (fig, msg) {\n", + " fig.image_mode = msg['mode'];\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_history_buttons = function (fig, msg) {\n", + " for (var key in msg) {\n", + " if (!(key in fig.buttons)) {\n", + " continue;\n", + " }\n", + " fig.buttons[key].disabled = !msg[key];\n", + " fig.buttons[key].setAttribute('aria-disabled', !msg[key]);\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_navigate_mode = function (fig, msg) {\n", + " if (msg['mode'] === 'PAN') {\n", + " fig.buttons['Pan'].classList.add('active');\n", + " fig.buttons['Zoom'].classList.remove('active');\n", + " } else if (msg['mode'] === 'ZOOM') {\n", + " fig.buttons['Pan'].classList.remove('active');\n", + " fig.buttons['Zoom'].classList.add('active');\n", + " } else {\n", + " fig.buttons['Pan'].classList.remove('active');\n", + " fig.buttons['Zoom'].classList.remove('active');\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.updated_canvas_event = function () {\n", + " // Called whenever the canvas gets updated.\n", + " this.send_message('ack', {});\n", + "};\n", + "\n", + "// A function to construct a web socket function for onmessage handling.\n", + "// Called in the figure constructor.\n", + "mpl.figure.prototype._make_on_message_function = function (fig) {\n", + " return function socket_on_message(evt) {\n", + " if (evt.data instanceof Blob) {\n", + " /* FIXME: We get \"Resource interpreted as Image but\n", + " * transferred with MIME type text/plain:\" errors on\n", + " * Chrome. But how to set the MIME type? It doesn't seem\n", + " * to be part of the websocket stream */\n", + " evt.data.type = 'image/png';\n", + "\n", + " /* Free the memory for the previous frames */\n", + " if (fig.imageObj.src) {\n", + " (window.URL || window.webkitURL).revokeObjectURL(\n", + " fig.imageObj.src\n", + " );\n", + " }\n", + "\n", + " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n", + " evt.data\n", + " );\n", + " fig.updated_canvas_event();\n", + " fig.waiting = false;\n", + " return;\n", + " } else if (\n", + " typeof evt.data === 'string' &&\n", + " evt.data.slice(0, 21) === 'data:image/png;base64'\n", + " ) {\n", + " fig.imageObj.src = evt.data;\n", + " fig.updated_canvas_event();\n", + " fig.waiting = false;\n", + " return;\n", + " }\n", + "\n", + " var msg = JSON.parse(evt.data);\n", + " var msg_type = msg['type'];\n", + "\n", + " // Call the \"handle_{type}\" callback, which takes\n", + " // the figure and JSON message as its only arguments.\n", + " try {\n", + " var callback = fig['handle_' + msg_type];\n", + " } catch (e) {\n", + " console.log(\n", + " \"No handler for the '\" + msg_type + \"' message type: \",\n", + " msg\n", + " );\n", + " return;\n", + " }\n", + "\n", + " if (callback) {\n", + " try {\n", + " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n", + " callback(fig, msg);\n", + " } catch (e) {\n", + " console.log(\n", + " \"Exception inside the 'handler_\" + msg_type + \"' callback:\",\n", + " e,\n", + " e.stack,\n", + " msg\n", + " );\n", + " }\n", + " }\n", + " };\n", + "};\n", + "\n", + "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n", + "mpl.findpos = function (e) {\n", + " //this section is from http://www.quirksmode.org/js/events_properties.html\n", + " var targ;\n", + " if (!e) {\n", + " e = window.event;\n", + " }\n", + " if (e.target) {\n", + " targ = e.target;\n", + " } else if (e.srcElement) {\n", + " targ = e.srcElement;\n", + " }\n", + " if (targ.nodeType === 3) {\n", + " // defeat Safari bug\n", + " targ = targ.parentNode;\n", + " }\n", + "\n", + " // pageX,Y are the mouse positions relative to the document\n", + " var boundingRect = targ.getBoundingClientRect();\n", + " var x = e.pageX - (boundingRect.left + document.body.scrollLeft);\n", + " var y = e.pageY - (boundingRect.top + document.body.scrollTop);\n", + "\n", + " return { x: x, y: y };\n", + "};\n", + "\n", + "/*\n", + " * return a copy of an object with only non-object keys\n", + " * we need this to avoid circular references\n", + " * http://stackoverflow.com/a/24161582/3208463\n", + " */\n", + "function simpleKeys(original) {\n", + " return Object.keys(original).reduce(function (obj, key) {\n", + " if (typeof original[key] !== 'object') {\n", + " obj[key] = original[key];\n", + " }\n", + " return obj;\n", + " }, {});\n", + "}\n", + "\n", + "mpl.figure.prototype.mouse_event = function (event, name) {\n", + " var canvas_pos = mpl.findpos(event);\n", + "\n", + " if (name === 'button_press') {\n", + " this.canvas.focus();\n", + " this.canvas_div.focus();\n", + " }\n", + "\n", + " var x = canvas_pos.x * mpl.ratio;\n", + " var y = canvas_pos.y * mpl.ratio;\n", + "\n", + " this.send_message(name, {\n", + " x: x,\n", + " y: y,\n", + " button: event.button,\n", + " step: event.step,\n", + " guiEvent: simpleKeys(event),\n", + " });\n", + "\n", + " /* This prevents the web browser from automatically changing to\n", + " * the text insertion cursor when the button is pressed. We want\n", + " * to control all of the cursor setting manually through the\n", + " * 'cursor' event from matplotlib */\n", + " event.preventDefault();\n", + " return false;\n", + "};\n", + "\n", + "mpl.figure.prototype._key_event_extra = function (_event, _name) {\n", + " // Handle any extra behaviour associated with a key event\n", + "};\n", + "\n", + "mpl.figure.prototype.key_event = function (event, name) {\n", + " // Prevent repeat events\n", + " if (name === 'key_press') {\n", + " if (event.which === this._key) {\n", + " return;\n", + " } else {\n", + " this._key = event.which;\n", + " }\n", + " }\n", + " if (name === 'key_release') {\n", + " this._key = null;\n", + " }\n", + "\n", + " var value = '';\n", + " if (event.ctrlKey && event.which !== 17) {\n", + " value += 'ctrl+';\n", + " }\n", + " if (event.altKey && event.which !== 18) {\n", + " value += 'alt+';\n", + " }\n", + " if (event.shiftKey && event.which !== 16) {\n", + " value += 'shift+';\n", + " }\n", + "\n", + " value += 'k';\n", + " value += event.which.toString();\n", + "\n", + " this._key_event_extra(event, name);\n", + "\n", + " this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n", + " return false;\n", + "};\n", + "\n", + "mpl.figure.prototype.toolbar_button_onclick = function (name) {\n", + " if (name === 'download') {\n", + " this.handle_save(this, null);\n", + " } else {\n", + " this.send_message('toolbar_button', { name: name });\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.toolbar_button_onmouseover = function (tooltip) {\n", + " this.message.textContent = tooltip;\n", + "};\n", + "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Left button pans, Right button zooms\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", + "\n", + "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n", + "\n", + "mpl.default_extension = \"png\";/* global mpl */\n", + "\n", + "var comm_websocket_adapter = function (comm) {\n", + " // Create a \"websocket\"-like object which calls the given IPython comm\n", + " // object with the appropriate methods. Currently this is a non binary\n", + " // socket, so there is still some room for performance tuning.\n", + " var ws = {};\n", + "\n", + " ws.close = function () {\n", + " comm.close();\n", + " };\n", + " ws.send = function (m) {\n", + " //console.log('sending', m);\n", + " comm.send(m);\n", + " };\n", + " // Register the callback with on_msg.\n", + " comm.on_msg(function (msg) {\n", + " //console.log('receiving', msg['content']['data'], msg);\n", + " // Pass the mpl event to the overridden (by mpl) onmessage function.\n", + " ws.onmessage(msg['content']['data']);\n", + " });\n", + " return ws;\n", + "};\n", + "\n", + "mpl.mpl_figure_comm = function (comm, msg) {\n", + " // This is the function which gets called when the mpl process\n", + " // starts-up an IPython Comm through the \"matplotlib\" channel.\n", + "\n", + " var id = msg.content.data.id;\n", + " // Get hold of the div created by the display call when the Comm\n", + " // socket was opened in Python.\n", + " var element = document.getElementById(id);\n", + " var ws_proxy = comm_websocket_adapter(comm);\n", + "\n", + " function ondownload(figure, _format) {\n", + " window.open(figure.canvas.toDataURL());\n", + " }\n", + "\n", + " var fig = new mpl.figure(id, ws_proxy, ondownload, element);\n", + "\n", + " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n", + " // web socket which is closed, not our websocket->open comm proxy.\n", + " ws_proxy.onopen();\n", + "\n", + " fig.parent_element = element;\n", + " fig.cell_info = mpl.find_output_cell(\"
\");\n", + " if (!fig.cell_info) {\n", + " console.error('Failed to find cell for figure', id, fig);\n", + " return;\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_close = function (fig, msg) {\n", + " var width = fig.canvas.width / mpl.ratio;\n", + " fig.root.removeEventListener('remove', this._remove_fig_handler);\n", + "\n", + " // Update the output cell to use the data from the current canvas.\n", + " fig.push_to_output();\n", + " var dataURL = fig.canvas.toDataURL();\n", + " // Re-enable the keyboard manager in IPython - without this line, in FF,\n", + " // the notebook keyboard shortcuts fail.\n", + " IPython.keyboard_manager.enable();\n", + " fig.parent_element.innerHTML =\n", + " '';\n", + " fig.close_ws(fig, msg);\n", + "};\n", + "\n", + "mpl.figure.prototype.close_ws = function (fig, msg) {\n", + " fig.send_message('closing', msg);\n", + " // fig.ws.close()\n", + "};\n", + "\n", + "mpl.figure.prototype.push_to_output = function (_remove_interactive) {\n", + " // Turn the data on the canvas into data in the output cell.\n", + " var width = this.canvas.width / mpl.ratio;\n", + " var dataURL = this.canvas.toDataURL();\n", + " this.cell_info[1]['text/html'] =\n", + " '';\n", + "};\n", + "\n", + "mpl.figure.prototype.updated_canvas_event = function () {\n", + " // Tell IPython that the notebook contents must change.\n", + " IPython.notebook.set_dirty(true);\n", + " this.send_message('ack', {});\n", + " var fig = this;\n", + " // Wait a second, then push the new image to the DOM so\n", + " // that it is saved nicely (might be nice to debounce this).\n", + " setTimeout(function () {\n", + " fig.push_to_output();\n", + " }, 1000);\n", + "};\n", + "\n", + "mpl.figure.prototype._init_toolbar = function () {\n", + " var fig = this;\n", + "\n", + " var toolbar = document.createElement('div');\n", + " toolbar.classList = 'btn-toolbar';\n", + " this.root.appendChild(toolbar);\n", + "\n", + " function on_click_closure(name) {\n", + " return function (_event) {\n", + " return fig.toolbar_button_onclick(name);\n", + " };\n", + " }\n", + "\n", + " function on_mouseover_closure(tooltip) {\n", + " return function (event) {\n", + " if (!event.currentTarget.disabled) {\n", + " return fig.toolbar_button_onmouseover(tooltip);\n", + " }\n", + " };\n", + " }\n", + "\n", + " fig.buttons = {};\n", + " var buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'btn-group';\n", + " var button;\n", + " for (var toolbar_ind in mpl.toolbar_items) {\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) {\n", + " /* Instead of a spacer, we start a new button group. */\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", + " }\n", + " buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'btn-group';\n", + " continue;\n", + " }\n", + "\n", + " button = fig.buttons[name] = document.createElement('button');\n", + " button.classList = 'btn btn-default';\n", + " button.href = '#';\n", + " button.title = name;\n", + " button.innerHTML = '';\n", + " button.addEventListener('click', on_click_closure(method_name));\n", + " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", + " buttonGroup.appendChild(button);\n", + " }\n", + "\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", + " }\n", + "\n", + " // Add the status bar.\n", + " var status_bar = document.createElement('span');\n", + " status_bar.classList = 'mpl-message pull-right';\n", + " toolbar.appendChild(status_bar);\n", + " this.message = status_bar;\n", + "\n", + " // Add the close button to the window.\n", + " var buttongrp = document.createElement('div');\n", + " buttongrp.classList = 'btn-group inline pull-right';\n", + " button = document.createElement('button');\n", + " button.classList = 'btn btn-mini btn-primary';\n", + " button.href = '#';\n", + " button.title = 'Stop Interaction';\n", + " button.innerHTML = '';\n", + " button.addEventListener('click', function (_evt) {\n", + " fig.handle_close(fig, {});\n", + " });\n", + " button.addEventListener(\n", + " 'mouseover',\n", + " on_mouseover_closure('Stop Interaction')\n", + " );\n", + " buttongrp.appendChild(button);\n", + " var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n", + " titlebar.insertBefore(buttongrp, titlebar.firstChild);\n", + "};\n", + "\n", + "mpl.figure.prototype._remove_fig_handler = function () {\n", + " this.close_ws(this, {});\n", + "};\n", + "\n", + "mpl.figure.prototype._root_extra_style = function (el) {\n", + " el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n", + " el.addEventListener('remove', this._remove_fig_handler);\n", + "};\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function (el) {\n", + " // this is important to make the div 'focusable\n", + " el.setAttribute('tabindex', 0);\n", + " // reach out to IPython and tell the keyboard manager to turn it's self\n", + " // off when our div gets focus\n", + "\n", + " // location in version 3\n", + " if (IPython.notebook.keyboard_manager) {\n", + " IPython.notebook.keyboard_manager.register_events(el);\n", + " } else {\n", + " // location in version 2\n", + " IPython.keyboard_manager.register_events(el);\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype._key_event_extra = function (event, _name) {\n", + " var manager = IPython.notebook.keyboard_manager;\n", + " if (!manager) {\n", + " manager = IPython.keyboard_manager;\n", + " }\n", + "\n", + " // Check for shift+enter\n", + " if (event.shiftKey && event.which === 13) {\n", + " this.canvas_div.blur();\n", + " // select the cell after this one\n", + " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", + " IPython.notebook.select(index + 1);\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", + " fig.ondownload(fig, null);\n", + "};\n", + "\n", + "mpl.find_output_cell = function (html_output) {\n", + " // Return the cell and output element which can be found *uniquely* in the notebook.\n", + " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", + " // IPython event is triggered only after the cells have been serialised, which for\n", + " // our purposes (turning an active figure into a static one), is too late.\n", + " var cells = IPython.notebook.get_cells();\n", + " var ncells = cells.length;\n", + " for (var i = 0; i < ncells; i++) {\n", + " var cell = cells[i];\n", + " if (cell.cell_type === 'code') {\n", + " for (var j = 0; j < cell.output_area.outputs.length; j++) {\n", + " var data = cell.output_area.outputs[j];\n", + " if (data.data) {\n", + " // IPython >= 3 moved mimebundle to data attribute of output\n", + " data = data.data;\n", + " }\n", + " if (data['text/html'] === html_output) {\n", + " return [cell, data, j];\n", + " }\n", + " }\n", + " }\n", + " }\n", + "};\n", + "\n", + "// Register the function which deals with the matplotlib target/channel.\n", + "// The kernel may be null if the page has been refreshed.\n", + "if (IPython.notebook.kernel !== null) {\n", + " IPython.notebook.kernel.comm_manager.register_target(\n", + " 'matplotlib',\n", + " mpl.mpl_figure_comm\n", + " );\n", + "}\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": { + "tags": [] + }, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": { + "tags": [] + }, + "output_type": "display_data" + } + ], + "source": [ + "# Grafica de las salidas\n", + "\n", + "%matplotlib notebook\n", + "fig2=plt.figure() #se añade una figura para graficar\n", + "\n", + "ax2 = fig2.add_axes([0,0,1,1],projection='3d') #se añade un eje 3-D\n", + "\n", + "ax2.scatter(train.FUELCONSUMPTION_COMB,train.ENGINESIZE ,train.CO2EMISSIONS, color='red',marker='o')#grafica la dispersion 3-D\n", + "ax2.set_xlabel('FUELCONSUMPTION_COMB')\n", + "ax2.set_ylabel('Engine size')\n", + "ax2.set_zlabel('Emision')\n", + "\n", + "num_puntos=train_x1.shape[0]\n", + "x_muestra=np.linspace(train_x1.min(),train_x1.max(),num_puntos)\n", + "y_muestra=np.linspace(train_x2.min(),train_x2.max(),num_puntos)\n", + "#ax3 = fig2.add_axes([0,0,1,1],projection='3d')\n", + "XX,YY=np.meshgrid(x_muestra,y_muestra)\n", + "ZZ=regr.coef_[0][0]*XX + regr.coef_[0][1]*YY+regr.coef_[0][0]\n", + "\n", + "ax2.plot_surface(XX, YY, ZZ,cmap='summer') #grafico del plano de regresion\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "id": "QTXP7KqSfkVS", + "outputId": "519b4a59-559e-4e84-f604-ae1d0073247b" + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAUwAAAE+CAYAAADmhCmVAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAADx8klEQVR4nOz9eZBkaVqfiT7f2X1fYt8jcq+sqqzKrfqKS2sahm7AYEBoNBJCGkMISTM2g4QMcUdiEFfDvVoYXZCEuDbMHZMQrWGQkAAJqbvViAYBEuruWjIrl6pcYt9335ezf/ePSPeOjIzFIzIiM6raH7OyKos6fvy4+/Gfv9/3vu/vFVJK2rRp06bNwSgv+wLatGnT5qNCWzDbtGnTpkXagtmmTZs2LdIWzDZt2rRpkbZgtmnTpk2LtAWzTZs2bVpEO+D/t2uO2rRp87IQL/sCdtKOMNu0adOmRdqC2aZNmzYt0hbMNm3atGmRtmC2adOmTYu0BbNNmzZtWqQtmG3atGnTIm3BbNOmTZsWaQtmmzZt2rRIWzDbtGnTpkXagtmmTZs2LdIWzDZt2rRpkbZgtmnTpk2LtAWzTZs2bVqkLZht2rRp0yJtwWzTpk2bFmkLZps2bdq0SFsw27Rp06ZF2oLZpk2bNi3SFsw2bdq0aZG2YLZp06ZNi7QF8+sAKSVBEOB5HlK259q1aXNUDpoa2eYjjpQS3/exbRvf9xFCoGkauq6jqiqqqiLEqRvO16bNqUQcEHG0w5GPMGEY4nkeYRgSBAFhGAJbIrr9c28IqKZpKIrSFtA2p4VTdyO2BfNjyPYluBACIQS+7xMEwTNi2BDPxn3QiEAb/7QFtM1L5NTdeO0l+ccMKSWu6xKGYVMsgWakqev6U8dvP6bx+Gq1yqNHj3j99dfbAtqmzTbagvkxIgxDXNdFSvmUEC4tLTE1NdUUu3Q6TSaTIZVKoarqU+cQQjSPU1UVKSWe5+F5XvP/b98DbQtom68n2oL5MaCR2GkkdRRlq/jB930+/PBDAG7cuNFcmhcKBTY3N5mcnERV1aaAJpPJZhJo+xJ9u6juJqCN/c+2gLb5uNPew/yIs9cSvFQqcf/+fUZGRhgYGNhzD9N1XQqFAvl8nlKphKZpJBIJ8vk8169fb4rvfs8fhuFTUW1DQDVNe2bJ36bNITh1N05bMD/C+L7P9PQ0g4ODTWGSUjI3N8fS0hJXrlwhFos1j/V9/0ABdByHjY0NpqenMQwDwzDIZDJkMhni8fiRBbSxhG8LaJtDcOpulPaS/CPI9iX4wsICw8PDwFa0eP/+fSKRCJ/4xCcOFLfdME2T7u5u1tbWuHr1KrZtk8/nWVxcpFwuY5rmUwK6U/y2L+EbP8au6+K6LgCKojyzB9qmzUeFtmB+xNheW7ldrHK5HA8ePOD8+fN0d3c/13Ns38O0LIu+vj76+voAqNfr5PN55ubmqFQqRKPR5h5oLBZ76poa/90W0DYfF9qC+RFhe20l0BQWKSUTExPkcjmuX7+OZVkneh2RSIRIJEJ/fz9SyqaAzszMUK1WicViZDIZ0uk00Wi0LaBtPla0BfMjQCMz3UjaNITHtm1qtRpSSm7cuHFs4rI9wjzouGg0SjQaZWBgACkltVqNfD7P1NQUtVqNeDzeXMJblnWggEopyeVyrK6ucvbsWRRFeSYL36bNy6ItmKecvWor19bWGB8fxzRNzp07dyoSKUIIYrEYsViMwcFBpJRUKhUKhQLj4+PYtv2MgO58fOOfMAxRFAUpJY7j4DgOsCWujeizkYVv0+ZF0RbMU8petZVhGPLo0SNqtRo3b97kvffea4rpfhxGWFqNMFs5TyKRIJFIMDQ0hJSScrlMPp/n4cOHuK5LIpFoCqhpms88fmcXUhiG2Lbd/FtDQBsRaFtA25wkbcE8hexVW1mtVrl37x69vb1cunSpKaQfFcs2IQTJZJJkMsnIyAhhGDYF9MMPP8T3fZLJJKZpNo1Cdj6+LaBtXiZtwTxlBEHA/Pw8PT09z7Q3zszM8Oqrr5JKpZ56zHEL5nFFmAehKAqpVIpUKsXo6ChhGFIsFllZWSGXy/HOO++QSqWaSaRW+uDbAtrmJGkL5ilh+xJ8amqqWcbj+z4PHjxASslbb72Fpj39kX2UIsyDUBSFTCaDoigoisK5c+coFovNMiYp5VMCuvO92EtA6/X6UwmmtoC2OSptwTwF7Kyt3Ku9cTdOIhp82SLS2JNVVZVsNks2mwW2fjwaAjozM9M0Emn8s5uRyPb937aAtnle2oL5EtlZW7m9vXF2drbZ3hiPx/c8RyOj/PWApml0dHTQ0dEB0DQSyeVyTE9PoyjKM0Yi22lFQNtu9G32oy2YL4m9aitd16Ver1OtVnnrrbee+dLv5EXtN55GNE2js7OTzs5OYMvzM5/Ps76+zsTEBJqmPSWgO2s4dxPQIAjwfZ/FxUU6OzuJxWJtN/o2TdqC+RLYq7aykS3WdZ3Lly+3dK6Po2Ae9fXouk53d3ezNdR1XfL5PCsrKzx+/BjDMJoCmkgk9hRQ2NoO6ejoaApo4/+3zZS/vmkL5gtk5+iI7ZHN5OQkuVyOa9eucfv27ZbP+XEUTDiefVTDMOjp6aGnpwfYcmLK5/MsLS0daCQipWwmn7b/zff9Z8yU2wL69UNbMF8Qe9VW2rbNvXv3SKfTT7U3tlKMDh9fwTwJTNOkt7eX3t5e4GtGIvPz81QqFSzLagroTnMT2D0L3xbQry/agvkCaOxLGoaxa3vjpUuXmokM+JoIHqdgtr+4z7KfkUihUODRo0d0dHSQyWSeMRKB3QW07Ub/8aYtmCdIIwLZ3NxkeXmZV199Fdjaw3z8+DHVapWbN29iGMZTjztM1PhxjDBfxuvZaSRy+/ZtRkZGqFQqzxiJpNNpIpHIvl6g8LVVRcOJqe1G/9GnLZgnxPbayu3F5dvbGy9evLjrF+YkBLNcLlMoFMhms8/0bJ9GToOQxGIx0ul000ikWq2Sz+eZmJg40EgE9hbQhpFIw4mp7Ub/0aEtmMfMbrWVjemL+7U3bkdRlJZrKw/q9JFSMj8/z+LiIplMptmz3eiYyWQyz3TMtHl2D1kIQTweJx6PP2Uk0li6O46zr5FI4xxtL9CPNu1vyjGy02Go8YULw5BcLkcYhru2N+7kuCJM3/e5f/8+uq5z48YNgiBAURSCIHim5bDxRd9t9O7XIwftIW83EhkeHn7GSMTzPFKpVLOMabdtF9jfTNn3fVRVJR6PtwX0lNAWzGNiv/bGe/fuoes6V65cOfbM916dPo22ytHRUfr7+wnDkCAIAJ5pOfQ8j0KhwMbGBpOTk2iahuM4FIvFXesVT5rTsCfbatKtwW5GIqVSqTkPKQiCA41E4GkBXV9fR0pJf39/8znaEejLpS2Yz8l+tZWN6Y2vvPIKs7OzLX8BD7Mk3ymuUkoWFhZYWFg4sK2yga7rdHV10dXVBWzVK7733nvNesVGuU02m901W3wSvOy9vMMK5k4abZrpdJqxsbFmVF8oFFo2EpFSNjPsDTf6nUv4thv9i6UtmM/BXrWVruvywQcfYJomb731Fr7vH6rf+6hLct/3+eCDD1BVtaW2yr0wTRNd13nllVeeKrfZmS3OZrMnPkPoZXKcon2QkQjQXL43jEQaCcPGtewsYWq70b942oJ5RA5qbzx37lyzwyQMw0MJ5lEizHK5zL179/Z1NjoKO8ttGmMntrumJ5NJstks6XT6mb26NrtzkJFI457KZDIEQbCnkUiDthfoi6EtmIekkdi5f/8+Fy5caC6lpJRMTU2xubnJtWvXiEQizccc1rPysBHmxsYGxWKx5SX48yDE18ZONJIdpVKJXC7HwsICYRiSSqXIZrOkUqkjZeBPwx7mi2Y3I5GHDx9SKpW4desWqqo2E3P7GYk0aAvoydAWzEOwfQleqVSaX+y92hsbHNaCrVXB9H2f1dVVNE3j5s2bLWXfj5vte3WNayoWi89YrmWz2V2/6C/yWj9K6LpOJBJpLuMbRiKrq6uMj4+jaVpTQA8yEoG2gB4XbcFskZ09w41l8/r6Oo8fP36mvXE7h+3GaWVJXqlUuHfvHtFolN7e3lNTS7lzqem6LoVC4SnHoGw2u6vhRZun2b6H2aqRSDqdJpFItNTG2TZTPjyn41t2itmrtlIIwfj4OI7j7NreuJ3D3ngHCezi4iKzs7O8/vrrbGxsnOolrGEYT1mu2bZNLpdjbm6OSqVCNBptCuhu7YZfz2wXzJ3sNBKxbZt8Ps/CwsIzRiKxWGxPAW270R+OtmDuw161lbVajUKhwNDQEK+++uqx30h7LeGDIODBgwcEQdAsgN/c3DzVgrkTy7Lo7+9vGl7UajVyudxT7YanJVp+2ewnmDuxLIu+vj76+vqeqmyYnZ1t/jA1BHQ/I5HdBDSfz6OqKh0dHc0++K9XAW3fmbuws71x+03baG9MpVL09fWd2L7gThFsLMEHBwcZHBxsPu9hEkrPW1t43AghiMVixGIxhoaGmnvD8/PzFItFisXivsXeH3cOI5jb2a2yoVarPVUaFovFmgK6l5FIQ0Cr1SqRSOQpM2X42jiPrycru7Zg7mCv0RGN6Y2N9saHDx+e2CydnUvyhki/9tprJJPJZ449TAnSaUZRFJLJJN3d3USjUYaHh59q4YSv1Sp+PbRw7ubJeRS2/zAdZCTScGLaeR07C+O3j/NoPMf2JfzHVUDbgrmNvWorGzWOw8PDDAwMPJX0OQka5w6CgIcPH+J53p496K0K5kfx5m2lhXO/TPFHnYbr+3Gzm5FIo7b28ePHzxiJtFoH+vUwzqMtmND8xQWaH27j7w2nn501jicpmEIIbNvm7bffZmBggKGhoT1vtq8nP8zdWji3Z4oPSnR81Djqkvyw7FZb2zASefDgAeVymXq9juu6uxqJNM6xU0AblSVf+tKXePDgAT/xEz9x4q/lpPm6F8xGbeXk5OQzhcP3799vtjfu/IU9ScGsVCrkcjmuXr26rw0cfDwFE1qLiLdninc6pler1af8KncuMz8KvCjB3Ml2IxGADz74gGw2S61WY2lpqWkP2Nge2W1veacBzUf9x6vB17VgNhI7Uspm7y7s3t64k6MI5kFJlzAMefjwIeVymbGxsQPFEj6+gnlY9mvhbCwzk8lkU0D3KwM7Le/nyxLM3a5j+95mEARNJ6bt3V17GYk0/Ac+DnxdCubO2srGdMAgCJicnGRjY+OZ9sadHFYwG8K2l2DWajXu3r1LX18fsVjsUB0xp+ULfprYq4Vzu93adrOL01rKdBois53Cvb1NE7YEtFAoUCgUmJ2dRUrZfG9jsRiVSqW5cmuFQqHAn/tzf45f+7VfewhI4M8Cj4BfAUaBGeCPSynzAEKIHwN+EAiAvySl/M1jeNm7cjrvkhNkr9rKxqjb7u5ubt68eaBgHVYwG8fvdt7V1VUmJiZ49dVXSafTLCwsNL0rD+IkBfNllSGdxOvZzW6tUCg0l/DbWzjbHUhPs1vSZzuNGs3djET+7J/9sywuLnL58mXGxsb4hm/4hgO3R374h3+Yb/u2b+NXf/VXLwkhDCAK/M/Ab0spf0oI8deAvwb8VSHEZeB7gVeBfuBLQogLUsrWvkCH5OXH+y+IRlTpOM4zYrm+vs78/DwdHR1cuHChpejuqBHmdsIw5MGDBywuLvLWW281+7GPau/2ceKkBavxJT937hw3btzg9ddfJx6Ps7q6yq1bt6jVaszNzVEulz+W7+9haDj1t0rDSOT8+fP8xm/8Bp/5zGd49dVX+bf/9t/y6U9/+qlazp2USiV+//d/nx/8wR8EQErpSikLwHcDn31y2GeBP/Lkv78b+OdSSkdKOQ1MAG8d8iW2zNdFhLlXbeX26Y1jY2OH+pI2lvCHOX67wNbrde7evUt3dzeXLl166rlPSjAPEzEetIXwcUPX9WYLp+/7vP/+++i63m7hfMLz7KV6nse3fMu38KlPferAY6empujq6uIHfuAH+OxnP3sbeA/4YaBHSrkMIKVcFkJ0P3nIAPCVbadYePK3E+FjL5h71VY29gx7enq4ePEiy8vLTSPWVlAUpdkJ1OrxDWFrzCNvLMF3O/a4hqDB15JJ6+vrmKbZrG3czaThNPCyI7pGEnB7q+FuLZwNAf0oTOF8mVSrVWKxWEvH+r7PrVu3+Lmf+zl+8Rd/8aoQ4mfZWn7vxW438IndQB9bwdxrdATA8vIy09PTT01vVFX1uSLGgxBC4Ps+Dx8+3HMe+fZjDyMa+12HbdvcuXOH7u5uPvGJT+B5XjO7WS6Xm5FTNpt9am/pZS/1X6aQ7ywY36uFM5fLPTOF8+PYwvm890GjxKsVGq2/n/jEJxp/+lW2BHNVCNH3JLrsA9ae/P8FYGj7KYCl57rgffhYCqaUkrW1NUzTxLKsp9obHz58iO/7z3TOHDWJc5hrunv37r7zyBscRqz2izA3Nzd5+PAhr7zyCplMBtd1n6ldbERO20tvstnsidWYfhQ4aCui0cKZTCYZHR1tT+E8gGq1SiKRaOnY3t5ehoaGePToERcvXgT4L4EPn/zz/cBPPfn3bzx5yL8BflkI8ffYSvqcB94+3lfwNT52gtlYgi8tLdHT09OMmnZrb9zOUSLGVo9fX18nn89z6dKllsZHHHZExU6klExPT7OxscH169exLGtXUd0tcmq4p9dqNW7fvt2c3ZNKpU5FTeCL4LA93LvN68nn88/Vwnl6frDWSCTWn+sMh4kwAX7u536OP/Wn/hTvvffeXWAK+AG2EtT/Qgjxg8Ac8N8ASCk/EEL8C7YE1Qf+x5PKkMPHSDB31lZqmkYYhvu2N25ne+F6K7QiamEYMj4+TrlcprOzs+Wb5rBJn+3X4Xle01h4N/f3/dheelMoFLh8+TLlcrm559owqc1msyfaenga9jCf57VpmvbcLZwn1UfeGmVU9UN0/RaSENu++lxnO8weJsCbb77Ju+++C3Blx//6L3c7Xkr5t4C/deQLPAQfC8HcrbZSVVUcx+H999/fs71xO0fJeu/3xbZtm7t379LR0cH169ebTketnvsoY3Ybs8jPnDnTNJY9Ko33cPsXf7fWw0ZkddyJj5e9h3mcz3+UFs4X3+VjI5SHKNr7KKKEqriEYSfVyn/FVkB3dMIwPLWNAYflI/0qdvpWbs+CO47D/Pw8ly5dakk8jnMPc2Njg0ePHvHKK680l2nPM2u8lWMXFxeZm5s70UFokUiESCTSNP/dLfHRmB75Uf6CnGQ5VastnK3u+T0PIT6IcVT1LkLZQFWKSNmJqlaAAM/9doIg9lx7sB+30rSP7F291+iIxvTGjY0NhoaGWo60jkMwpZRMTExQKBS4cePGU1HXSdZWFgoFpJQtDUJrlYOuYXvr4cjISDPxkcvlmp0zjeX7R8167UV+yfdq4VxbW6NSqfDuu+/u26d9WCSSkBlQ7iKUFVR1BYIehKgjZYAiAsIgg+d+O1L2EIa15/7sPk6i+ZEUzL3aGx3H4e7du6RSKcbGxg4lgEcpK9p+fOO5M5kMN27ceK6kUqvH1mo17t+/j6ZpXLly5aXelDsTH40ph419u0gk0hTQgwq/P+p7mM9DYx9Z13Vc1+WVV155qoVTCPFUBr5VMQtYQYo7SLGIUKYRshdFeMhQRVV8pIyjqS6wied+D1KObj3ugLbIrzc+UoK5X23lzumNy8vL1Ov1ls/9PBFmo3xnv8mRx70kb7zes2fPsry8fOxf8Oetw9w+5XD7iIRG4XcikWgWfu/lr/iyOA0RUSPps7NPu1FH20jEGYbR/CHa2QMfUsDnLpI5pPIhCn0oQgAxVOGDtFDVOoh1VDmElDq+90nC8NWvneOJ2/pRaZSyfVz4yAjmfu2NjUz09mXwYSPGo2TJgyBgYmKCfD7fLN/Z7/ijZr63s33Zf/PmTYIgYGnpxOp0j4Xt5UuDg4NNg9pcLsfi4mLTPqxRvvSyOQ2CuVfSZ3sLJ3xtWmSzhTOu0dm7QSy5idDvodKNKkyETCMUF2QMVVGQYgVVngUZQRFRhCjie9cJg//bU8932D7ynVQqlUNlyE87HwnBDMOQ+fl5uru7n2lvvHfvHt3d3Vy/fv2pm/wk6yrha56Aey3Bn+f8e4mr67rNLYfGc9q2fSJL2JPs9NluUDs2NtZ0t2nULYZhSCQSIZVKvRTnoNMsmDuxLIuenk4yPZt4cplAvEvgRbFtA+FGMfQyAQqmqQAbKCIJMrIlosomyCyCJYLgdcLgm545//MuyduC+QLZntiZmpp6KoHTaG+8fPnyrv3Yh40wD/MFyeVyPHjwAMMwOH/+fEuPed4lebFY5P79+5w/f74ZXTTOe5jI9TTScLdpeCY2ym0aUVOj7Cabze4bxR8XHwXBlDLElVM44WNc3kWgYSgdqHShGjUU00IVOiEr+HaKajVAUxIY1gIi7EaxygiZRQibwH+dwP8udmvLft4I87BF66edUyuYjdER27suGrOSHzx4gO/73Lx5c8++3ZMYIdHIwG9ubnLt2jVu377d8mOPmvTZXnh/9epVotHoU8eeVCT4MnvJdV0nnU4/U3bz8OFDXNdtmtNmMpkTKV86LYK52zW44SL14AG2fBeJi6X0oIosiCISG0VoSFFDFRmQCprShxbdRGEIIfJIP05IhVLBJJ2ZplbtoVL6Q6RSgt0Cyefdw2yM9P24cCoFszE8Cb5WW6mqKsVikQ8//HDP9sbtHDbCPIjGcjiRSBy6gwYOPw63keD64IMPEELsWXh/2K2Ejxo7y262923Pzs42s8bZbJZkMnks5UunQTC3d/p44SZV/0Pq8hahLGCqvagiiSRPICvoSowAH0XogECjm0DOoStnEMJFoQdEEYUMijkHYQcRyyAMzlEpfQsbG2UmJxd2beEMguC5fpTaS/ITZL/aStd1+eCDD3jjjTdaCvEPm8TZj8aMnwsXLjS7Xg7LYZfkvu/z9ttvMzQ0xODg4L7HftwizP3YbfRuPp9nZWWFx48fY1lWM/sejUaPJHynQTD9sEJoPWSx/u/xwiUiWh8CHU0xCWQeXWQJAE0xkTJAEx0EzGJwHvDRlWEQmwiZBWUZQQohXAgHUNVZZNiD9P9rstlunryVuK5LLpd7qoWzMW7iqO9JY0vl48KpEcy9aisb0xvDMOTq1astv/mHbXXcjYaJxfr6+oEzflq5nlYFaGNjg0qlwic+8YljnRp5GoSgFQ5znduzxtvbDqempqjX68352tlsdt/BZ0d9/uMkCB0q/iMq/vtUrQlUmQEi6GocN1zFUgcIpUBVokhcdCWLxzSmuIAQDroYI2QZTfQCGwgZBeGA7ENRp0B2oIg4yBSB90eA7qee3zCMZ1o4x8fH2djYYGVl5UhTONt7mMfMzvbG7UuqRmR39uzZQ++jHHVJ3viyuK7LvXv3iMViLc34OYhWls6NEqnGMuZlTo182RHmUQRrt7bDhvvS/fv3CYKg+YVPp9N73lMvUjClDCl545T9u1T8B0TUTkCgEkeq66jiDAEKhpIlpIKmpPGYwVLOIPAwxVlCMYfGIFBCIQWiCrILoU6DTG4t1WUnmuIhZYDvfhfIkX2va/t72dHRQSaTOdIUzo/TxEh4yYK5V23l9siukejY2Ng4UYPfxmOklBSLRT744INnMtLPw0HX0+gUymazXLt2jS9/+cstnfejEDG+LIQQu5Yv5XI5pqammnt2O93nX4RgVtw5it4dCv59LCUJCCwlSz2YJaFfwJegyk4Ciugigcc8lhgC4WOJMXw5jSFGQdRQ6ARRRiENYg4pI6iKBbIbVamAdFCEhRSbhN43gXyl5etsJH32auE8aApnpVI5lBHM6OgoiUQCVVW5c+fOu1LKG0KILKdgYiS8RMHca3SE4zjcu3ePZDL5VGR3lNbFw0ZIQoimj+RuGennYT/BbETSFy9ePNQ40pPkZUeYJ8HO8iXHccjlck33+VgsRjabxfO8E+l9r3lr5N275Nw7mGoEKUMsJU0tmCalXySUdeL6CJ7cQIQR0DbRRD8IH1OM4MpxTDGGxEEX/UhRQJEZEMuAjhA+0IOiboKsoRIBHFSRBikI3G+F8BP7X+QO9qrDPGgKpxCC3/u932NxcZGRkf2j2Z38h//wHxqf0Y0nf/prnIKJkfASBLNRJhIEAZZl7dreuJtwHHfWeyee5zV9+w6zBG81GtlNgKSUzM7Osrq6+tx7pK08f+MaTntU+qKE2jTNp+b2VKtVcrkcKysr+L5PrVZrui8ddeyEE5TIOffYdO6gIJDCxVQT1PxpkvoZJC4J7QxOsEhE68MPN9BFBkepoIU9OHISS4wBDoYYJmQTXXaDsgGAED5CdCHEOiElNJECKVCEjiREoR+USWTwDRD+F4e+/lbrMHdr4Xz06BG/9Vu/xe/8zu/wT//pP+VbvuVb+NEf/dGj3H/fDXzqyX9/Fvhd4K+ybWIkMC2EaEyMbG15dgReqGA2st2N3ufh4WFg7/bG7ZykYDaKwiORCGfOnGlZLA8jQDsjTN/3uX//PoZhHMse6UGsr6/z4MEDTNOko6PjQBPgly2qL/r5hRDE43Hi8TiqqiKlJBaLkcvlmJvb8oNs1fTCD2027A/YcO4gQ4eAGqaaohbMktAGgYCkPkY9mCemDRLIEobSSUgNQ+nGkRMgOxCKh6mMErL2pDSogkBBKC6CLEKsIEUOlS6kNFAVA3BR6AIxjRKeRQgfGdxA+t91pPflqHWYuq7zfd/3fbz33nv87b/9tzlz5gzvvPNOSx1xn/nMZxBCcOvWrb8gpfw/OCUTI+EFCmYjsSOlRNO0ZpJnv/bG7ZyEYDYivJWVFa5evcr4+PiRDDhanWPeiJwqlQp3795ldHSU/v7+I19/K0gpmZycpFAocP369eb4hEY3TSKRaG7q79y4/7gtyVulUQPZEEh41vSiMX2z4ZoeSp+cM86afQcvLOGGeWJqB7ZcJ6J2AS4JfZiqN0VcHyWghqV0P6mjTOPKGQy6QbhYYhjXWEDQDbgIDBRcBAlQ1gjkBobSjxTxraiVGqqSBjGHwuhW1CnPIbQJCC4i/e8GjlZ8/rytkY1VW2O42UH8wR/8Af39/aytrdHT0/M/CiEe7nP4C50YCS9AMHfWViqKgqZp1Ot1lpeXmZqa2nPc7HaOWzAb5UoNN3ZFUU50EFojS95o6Xz99ddP3CTW933u3r1LLBbj+vXreJ6Hpmn09/c3TYDL5TKbm5tNE4xGEuTrVSxh922WnaYX9Xqdzc1NHs19lZIYR7VqYJSJ6z34FDCUKCEuca2fkjdOQh8llDYxfYCQEjppPJbQSILwsMQgnpxHlb0IATKwUHQPRSSQVPHZwBRDIBMoio+khEqckAVUsRW1KoyB8hgZjqEoDjIcBP+PAUdvJ31e5/fDlhU1Aogn7/O/YmuJfSomRsIJC+ZetZUAq6urxGIx3nrrrZb2hxojJw7Lbjd/Iwu+c5TDScz12fm8YRg+M7HyJGhEsfuNqxBCNKcfNrLIjShqY2MD27bp7u4mm80eawLsIF62WB+0zVJ0Fllx7lE05qmllompXfgyIPANqrUCItRxo4tERC+KATFtEF/msZQufLmOgoFQPCylFyeYQ5VdqIqOKlIIXISIoQgIRA6TFFIkUYRDSA5NZJAso4gewEcTw0jxGCHHEMKDcBhVXYewD/zvAZLP/V48r2C2GhhUq1XCMCSRSFCtVgE+A/y/2JoM+dInRsIJCqaUsilw28WyXC7z+PFjTNPkjTfeaHmv6igRZuMxDXHa3pf9xhtvPNOydZS5Pq0Ipm3b3Lt3D0VRePPNN098f251dZXJyclDR7Hbh3dJKclms7iu2/SwbIygOKke7u2cNj/MmpdjqXqPDXuSirdIVEsjhEQVFkLxiCppqmIO00xjqFE8v5dAFimXo2i6g6pCQB1D7cSV8/ghmGocTUmj4AIWqlDxZY6IiBMGFpZhEbCGLroJKaOLNAgHlX4kE8AI4KMwhqIug+xFUUJAQvBtwNG60na+F8/DYSLM1dVVvud7vgfYWh0Bn5dSflEI8Q6nYGIknKBg7jT43S5WFy5cYHV19VBfiqMI5nZBayRZdF3fsy/7JJbkDXPhs2fPsrCwcKJCIKVsJs/2MyZpBSEEpmnS3d3d9LBsjKCYnZ1t7vF1dHQ8VcP4caAhmI5XZal2n+X6QyruIoYaRVd0VEVHCImmWPiyiBMEGKpJVOvBCwsIYWEYAi80iERiCJnCCRexvTx2LYKqWwjdxsdE1ww8uYYhUkgRQRUdeOEyIkwhhYMuMkhZQ1O6CMQ0GkMI4aFyBilmgH4UAWCiKA7ICNL7XgTDL/dNfEKtVmt5dXLmzBnu3Lmz/U9/C0BKuckpmBgJJ7wkb2SRG/uFhmHw1ltv4TjOoU1vnyfCbExTPCjJcpyC2Si+b8wGV1W1mW09CTzP4+7duySTSa5du/bcArbz8TuTII2+4501jMdhwfYyl+Re4LLhT1CuzuE7BWQYENUTgEATKorQUIWg6ufJmH1YagZfFvFDF1URT9IQISoRpFLFDjZIaH0gsgjNQbMigIkbruE6FnYtwLTi1Jkjqo4iRR1d6SLQCk8K1xfQRT8CD02OIZUJoB+ERJBGUWyQMRQRAxYh+BMILh3b+/G895GU8mM14uLEkz6FQoEPPviAs2fPNvfSnkf8DoMQgsXFRdbX11uapniU4vjdBHO32eBBEBxaCFotWQqCgHfeeYezZ8/S09NzqOc46Pn3YmffcaOG8eHDh3ie13RQ368F8bQQypDV2gSzpbtUvDUK4RpptQsvcInpsa0CczVCuT5H96JEMUDpjeNqFSwtgudLFAUUNHTFwPbXSJrDEMTRymsEpYeYQqc+YGDqW3uKMa0bR1shpZ7FC0qEvkHVW0Z6USLxFQI/jrBcNDFCIB4hGEARAkEXQlSBNKowgWUUkdrSaf+/Qsibx/a+PO8P10eh5vewnKhgTk9Ps7q6+kzXjKZpJy6Yvu9TKpWQUh44k7zBcUSY5XKZe/fuPZNsOawNW+P4g667MbvoG77hG461Z/cwnT7baxgbFmw7WxCz2SwdHR371n7uPOdJs1GbZ7p8h7K7xqY9R2dkEDuoEBUJAukSM5IU3Fl6IucINjdJll2qCZ14VeIWixhKFKmCqcWoeotkzXMgI+i6ihMUiS5sUrcqRPJ1CCXxmkn1ok1Cv0iIT0wdwpdrmHo3vraKrnQiCAi8PqLxaWq1NKqw0Y1ONLMIZFHQkTK3VUaEgcpwszBdkYcvTN+P4xC8j5tonqhgJpNJhoeHn8myHcVJ6DCC2RCtaDTK2NhYyxHO8wrm4uIis7Ozu0azh201PKi1MwxDHj9+TL1eJxaLnSqDg51dH40WxO21n43l+26mDSe5JC84G0yX7pC3l1isPKQnOoobVkibPThBlbieYiOYpkPd2gPMmoOU3FUy+TK1uEbEV/BNiFV9Stk1OpQMgTRIGL3UgjXiWhf1sEhUyRDm1ompKuXLKbL3yoSuR7ySxUktEVH7CMihKikkVQylF58JVLowTZ1KJUssYaPIGGEQEoQl7HoFVdEwzQ6kOY3ChS03ovAqSvidx/5ePW8N5suudjgJTlQwOzs7dxWgo/zitFrys7CwwNzcHFeuXGFhYeHQo3Zd1235+IZgbneB36tk6LCveT+BdV2XO3fukM1muXjxIl/+8pdb+iV/Wf3hO1sQGwPQGrZ9jdrP7R00xxmVVN0yU6V7rNVmmS3fozsyRIhPh9WPE5SI6kly9hxd0SFCGRCnh0qwQocxTN3PEdczeFaZWCkkPyToWlUJQ0naTlIxlkkYfdhBmYiaJpA2UbWTqj9Nxg6QCY30h1Wq56LEHxbxNBdDdBJSQRcdeMwgyAIuOkOEYpkQBYECqKgq6KqFInoxErOI4BxBUKNW6iYWn6JSGcCv/2HSaclxFy48r9u64zgn2u77vAghNLYq+gMglFIeKBYnnvQ5Lg6KMH3f58MPPwRoitbzzhpv5Xjbtnn77bfp6+tjeHj42F7zXtFuo41zu5nxSfSIn6RtXKP2c3R09Knaz0YHDdBsTzzqa3J9m6nShyxUJpgtfUBKz2BoxhORLJMwMhTcZVJGJ6H06IoMs1mfoTsySh2HuNqFG1aI6WkK7iyd2T6oz9A571HqCcmsGTgJi5gaxw+rRNUOqsE0SX0U8EnqZylfDUi/v0GQtYjOVPD6YmiRHnxWUEmAcDEYxGeBUGbQ1ShIC0UEICW6yBAyj8YFwEUTF5D6DLo+jBJxgB5C97soFGrMzLzfTMw13Jeet932OCZGvsj63VZ5IpRvAJ9gSwM9QBFCTBzkdvTS/TBbZb89wEaR9vDw8FPtV8eVxNmLer3O/Pw8b7zxRjN7fFzsJliLi4vMzc09syd8FGem08L22k/YKkOZmJhgZWWF5eVlkslks/bzoDKpIAyYLT9mqrgllEJKUmaGpJHFlzaWEqXmbWKqEULp0WH1s1aboDs6ihfW6bAGqQdFdCxqcp2sOrAViZoj5MUMHSNn8ZwcCanhnNexjCwVf46EPoDEI6mPUfEnSGhjhDhEI6M4rxmYi3XcMzpKLAtagC76CJjHDwMMNYVKAkUESOmjKSkC5hF0gVDRxVkCxtHYMuBQ6EEoGxD2IsI/QjbTSfbJree6Lvl8/inH9MbWRyQSOfSPz3FMjDxNW0VCCCG3vijfAPxD4BZb3UIGkAEOXF6+dD/MVj/EvY5r7BvuVqR9Uq2Ojf7sfD7P6OjosYvlzmsJw7A5AOzmzZu7LvmPWzBf1vI9Go2SSCTo7e2ls7OzaQA8Pz8P0BSAZDLZvCcWyjM8yt1ltT5H0cnRG+vDUAwgQBIC/pPXEpA0O9moT2OoffjSoTMyTN0vkDCyVLw14noGmzopvZ+cPUVn5AyBdMiYw9hhkWh0gFqwRFTLEuKS1EcoeY9IGlu2a3FtGE9uYCrdhDKHSGQJL1sYwsBjHh+JpWRBplHwn1i1xfFZQFdSCAJ0MYaSnEDI8yA8VIaQYgWFHhRRAzxE+K1bPpjbMAyDnp4eenp6mo7puVyu2XjQ2Dvez/B3Oy+6LfIFINjqNR9myy7urxz2BC9NMBuCcNRfsCAIePDgAUEQ7LlveNgIs5XjG8PQksnkoX3+DkNDsBzH4c6dO3R1dfHKK6/s+sNxEhMyXzaNxoeG5yJslWs1Zs68++CrbOqrOHqZNXeJkeQofuCRNpO4gY2uaJScEjE9RkRLUHCWcHwdTY+RMftwwjJxpRM7yGM8iTjTZi8b9XEsOgmlS9Yaoe5vkggT1INlLCVGqNok9H6K7mNSxggSh6Q+ghuuEVF7CWV5q/URB0PpwA3n8aSDpnahNcbayhqaiOHJRYwnrYuGMoInx7fGTeBRr3SjpRYQ9COEDagIxQUZQwTfifJUC/Xu71/DMb3ReNDYO274BjRKv1Kp1K7fw+eNME/xxMgKkH3ip5kDbMCWUtoHPfCl7WE2SouO8oFUKhXu3bvXdEDZz+HoKEmcvdg5G3xxcbHpunTcCCEoFotMT09z6dKlZsZ5r2M/LhHmftTCGpPBI1a0BR6LewyZI9TdKgkSrBVXiekRcl6OvtjWRNGIblJxcqQjXST0DK6sIUUMKV1UqSPxSBgd5OwpUkYPoVTIWsOU7RUU+vDCKmYtRC49JFXzyb0SI7EWQfYOktRHsIN1ImoPCAcFC4mNoSRx5TJuaBPTetGVTiQVgrCMrsTwZRFVJIEQSxnEZRJTnEdIH0Ocxxcz6AyiqT4KURBVBHEUJQDmUeT3onDx0O+doii7us9vbGwwOTnZLP3KZrPE43GEEMeyJD+lgmkDn2TLoHgCUIAuIcT/T0r52f0e+NIiTFVV8X2/5cFUDZaWlpiZmeG1114jmdzfWOC4esOllCwsLLCwsPDU/uFJRnb1ep3p6emWjIVPo7gdF3W/zoPN+8yUpnmweYf++AAQMpgcoeZXSMfSrNbm6YsO4PoOcT/OSmWOlOhAaCqaBoF0EQpIP0RIH0tLUnQXUAKBrqikzQHq/ia60kUoXAQmUjhE1RRl+QBhqeiKRnoxoNZVRbGrKBEDTbFA2GhKHBmu4oZ1DM1CpwNEGTcsYKopPFlEUwwkHqbaiyuniIhzIAJMcQGfCQxGQLioZEAUCQINVShI1hAiCTKKIr8LRd448D1rhZ3u87Ztk8/nmZubawqdpmnP1V572pbk27LgXwW+CTCBNFtZ8hgwe9A5XqpgHkbMgiDAtm1WV1dbdvs5ypJ8pwDuNxv8KIJ50L5tGIZ8+OGHuK7La6+91lJZxsctwvQDn/HSOL+f/z0mig+JqlFiRoS+eD81v0TW7GDDWaXL6sKXHj2xfpaqs4wkz2L7kggmSIkiFcp+mdABXTNAC6m4BbKRLpJ6F3aQJ5AWihKiqxahcDGVOHWxiS9VCHWS8za1oQh6PkCXAr0WQMRGJYkUtSeiGMVQMoSijBPmiKoduFJiKCYhDpbShSNniChnAB9LOY8jH2OKUcBBowep5FDoQBEqoSigKlsiqSpDSDGJEn4jqvzDJ/aeW5b1jPv89PQ0hUKBzc3NIxmvnLakTwMpZV4I0Q+8BiSAceCrH4kleStUq1Xu3r2Lpmm8+uqrLX9gR0n6bL+mxvPuNRv8sOc/qPzHtm3u3LnT7BA6TELsox5hhmHIVHGKuxv3mFh/jCsd+pK9JPQEXmijEKXiVYjpUTzp0hPpZa48wWjyLE5QpzfWT8XNEzcS5OordES7EQiUMKTqFUibKRwvxA3L5EsbmIYFqgB8dBHFp4LtuVimhRamkFRwMIhaJkbFQxgqouSj6QLHqGMqEl0m0RRBPVglrvXhhAqGYuLLGpbagR3OEVWGkQRE1bPY4SMscQZwMcQQkg2gC1URhLgowkcQQacbNT6PEB2AjRJeRZXf8cI+i0bnVjqdpqOjg97e3qeMV4QQzfKlZDK5Z2LotEWYjSy5EOIzwI8BJeA+8EPAu0KIv/rE6GNPTnYuwj60Gv2trKxw584dLl++vOVsfchC9KMuyVdXV3n//fe5fPnynk7Rx5mFz+VyvPfee5w/f56RkZFmHWIrfJQjzPnSIv924t/xj+79Ap+9/3+Sq28SIonqFoH0gRAFBUlI1upgrbaEKlTc0GEoMUrJ3SSqRyg5OWJ6nCAMyFgdrNdmMRQNQzFJ6Ek8WSMejWPqJvF4DF01EKGgZK9Ry+fQ8j6a72L7BVQh0EUEVZGEo6PoUqOeEKhItM4hLD1NzV9CVw2QKqaSwg1LWGoaN9xAVywkPlF1DDucAOTWclwZJWAZAEXIJ/92QVpoZPCZRUEHqVKr9ICYAplAlX/0SSH7i6WRlG3Ud549e5YbN240O9lWVlZ49913uXv3LvPz81Sr1afumcMKZhAEXL16le/8zq2uJSFEVgjxW0KI8Sf/bpajCCF+TAgxIYR4JIT41hafovEm/hDwM1LK75ZS/riU8k22luafPOgEL30Pcy8apTSO4zStyk4i672dRoT56NEjKpUKN2/e3HeP9SiCudsgtLm5OVZWVrh+/XrT6eewvdytHOs4DkKI59qXOg7Wa5vcWr3LYmWRDzcfci49QsWr0B3rou7XMRWdqlcmHUlgGnFWqwuYoY6mCAYTIxTcDbqtHoreBmkzgxe6dER6WKpOMpK8iOfX6Yz0U3I3SJpZ7KBEXE9smWjoUcreGj2RUUKZwbdDwuoS0XWbeloDo4yf7MIwTOwgh2UNwcgForJGKZEjZWYJwzJRrRM3zGOoKZxwiajai8Qlpg1TD8eJKCNI4RJRzuAxj0I/qpAgTYSog4ihiyQBCxjKJUBiiPMETKDIETTNR9CLJv9rFA63z39c7JX02ek+X6vVyOfzTE1NUavVSCQSPH78mHw+z8WLrSeofvZnf5ZXXnmFUqnU+NNxT4tsfElyQK8QwgBMKWUZ0IHqQdf40pbk+4lZrVbj7t279Pb2PlVKc9KF6L7vUy6X6ezsbMki7ShL8u3HN/ZHVVV9ZhDaYcw6WhHM1dVVxsfHEUK0ZIZx3BFm2a1wa+UeE4VpPtx8yGCij0B6jCQGKLllUkaMxeoiw4kBaq6PpesUnAIdkSydkW4qXp6YFsEOyqSNNK60yZpdLFTGGU6cI5AuA/ExcvUlOqO9lNwNEkYSP3RJGCnyzjy95jBhxSZlxCk6y2StAYL1HJYn8ZNRooGklADTtgkjJiKIkZdTxBhC0SGm9+IEG0S0DuxwlYjaicQhqg4+EclhEB5R5QyOnMGkHyEUNJIIqkASTYnhs4IlkghMjGZh+tZSXWUAoa4Q+EnU8PtQeHlL2lbrMBvlSwMDA83W11/7tV/j85//PJ/73Of46le/ymc+8xk+85nP7HmOhYUFPv/5z/PjP/7j/L2/9/cafz7uaZGNG/3/An4EuAA8FkJ8B5AHPjjotZ66pM/q6ioTExO7zvk5yQizMRvcNE3OnTvX0mOeZ0leq9W4c+cOg4ODDA09W1N3mO6d/cStUWRfLBa5fv06iqI0vSxnZmaaEUFjENpxRp+2Z3Nn/SF31x8yWZgmpkeI6AZ9sW5qXpVMJMVSeZGhZD9BGNAd7WSxvESXnkVRLULhEYQ+IT4RJUKAS1JPs1idpi86QCBdhhJn2agv0BMdpOoXyFidOH6NlJFhrT5Df/wsQejRKTPkNh7S+zhPLWuRiCdwunVic2vkL2TonNggzKTIrITkz6h0RocIpI0qkth+DpwkFW8DjTjoRSJ6N/Vgmqg2CLjE1LPY4SRC9qMrOrroACpI0mjCwmcVXaSQmJjKcLPmEuGgMYIUCwj6UISLDBU2V67SmXi5M+qPUlbUaH39iZ/4CXK5HH/8j/9xwjDk9u3b+wrmX/7Lf5m/+3f/LuVyefufj21a5JP9y+DJuX5LCPE+8D1PHvdZ4HNSyr2XvE94aYKpadpTM3rCMOTRo0fU6/U95/ycRIS5fXLktWvXuH379rGef+fxUko2NjZ49OjRvsPfjmNJ7vt+07Xp2rVrBEFAEATPmGGUSiU2NzeZn59HCNEcTXHYki/Y8pb8YGOct5fusVxboexW6IpmiGgWEGAoGhv1DToiafzQYyjZz0xhhnPZs9Q9l45IGtd1iOgGtvRAhETVKOv1RVQlRaD4DMZHWKvN0xsbxAmqdFg92EGFpJFmrT5Lb2yYUPr0REdZr03TGz2DOz9HplKn0hUhkauT6zDofOcOoa7S8XiT9et99H95Ab8/i1lNUtGXSJn9OEGemN5FaNiYyiBVfxYRZKjVC8ggSz0+gy57iBgRTKUHSRlJBk0Y+LKIoaRAGBgM4MgJLOUiQrpbkaWYQZMDW7N4iDzxuYwT1v8onvPyLdGOY2JkV1cXV69e5du+7dv2PO5zn/tcc2rs7/7u77Zy6kNPi3yS7Plu4HPAN7JVi/nv2VqGu2wtyV+uYLa6JK/X69y9e5fu7m4uXbq0byH6cSZ9do6tOGwb2FHKiubm5iiVSnvOXz/KuXeLRhsR7MjIyL4u80KIZkEzfM1JfX19nfX1dfL5/L5WbA3G87N8ZfEuK7U1ZoqLjKb6qHp14kYEGYZIAkIJoQzojXczWZjkfHoMO3AYSg5QsgskzBib9jpxJYoqNBQkFbdMJGrQHe1jvb5IRDe39iyjPdhBmYSeYt1eoNPaWuL3RkdYqU4wED+HF9bpigxR8TfJbFYojMTJTucJTI3ORxusvTVA/5cXCGMave8ukb/SRboaI4gKkloHblAiomapBXNE1G4kLgl9hJoyQcTsRVctXF8gRYlSxUNXBJpVRxNxUAxMpQdHThMVF5+Mzz2PzyQGIwjhopIGUQCRQRMBkhU0+c14wRiKcnLu/K1yHK2RrcyU+oM/+AP+zb/5N3zhC1/Atm1KpRJ/+k//aTj+aZGfBj4P/Dhby3ENmhvEnUKIbinlxn4neOlZ8rW1NW7dusWFCxcYGxs7UGT3SxTtZD/RqVQqvP3223R1dfHqq68e6cY4jKj5vk+xWMRxnAPFEp4vwtzc3OT27dtcvnz50HPPtzupj42NMTQ0hG3b3L9/n3fffZepqSmKxSJSShZLq/zLh1/if/3KL/L/+eovMl9ZZr2WZyDeheM7xDSLXK2AqipkrCQlt0goA1zf4UxqhLyTJ6pa5OqbJMwYEknSjJPzN1GFQtJIg/CxfRuJT9rM4oRVLC1C1SugKya+9OiNDrFan0IRKr506IuNUXLXsNQItdoq8cllPFPQ8Widtas96K6PNFT63llk82oPmu3hpUzSE3mcLhMliODIDVShE2IT14ephwsEoQ0iIKIOEFBESg9Lj6CpKulEhGgsgSazeCxQKVSp1WwUbxhXTiBQ2bJw60Eq64COIjSkKD/JmFuo8rvRuP7cQnVcHEdrZCtZ8r/zd/4OCwsLzMzM8M//+T/nm7/5m/mlX/ol+Nq0SHh2WuT3CiFMIcQYLU6LlFL+kJTSl1J+Rko5KqUclFJ2P/lHOUgs4QUsyff64iuKwsbGRkvZ6AaHjTD3Et/jmg3eqmA26jkty2J0dLSlL8Nhkz5hGDa3F1ZXV/cU5cManiQSCRKJBKOjo3iex/TKHP/y/pd4UJyhEFToiKQQqqQ/3kXds8laSSbyM7zSOUYQBkR0g7JdJmXFGIj3UnZLdMc62Kxv0BnJ4oUO3fEuZktTnM9cRISSmBql6pdJ6ykiahSJhyYs6mEZXWgE0qPT6mGxMkFvdBg/dOhXeimvPqRzrkx1IEm8ZxivnifzYIXVC1F6Zi0Cy6Xv3SXWr/fR/f4qXtwg83iT2kia+GyB2qVO9EQWUbdJaANU/EksOtAUjZg6iCfXCUMVTTUIQhUhfEDD1LLY4Rxx9QLSEGjKeezUJLocIQxtvHoaYc4hvQ5MS6IIH0XxAAudASRTKPK/wOD/3vyMPg6CeQyF6z/FMU6LFEKoUspACPHf8LXl+B8DzgL/WEq5ctA5XsoeZr1e5+HDhwCHGtilqupz9W439klt237uqYrQmmCur6/z+PFjXnvttabpQavnPkyEGQQB9+/fRwjxTMb9KGz/oau6Nl9d/pD/tHiHol1GEmLFLOJuiC89DFdhujLPaKwXW9qMpHpZrqwykOghakTwAwcQ1IMaCTOGF7j0xLqYLExwMXMeJ3AYTAyxWV+nM5pFINFUBZCoisANbKQeI21mWa/PowcamhD0xkao1JbpKCl4pRUStosb0UhPrbMWgzRpAgP6FgLWzsTofuDgWwEd8zbV850kJ9axB+JoFQe/K0G0/wpluYAUOgifmDaIE6yhhgqGGiEIDYQInsz4yWAH8yT0M0ggpp6jHj4mqpzfijzVUQK5jKn3opgaIR6KEuA6KgITJT5HYI9gGqAqfwhDfK0wPQzDUzHW4Xkj3Xq9fmgD4U996lN86lOfAo5/WuQTsdSA/1VK+S+FENeenONX2Er8HFjP+cJ/xtbX17l16xZjY2NEo9FDj9o9au+2bdu88847WJbFm2++uadYHiayO2hq5OTkJDMzM9y8ebPpJn6cpUINgiDg8ePHJJPJI28v7MQLA97fmOKnvvLP+Jtf/qf8yoPfxg1cim4FU9OxNIN6WCdiWETjUS51jrLibqAEIcVyCT1UKNfLCCkB8cThPMNKdQVdVfFCj7OpMZYry0Q0g7pfI2nG8UIXS7UoeyVURRDV4iBCqm4RkE8SPFuzmsJSjuhqEa+8RnwhR6UninAdfCWg+4N1CpESUoHAEHSs+FRGUmjCwM1G0bQI7jfexBq+gv36MM7rW9FhXB9A1T1cv4yqqGiK9UQkfSw1jROuowkdgUJMG6PqjyPQAJ+IegaXmScTHX1UokAVhI6uJEFbJx5PEo9nUMOzGJFZKhWfu+/08vDBI1ZXV/E879QsyY/jOk7D69hBBCgIISLADwA/ytaeZktD3E/81TQEsRHdzc7OcvPmTTo6Ol7I5EjY2tNrdNEctE96WFHbDd/3uX37Nr7vc/369eZ2w2H3JVu5jmKxyMrKCn19fYyMjDxXZCKl5O7aND/77r/ipz/4V/yzmd+j5FRYKK3RGU0iQ0lUM8nVikhChhO9rNbW0RWVsldlJN0HpkJnKouDiyYUcEIqTpFKrULdrTOWHGaltoKh6FvF6vFO6n6dtJVitbaMqRooqCT0KJu1NVRFIamnkSLADx2EAFO18L0KsYfTeEZA4DmEEY3uh+sUz6QJTAUpfDrG89SyKqJcJVR89LqPe3kMa+gVvM4ornAgahA3+pGK/aTLR4XAQFUgCF0sNYkb5lEVDYEgro1QDSdQ0BCExLXzuHJq6zPDRxNpJCUEOqpiEbCJJgQC40nN5SNAoKoSlfN0pf4CN278Ifr7+5v1x+Pj4xSLRQqFwku17Xvee+k0RMm7IIBJtuowrwFfZKv4vaU3+oUsyW3b5u7du3R0dHD9+vXmEvKw4ndY96GGn+TExMRTXTQHPcfz3KQN9/exsTH6+vqOfO5WluQNB/a+vr7n2iuayC3zH+bu8O7KOH7okonEKbpV0kYUO3AZSHbweHOO17rHSIoo634dP/TwkAwne6l4VTJmguniPGczg0gZkjCj1MIaPckOYmGEteoqEc9gs14irsQo1PKkIykWK3OMJUcIwoDeWA9L5Xk6tE6kMDEMFTuoYqoGIlCAAF2YuKU8brmE9OpkJypsvtqFHobEyjbZiTx2bxx9oQihj152CSMCM9lLNR3gqBKDgLjegx2uU/dyxI1ONGKoisQP66jSwpVF4mo/CEjoQ1SDKVL6hS1LOPU89XCCqDoCwsMQXQRsotCJpmyVEykiiRQmphjBYxKD8wgRoHEWKWaQDGLxJ1CIgcJT1mtLS0vk83lWVlZ4/PgxlmXR0dHRdE7/qHAaRVNKWRJC/AW2kkg/KKWsCyGywD9q5fEnLpjr6+s8fPjwGU/Ho0yOPIxhR2M2uJSS69evt2zY8TzL/tXVVSYnJ/dMJh3Xknz7xMibN28yOzt7pK6cL0y+x68/+s/oqoIQWyU/vgwJwoCeSIpHxQWuJc5R92wGEh0UnTIx3SRlxXEDj4yVYLa0wGiyHy/0GEp2M1uY51zHCDFiVN0ibuAiBHREMqCE9CZ6WKzM0al2UKmVSMsUM8VJhmOjBELSEemg7lRJGUmqQQ1LsxAILM2g7BSIzUyT3tigMJainLXIblRJzRVxOiP4dRcVieoEhDEDq+wSpExqloaRiBK1ojjBJlVvnZTZgy5jCCXAC2tYWoKav4Sp9+BQJ64NUPGnSBvnAZ+kdp6K/5iYOoZUPEy1H58NDNmJomj4YSORY2AqvXjMYHLhic/lBQIxjpCDKEJHkMXke1DY3eO0Ufw9NDTUdE7f3Nzk8ePHOI5zJOegF81pE8snfegX2RpLcRn4dbbm+PQC07TQ5QMvQDB93981Y3uUN7NVkd0+G9z3/UOJyVGEXErJ+Pg45XJ532TSYRI5e4mr53ncuXOHTCbDxYsXEUK0vNTf/p7/+qMv87mJt4kaJjOFFS5k+4lqBuP5OTqsOHbgcT7Zy1olR1csRdWrktAsdFUjbxdIW3G80GMsPcDj3BSvdp6j6lXpimUoOWWiuommaoT4JLQ4q7UVsmYKX7oMJ4eZKo5zLn0OJ7CJyQFyzgZRGaEqtiLQIPBImEk27RWG6EBfXkboNnnLoxtJbLOGnzBwowZ6EOIARHS0ko2eNKj0xYnUC8RWqjj9MUpqgaxIEoooQglw/DIRPU7FXyKiRgmlR8Lop+JNIWQXIEnrFyj7j0ioZ5DCI6oO48kVTNmDqigEEhAOAgtT7cSV80TFBUBgiot4PEJnBASo9ILIg8ig8z2o7G7oAk8nfbY7pw8NDRGG4VPOQYqiNOtkE4nEsYmUlPK5WmPr9fppG4DWxdYsn2ngH7PVCtkozcmw1Vb5pw46yYnvYfb39x9Yc9gqrexhLi4ucu/ePa5cuUJvb++J959LKbl16xZCCK5du7Zv5v15+8MrlQrvvPMOQ0NDnD179qkv1WFu7n8z/jb/31tfIGVFEUgyVozNepmQgHOZATbqeaKazoZTIhNJEEqJqWqUnCrIkIF4F4vlZXRFwfZszmWG2azniGomVa+OqWpb+5dIHN8llD79sV6Wq0sIBG7gMJYaY7O+RlSLUAsrdCe6iMRMeuM9lNkg8APc5XXS63XWc1OYc/MYGyUs26OW0LFqLoEmECoIPyBadigOJFA0DavgEis5bJ5Jobs+miuIGmlqXgFLi+PJOqZmEUqPpN5PyV9AV00gJG2cR0RXEYit5bc2hiMXt0p9BFtGGKIGaBhKGk8uo6Ii0Igo53F4xFbTibcllsoK4KKKKEJIDP4wBhf2/Xz2Kyva6Rz02muvYVkWCwsLvP3229y/f5/l5eWnuuiOwvOWNp22iZFSysdSyr8npVyVUl6SUv4htvrPv5Et5/UfauU8py6FtR/7iV8YhnzwwQesr6/z1ltvNff0TmoQGmxFstVqlcHBQc6fP3+sZh07xXVtbY27d+/y+uuv09PT88yxrQrmb8/c4QuT7/FKRz/ThVUMVSOqG0gCVAQFp0RvPIsduHSaCaYLixiq2sxgO4GLG7qcy4ywUc8R0y3Wa5ukzDihDEmZMdarm6iKQtZKYwc17MAhkD4jqRHy9gaGqlNxS2SsDE5Qo9PqZLEyS8STiFqVTidOtbpAx6NxzLUNMusVSp0RolUHN6qjByEIQTJXJzeWQQslRtklvV5l/XInWrYLzZGk8g7lsx0Y51/HDetYegRf2iSNHsr+ApqiIwnIGOcoeeMIIMRD2F3Ug3lCQoQI0UQcSRVQMNQEntxAEwpC6ETUsziMI4QCwscQYwRiDomNqqgILBThI4WLzmfQuXrgZ3SY7HSj0eDy5cu89dZbjI6O4rouH374Ie+88w7j4+Nsbm4eetV0HG2Rp8kLs4HYYlQI8Q1sCeVZ2GNvZBdeWJZ8Lw4TGe0lmPV6nbfffpt4PM4bb7zx1L7OSRl2LC8vc+/ePSKRyDMCtheHXZI3lkWTk5PMzs5y48aNPfdGWznvb02/z0+/8xtYmkbZrdMdS+IE3lZdpabjSY/eWIYHm9PEdROEpDueZqOWRxHQE++g6tUwVZ28XaArksEOHPpinUwXZzE1DUu1iJkmebuAALoindT9CooQ2EGNtLklolkzy0p1EUu1CAKX0dkqC+VJYu/cxpiZon92k3x/gljFoZayiNY8fF0lu1Jm81wHmheg2R5dMwVWX+/BcHyUuk82H1I834lx+Sr2+WGs0cv4uk/S6KbsLWMoJlIGZIyzFNyJJ5GkS0o/Q82fQ8pgKxJUt7LdSBVdieLLwpbfsNCIqiPYcgIhVbZm85zHk1OE0kURApUUQjhI6aKJLkKRR+Mc5pPC9IM4ajlPw/h3ZGSEq1evcu3aNbLZLLlcjlu3bvH+++83R1AcdL88b0nRaZvnI74mRFeBn2er7vJ/B/4ZW0YeP97KeV5qhHnY6G83MWvUdV68eHHXsprjjjAbPp0rKyvNkRXHXSrUODYIAu7cuYPruk+VJx3lvL8/+wG/ePd3OJvuoezWSRoWG/USmiLIWnFWa5voQsUNPF7tHGWpuompaKhC3UoKIfECl4QRwQkcemOdTBRniOkWoQwZSvaxXFnF0FQiWgQhQgK2DIAtzcINbFJGik1nHV3R8KTLSHKM2fIk5uQMfrXA8ON1NgYTxIo1StkIyc0qTsygY7HI6sUuTNeHUNL7eIPlq30Ytg9BSPfEJrnzWaJlBzsbI6ancTWPZKSfsr+KrmxNhcyaY+TdCQQSKT0yxlmq/gxbTSIhptpJIIsA6IpJIGsIESDQiWoD1MNpNGEAgohyAYdxpPSfjMbtRogSEhdVpJFUURQdcNHkW5h8e0ufOxxP/SNsfV86Ojo4f/48N2/e5NKlS2iaxszMDG+//TYffvghq6uruw4KfFFtkS+Qxhv6GWBKSnleSnlVSvm6lLJDSvmjhznJS+EwWW94OlqVUjIxMcHMzAw3btzYczb4ce5huq7Le++9h67rvPnmm2iaduhSoVaP9TyP1dXV5njd/b5ABy3J/9P8B/zvt79I1ooxnl8iZUbQFRVDUSjZNfww4FJ2mPnKGhFNp+RU6YjE8aSPoSh4gU8gAzoiKZYqa1uCF7pczIwxU5rH0gyCwCdlxrE9G0PVnkTHAVE9iuPXCNnqChpKDLNUmUdRBF5oM5IaY92yiVYdyl0xMusVnJRF50KB1Ve6iFRdpKow+OEK8zcGsGwPhKD3wzXWX+kiUnZwkiapxTL13jiKniVvL+LZIXW3TNoYJu9MgpSEuGTNc5T9OcInTkgRrQdfFgCJrhqEuKjKE5FUe7DDOTRFBxTi2gXq4SO2Zmb5GMogoVgnlC6aiCHxUYQCeOhihJBFIILFtx/KMf2kOn0sy6K/v5/XXnuNt956i8HBQWq1Gvfu3ePdd99lcnKSfD5PGIYEQfCxijD5Wp3lO8CsEGJYCNErhEgJIaKixTf8pS7JD2um0cB1XW7dukUYhi25/hzHkrxYLPLOO+8wOjr6VMLluGsrYWtcxaNHj0ilUgwM7GvzB+wvmF9ZfMRf/91fJq6bOL7HWKqbyfwyqqLQE0tTD+oIISi7FUaT3ZTdOhkrxlotjyYUYkYEL3SxAwc/9LiYHWWhvISp6lS8Kv2xbspuhYQZo+iU0FUFQ9VRFUHZKSMJ6In1krc3CEKPIHQZTo6Qs9fQFYOaW6ZjpUwtbZFdKLByrgOr4hIYGkN3V5i9OYjheASayvD7y6y92o1ZdXCTJtnZAtW+BInlMuUzafQzr2CmIvTEzuDqa0gpqVTy6G4XJX8W17eBgLjWiyfzSBmgKzqhCEF4CKkRVTvByqMpGkKoJLTzVINHCEDiYykjeCwR4qIJE4GOooRI3C0BZRUhtK1pkryCxfeiiMPZ5L2IXvJG6dLY2BjXr1/nzTffJJlMsra2xrvvvtssW6vVakc6/2nbw5Rf+4J8CFxhq6zoJ4C/w1bW/FtaOc9LjTCP0rkTBEEzU3zhwoUDf4kPW1e5mwAuLi7y4YcfcvXqVbq6ug48fi9aWTrPzc0xPj7O5cuXW+5130swb69M84/f/xKXOwd5sD5P1DCQhGQiUeqBgy99Oq0kdd+mI5JgorBI0rQQQpC2YqzX86jAQKKbkl1EADW/xnCyj6JbIm0mWK2tEdctpJRkrSTLlRVUIUibaaTwqboVIKQv1k/JzaOgbC3P9Qx1v0Jmo8bmYAKz6uJHdEburzB7fQDdCwgsldHbi6y83oNZ93CSJh1TecoDSeJrFUrDKSLFOl7KIrsGOT23lbiRHp3WWTyxRiSmk0jEiIoevDBHuVzAqbsEQYiUNkiFmJrBDpZRFRWEhqj3UA0eAwohPjH1LK6cexJ9qmgihoJDiIOpdBGyiSJMJDY6Y0gxj6SCxXegicObu7yM1khN0+jq6uLixYvcvHmT/v5+FEVhYmKCt99+m0ePHrG+vt5ygHPaJkYKIRr7C/8zW+VEPw58gS0Tjt8EZlo5z0dmSS6lZH5+Htu2uXr1anOeyEE8z5K8MfJ2fX2dmzdv7lomcVxL8kaWv1AocOPGDSzLei4D4Tur0/zlf/+PEEDBrnKpq5+CU8HSdHwZAJKkGWWlvvkk+nS5kBngcW4OS9WIqCaGqlL3bQLp0x3voOxWSRgx1uobpIytrPlgopfJ4hSWpmNoBikrwUZ9E01RSBtpgtAhXF5ETD4msZLH2VggUfGpVFfRXA9/dYHBh2ssvtGHCCVeRGfs9iIrr3ajOT5OwqRrMkdpKEV0s0ZlIEmkaOOmLTofbZC73AWWiXf1Mp3WGGVvET/ciiQTRj9uWCDEI2JG0FWTWNzAsiIYJKgHa9QqVey6h8UQFX8cBQWhhMTUc9jhFFK6KEKiKRmgSihddJEloIzG1qxxQ4zhMwfSBeGgyFGi8vtRRbalz2+3e+EgwdQ++1liFy8SGxrC+hN/ArG6eqTn2o3G3KdUKsWVK1e4ceMG3d3dlEol3n//fW7dusX09DSlUmnPe/QU7mE2LnQV+CUp5W9KKT8vpfzXUspflFKOt3KSlx5htvKL1XDiKRQKRKPRQ7WHHXXUruM4vPvuu0QikWcy70c9/17HNp4rFovx+uuvo6rqc/lhfrgxz9//6r/lTLqbvF0mbUVZKG2gBRK3buN5Lq7n4gceFzODPMrNEdVN3MBjMNFJ3t5aWuuqhi89LM2k7FSI6RZu4DCc6GM8P0lEN5FSMpIaZKmyjKno6IqGqWg4voOmKqjlCmFpk6gT4hogc+vI2Un65stsuquEnkNgqoy8v8TapU5EEOJFDbqmchSHUkQLdWrdMaySjdObIjn6BvlLXYS6SpCJ0Sl7KL7ShS8dhAhJmlsiGYQuuqKjiK3Ei5SSiJ6mHmxg6DqWFSVtnkFE1zB0E89zCas91IIJwtBHhj6m0kNIkQAXQySQ0kZFReJhKaP4LDx5x+vojCKUIgGLRMQ3oymH8yHdzkGCqf/Mz2D9xb+IWF5GFIto/+7fEfnWbwX7wLHaLbM96bNb7WckEnmq9nNpaQl72/MfZklu2zZvvfUWb7zxBq+++ip/42/8DeDYp0Y23tAK8ANCiO8XQtwQQrwmhDgvhGipWPyF+GHuRSvR3/bZN4ODg7z99tsEQXCoVsfD7mEWi0XefffdZ9o5d+N52x2LxSL379/n4sWLdHZ27ntsK+d9tLnIT/7+vyBjxZjIL3Ih24cXeCQUncXKJuc6+tA9hdnKKqqfpaoJzqf7WatudfSsVjfJWnEUKVCEJAhD/NBjMNHDw9w4FzNjeKHHhewZZgvznMkMUbDrpM0kVb9GBJV8PU9UcdH1CG6lQk2DqO3SuRmy0mOilTxU3WBwfIP1kRTdExtIS6NztkC5P0F2oUitL4FVcbGHukicfZ18uExUS6Fp0NlxmXxiBqlmiBgJUjKB7W+iBiqmauILE4lDKFWiepqqv0hKGwIpSRkjlLxJssYFJAEp4yJl7xGJyAhqTMUP+vAjG9TrCkgFPeKhSp9QE1jqEK6cwRSDSFHfqrlkmhATXelF0k2ET6KL8y19bntxkGCaP/VTz/xNmZ9HuXuX8K23nuu5G+yXJd9uMi2lpFqtksvlePDgAb7v85u/+Zusra1x9uzZlp7LNE1+53d+h3g8jud5fOM3fiPf/u3fDsc4NXLbvJ4skAL+HJBky4xjGPh2Dh6i9vIjzP3EbG1trekcPjQ0hBDi2MdU7CSXy7G2tsa1a9cOFEt4vghzeXmZDz74gDfffPMpsTzseRuCOZlf4Ue+9E9QhcANXS5k+7i9MoFXqxMzIiRjUeqBh2EZXOgawtV84obFUnkdzZOUKiViqslqLYcqIKUlKLsl/MDbyopnzzBfXsRUdWp+nf5ENwW7SMqMUXAKmKFEXVsnVffJuXnUhw9IL+ZAg6IlUWoVeueK1BIaweYKwnfJLJWo9STQbZ8goqHbPm7aIrlUptafwj07gtQlWXOAepDH9soIIUkafXhUcYMauqKjChNwCWVAVE9SDwpoigApSOnDlLxpNMUAJBnjIkXvMRAipUdcG8YJVwiki65aIDWicZ1YwsJQegjEBrWyQ6WaA6cfX84hZeWJhVs/qmLiyRl03sBU3mzpM9uPA5M+u93PUsIx9pW3uo/aqP0cHh5u1n5euXKFyclJfvInf5LPfOYz/OzP/mxL54Ct6hDP8xqB1nezVS/Jk3//kSf/3ZwaKaWcBhpTI/d7jhEhRERK+f+UUn6zlPKTUso3pJRXpJRpKeWBYgmnYA9ztyV5w1xifn6+6SXZ4DjHVOx8zvv371OtVunr62t52X8UwZRS8ujRI5aXl3nrrbd2Lb84bIS5VC3w01/5DYYTnUzkF7E0nYpdY9BKUREe8WiEhB7FCx0MRaNgl+mOppEqjGX7WA0KpKJxNBS0ENYqm/iBy0C8m007hxCCul9nKNlHwSmSMuOs1tZJmjECGdId62ChvoRh21i5EolcmbWUgu77ZFaKSFOlZoDqucQ3t0qHFD9EKAIlDPESOon1Kn7KxEkYhJZK18NV/NIKVbeIokDK6CbExvYrGKr+JEvtE4Q+MT2JHRRRFQBB2hyk4M6gqzoISda4QMF71KzBTOhj1IMFwtBBFRqqEkXgEEoP4SfxwzyaMNA0iGnniSTzWFEFRfFwa534fhU3mCHwFAgjRMQfJqr84ac/7/ffx/ipn0L/mZ9BTE219FnCwWVFwZtvPvuY0VHCK1dafo6DOGodpqqqfNd3fRfnzp3jF37hF/gn/+SftDSFNQgC3nzzTbq7u/n0pz/NJz7xCdgxNRLYPjVyftvDD5waCfwY0AMghPhRIURzz0QI8beEEHs392/jpZcV7Yz+HMfhvffeQ1EUrl279kyx9klEmA1z4UQiwdmzZw9t1nHYYvRbt26hKApXr149lr3R1XqJv37r1ynaVezA4WrvGaY3l5COi9QVkpHIkzrEAEPVcUOX/ngHj/JzxJ7sQ46melmorJGKxelOdqLqgkD61Oo1YtJio7yBhcZ6fYOUEcMNXIYSvUwVJ7G0LQ/LgZJkXq8TWVkjWqgSdX1KHRFML8Cou4QRDSnA8AN8XcGP6sSKNmgKlWwMaahbQ8qiOsW+OAqQnM4hlICaV8JQTVTFQBEhfugS01PYYQlVUZBA2hyg6M49MfiFTus8BfcxyK2+8JR+hlowTyBdVCEwlBRS1AilS0TN4svSlh+mCIiqY7hyjq1cQR1TjCFEGWFskEqkMPUuNPoQ2hyb6zqP7vQwOzvb7KJR3n4b64d+CO3zn0f/9V/H+vN/HjE93dLneVB0V//c5wiuXQMhQFEIvuEbqP3BHxxrhHlcrZEDAwN8x3d8x4HHq6rK+++//9S+6D4cemokW22QjTfoTwPb9yy/CWjpxZ6qJXk+n+fdd99ldHSUc+fO7Sq2R6mr3E94crlc01x4ZGTkWMqQ9sK2bTY3NxkYGDiw97zVCHOlkucfvP9FuiIJ8nYZS9WYy62SUS2MeIS0FSNfKwGS7liK1eoGqlDwAo/XOkcZz80R0bbKl9KRGBW3iqEqRDWLQAnoSGaQhiRpxai5NRJ+hInCNMILcT2PM6kxpgqTRJZXUJZX6N6skOtJEK1vjRJRJXiaQqzqYsdM0BUiZQfLCyj2JUBXSK1W0AydzcEUqpQkl8roQlDpiWG5AYpQn4yqqBM30tQbIilDMuYABXcWQzGbIpn3HtNweU8bZ6kEMwShhyLAVDsIKROGHqaaJHjS8y2lR0wdwZVLKChI6kSUs4Ss4MkNhJCoohtT6cCV02gihqopGMpFxnr+HJcvv4phGM0umurP/iyeEAQdHcjubkS9jvYbv7Hn57idA5fD0Sj13/1dKsUilUKB+he/CMfsk/miJkbuJJ1O86lPfYovfvGL8GRqJIB4/qmRNSnlxJP/Lu84XmFrvs+BvBDB3EsYGmVFjeFdjx494tq1a8/UOm7nKGVCux3feM7x8XGuX79ONpttHn8SgtnwBU0mk/T29h7LedeqRf7ib/4Ctu9iBy490RTrxTzdVpxFt0BcN4kaJooqKLpVvMDjlY5hZopL6IpKxa0xnOxm0y4Se5IlVxSBKlQkIUjwQpeBeA+r9TXi0TjRZJQLmTMs1BeRlSq1qXGGJ9dZLy4SrzrUogaRuosT0UgV6xQ7Y2iA7vgkS3VWR7IoQHy9SqzqsjqSRj1/EavvDBErSrEvgVX3EH6AHoTUXzlDXM9Q84voqkYY+mTNfgrOPLpqIJF0W+fZdB4hUAjxyBrnKHvThKGHEBBTu/HJE0oPU33SkaNsRdxxbRA7XEZBR+JgiVHUyCY+JYTw0JV+NMXC8ScxcnVwA0wxhCcmEUSJiz+BohjNWe+NLpqYaeJLSaVcplQq4fo+Tgs93HA6vCRfZGvk+vo6hUIB2PKF+NKXvsSlS5fgeKdGvi6E+PNPMupngBtCiHNPMu9RoN7Ktb70CLPh71ipVHjrrbcO3Ds8DjONIAi4d+9e079yuxP7YSPYg4RNSsn09DQzMzO88cYbLf9qHxRhbtbK/JUvfZa6t+UE1GnEeLAxRzoSxYpajGW6mSosoQlBXzxL2SmDBCd0OZ8dIOcUSJtbxekxzSQIAuKGRd4uggjJmilqsoYXeHihx/nMGWZLs+iKiic9zqaHqdfX6VgvULYUsvkatbhJ13qZtaEMph+iBJLulRILF7vRgxCr5NC5XmHxYheGF2CVbJKpbvJZg4gZJ+zuwRg9Q2Wgk4RvUD7bi97ZQxB6dFoD5O15DNVEIumyzrJhP0aRypN5QRcoeJOEYQAiJK734YU5wtBBVyOAQIiAMPSIaX3YwRqa0AmlS0I7iyNnCbBBuIR2F6oIsMN5NEzU5QLRh2Wc6Aragymo5lHoJC7+KIrybG2uEALxJ/8kkTAkCSR8H6GqzF65wttvv80HH3zAysrKrj3c28/xMnmREyOXl5f5pm/6Jq5cucLNmzf59Kc/zXd+53fC1tTITwshxtmaKf5TsDU1EmhMjfwirU2N/H8AfcC3sSW4/xPwC8DvspU5b6ml6aXaNTuOw+rqKpcuXWqpBRCevze8Xq9z584dBgYGGBoaeub441ySN+pHdV3n+vXrBEHw3POCAIp2lf/lP/4KpqpRdCvElBRVx+b1rmEmCstc7RsjCH3iukXZrmHoKn3xDopumd5YhoXyKoOJTtzQoz/RyUxhkYsdw+hSpe7XyNXzZPUkPUYnG/YGUb0fN/A5kx5hrbZGf6KXQm6erukVqpZKz0qV2Vd6GH28RqCrDM5sMPNaLxdvL+ApMDCTY/bVXs7eW0Y6Hl0rJdZHMnSv1igYGjEjSs0vkTTT5OQikeFRbMOg07BYt6fpjZxB4tMTPce6/Zgu6ywSn67IBfL2OGlzCEVIUsYgtr9GRHRiqCaB1AGfMFSIad3U/HkS+tBW0kc7Qy2YwFJ6kdhY6hi+XMQljyK6UEQKQ8lg+5PElgvIjgjGqsS7EEGfXSJx+cdQlb0L04Nv+RYcQPv1XwfTJPhv/1vOVSpc/pt/k6BaZe27vov7n/wkoZRks1k6OjpIJBKnZmjY8y7JHcdp2Qf3ypUr3L59+5m/H+fUSCllSyMoDuKlLclXVlYYHx8nkUi0LJbwfBHm5uYmt27d4tKlS7uKJRzfkryRSMpms1y+fBlFUQ5l77YXZafOn/3cz/NwYwmJ5Gyim9nSKlHTxJE+ZzM9rNeKRDQdTVHw8YioOmW3SsqMUvcdRlI9PNicIqabqEJhINnJXHEZU9PojGTwQ49ivYSqQn+sh5ydw1A1ql6FjkiWqluha3KFxdEMsaqDZ2qMPV5j6uoAluOBFIw+XGPqjX4se8thqH8ux+rZLLGygxvRSZU9ygMZUrEuyl6OiBbBD126IgNU2UBXdUICeiNnWbPHUcXWcrs7cp6cM0koA5A+aXOIur9GELpoio6mWIBNGPpEtSy2zKErGhKfpHGGWjALCEJhE9PO4LOGE6yjCtCULkyRQbVW0YgBIVYthXM5ivAlqgThQfqXVtHlAZZ+QhB8+tM4P//zOP/gH4DvY33/96PcuoX++DEDf//v89aTkrJ4PM7S0hLvvvsu9+/fx/O85zYAfl6eN8KEUzkx8rl54a8oDEMePHjA8vIy165dO/SbehTB9H2f6elpJicnuXHjBul0et/jn1cw8/k87733HhcvXnxKmA9j77YbVdfm//2ffpWIphNIn3KlQrFW5pWuQXJulbQZZcMuEdOeTKlUtt5vT/oMJbuZLCwQ0fWtvczOUR5uTmNpOrqik7ai5O0iqhDogQpaSNSyCPBJGHFqXo20iLKxMU3s7od4ToUzD1eZfGMAy/UJdJXzd5aYfGOAiO0RqoLhx+ssn+8kVrZxYiaZkk/hbC9xWyE3nEH0DVP3qnRZA2zU5zFUg1D6JOll051GQRDi0Rc5z4a9tdyWBGTMYWreCn7goikauhojbIiknsGVJVR1a2haSh+lEsxtJXKk/WT5vYAbFhGEmEo/uhqhHs6iKxFABbcLlykQOsQMtKKPzGxtr6R/fhldu/B0RrpeR/9H/wjjx398K6Lc5UdR/5VfAccBwwBdhyDA+MVfRNM0uru7eeWVV7h58yajo6NIKZsGwBMTE00HoRfJ87gVnYY92JPihQpmI+oyTZM333wT0zQP7VZ0WMEMw5BqtUq9Xj/Q2Qiefw9zfn6+mbzaaTl32FES26l7Lv/9F/4PJvIrgCSOTtmr0ZftYKmSJ2tEcUOP7miShfI6Akl3NE3BLeOFPm7gcqXrLI82Z7B0AzfwGEn1slrd3CotEoAMKJWLxC0TU9VwAoe0laLil9GlJPzgDmN355geiaP6Ib6lc+n9BSbe6MdwfDxLY+zhCksXu4hWHOpJk67FIsWhNMloF4VXR4ideQXv2uv09FyipOQIfUmhnCMhu1mtTSAlSAK6zDNs2tMEoY8kIGuNUPFWCAIHTVExtQShqBGGPhE1iRdWUBWBlCEpfZiqv4AqNEJcUsY56uEcXlhFCo+IMowmJPVgHl2xUIRFVB3EDqYQ0kRRfTTRQShXkZqOmhogjCvEfnuTyFSE8NIl2NjY+mA8j9jVq5g/8iMYP/dzmP/df4fxkz/5zOcnd3qZSoncYa7SKOA2DIOrV69y9epV0ul000Ho7t27LC4uUq+3lJ94LsIwfK4I8+Mqmi9sSd4o3zl37hxnzpxBCHGkkbaHEcxqtcp7772HqqrNZXEr13qUOsyGUUcul+PmzZu7Jq+OegM5vsdf/71/znq9DGGIU61h49GXylD3XcZSXUzWVoloOqaqEzdMNuoFpAw5nx1kqbyGqghqXp2LHcMslddIGhFKbpWkaeH4DhGhU7LLxEKf9EqOoJTDza/juXWGzC5WSwuEdhXfVLl0d5GZV3tRwwA3onP2wxUWL3Ri1VxqqQg983kK/UnSG1XyF3qJvnKV+lgvXdF+1uxFdFXHlx6D8bNUWCWRiGNaOhl1iJwzg+fbOE6NlD5A1VvFCxw0oRDRkgRUt0RSS+DJOkLIrdEYxiAVbxFNaIR4pI1zVPwZwtBFSndr2qOoUfeX0BQdRcSJ6b3Ug2k0EUXiYaq9hOoSUipoYsvZSRE+MmYStb6N1D95iPGv/zXWD/8w8ddeQ/nP/xnzf/gfEEtfq1ARjoP+v/1vUH26SsX/gR+AaHSr39u2QdNwf+RH9v3cNU2js7Oz6SB07ty5ZlPH22+/feTxE63wPBZzL8Nt6UXxQl5Vw7Ls+vXrT7UbHkVAWhXM9fV13n//fS5fvrynU/luHPaaFEXB8zzee+89IpEIV65cee69n+24gc+P/c4vs14toAHFSgkjYnChc4APN+eI6QaBDBmJZBnfWMBUVTojKdzAxQ1c/MDnbGaA1eomcSPCZq1AdzRN1avTHU2xXNkg8FxC1yetWeSdAjJi0kuMqnCp5ZaRt97l7AdLrJzpIFQEnqlz9uEqS2c7MB2PesKkZ75AoT9BaqNCoS9JvFCnnonSGRtg3V56IpIOA7EzrFanAUkgXfpj59i055BKgGXpdEVHCM0KUgQErofwDepeHtutYaoxPOmiiPCJSPZT8ZfRVR2JT8Y8R9mfBhkQSoeEfgafHLa/iqooGCJLVOugFsxiKHGkDLHUfuxwGtBQEAipo2l1QkIsZYCQHOa/v0935x9DefQIfH+rNdFxiPyZP4P2e7/3zGcmHAd2ZMDDixepf+EL+N/3ffh/9I9i/9IvEXzrs54Re/1YN6ZHDg0N8cYbbzRL4RrjJ+7cucP8/Dy1Wu2598mfl1qtdtrMg4+NF5Il7+zspK+v79hs9/cTTCklU1NTzUjvMGJ5FGzbZmlpiddff33f+tGjEMiQH/3S/8lXFh5zPt1FJBDkFB9V1bB9h2u9Z/lgfYY3e8Yo1yQWCsuFDdLRGB2RFCW3Ql88y2a9SFc0Q8Wt0h/v4HFuhosdIwQyIKPGWLLXuNRxBpnfJO+4bPpr9NYkg+kUy0aZWOhi6SpDUzk2hlL0z+RxEwbdSyXyPUk6l4vkhjMk8jVqmQg9UzkWrvTSqWdx4wb96ghLtQm6rD4CBIOJc6zWJ8mavSiqoCsyTMldRqETS7cwZAw0G1NPE1cjlN01JD6VahmNGCVjhbQxiJQBWfMcRW+cpD5EKB1Sxlmq/jSKjJLUu7GUHoSoU/NnietjhLJCVBvADqax1EEQHhoJJJtIUmgyi5TzGF9+DDGN2P0CXX/ldxHbNUhKCENELkd49ixiZeWpz02aJuyyTx5evIjzMz+z72fe6lK2MX6iEYDU63VyuRwTExPYtk0qlaKjo4NMJnOsP+CtcNomRh4nLyTCjMVixxai7yeYvu9z+/ZtPM/bdwbOcbGyssLMzAydnZ3HL5ZhwD9bfJ9cvUJCN1gu5UimErzWNcxMYRlT1Sg7Nc5l+lip5ulOZ7EiFqom8F2XSq2E8EIKtRI90TRzpSUSZgQ38DiXHeJBbhy3WsfUDfoSXSwUFzHn5sms5JEipOzX0OZn6V4uUuqMIqUk1BTSGzVK3TFiJZt6ysKqu9TTEbrnC+RG0jAyQv3Tn2Rg6A3WYw6h9JHCpz92hry7ghPUCUOfDnOAiruB69fRhEpUS+HLKn7ooWMREiCETyhD0mYPniiQTqSJxiMktUHKwRyVcoVqLU+MYWrBAk5QBEKi6gCGqlL15zHUKEIYRPUBav40qogALrqaxWcZgcBQEoQ4qEKAXST2H+fwXsmAG9D5E/8Rxdtl20hKZFcX9k//NGwXJCGw/+E/3GpbPAJHXc5GIhEGBgae8q8sFArcvn2b27dvtzz87Dg4bW7rx8mp2Gg4jsmRlUqFt99+m76+Pi5dunSieyhSSsbHx1lcXOTy5cvH/gseypD/6bf/L76am8Or10lqJkJXCGRA3Xe41DnISjVH2oyyXiuQMi0CGRDVTXwZYEZNhjv6qEgbRQo2izn61TT31h5jCBXP9+jVsqz5OTLxJAYqqXKVHDYRxyNWcfBiOoGqoIUhVt2jnooQqTr4UQ0lCHGeJHRKvQl8XcGLGwxoPeTiAY50CUOfwcQZit46tl9HUaArMkg9KOCGNrqiPRHJGm7gENFi+OHWrBxJSFLvpOKtoStbkxk7rDNbZhqKhqYLOq0LiEgexQgIQhfsDL5fp+zOoUgNhQgxvYeqP40uYkjpYandOOE8AhVNGE8akh0kARFlBJ811EKZoDeK9R8X6f0z/x616O1+D5gm9V/6JcJPfpLaF7+I/53fif/t307tX/9rgu/93qN/9sew/9fwrzx37hw3btzg8uXLzeFn77zzDg8ePGBtbe1I42Fa4bS5rR8nL7VwHb5WxtOq6OwmmKurq0xOTvL666/v2b96XFk73/e5e/cusViMa9euUS6Xj7XkQ0rJz3zlc4znVkhpOrYMSMZimKFB0anSn8gyW1xlKJ6lHrj0xTPMlVY5l+nDMqNUvApVt46lalzqHOHu2iNe7zpLEPpctEZ4lJumX8sgVeiJZVhfm6V7coFcVEEnxDY0onWXQiSKF9VIFG38qI5rqngxg46VMqvnOlCqDqYb0O/GWBqLgZEgleymH8lGfQFFSJJmks5IH2VnA0VAzIgS1ZNbJUBoxIw4RXcdVQkIQ5WU2UnBXSAiskgZ0mmdIedM0mmNIqVHV+Q8eecxca0HVRGkjFHsYIVQq5OJDuIGOoQBlWAOdTOOn1Iw9U5qwQxRtR8hAlRMJGUkMUy1DzdceLJXWcEUo/id4wSqSc9//x76yh7ZaEUh+OQn0X77t3GvXCH8xCewf/mXj+XzP4mEiWma9Pf309/fTxiGlMtlNjc3mZubQ1GUZuF8PB5vlr49z3elWq1+bPcwX2ovORzerm27YDYivYWFBW7evLmnWB4lG79b1Fur1XjnnXfo7e3l4sWLR87078f/8vu/yu9M3wfHwRcSzVCJaDoVt07KilJ1a4wmu7i/OUvcMFAVla5YkrniKoqQDCa7KTgl3MDFCzxe7z7HZGEOSzexA4deM4NjBnTG01RKOaKLq9SkR6ZYo5KwQBPoXkDc9iimowSmRnqjitAUipkI0lDpnd7ETkXI33gVeeEcvZkxHM2n4hZRhULG7MYNqtS8CoaiY2lRQhy80CGmx/FDDwgIZUjW6qbsbWBoGkJI0mo/trqGruoEoUuneY68M40fuoTSJW2cwZV5qv4GmlAx1QwRLUHFm8PSUuhLi2S/Oo2uL5P8ym2UhVkCV8d2V/BKZYwNn6C+gf54AllcI6KMEcgVJN7WHHKvk94f/C2sh/mvfShCEI6MEHZ1IRMJ0HX0L30J42d+hsif/JO71l0elZPOMCuKQiqV4syZM033dMuymJuba47eXdmxJ3tY2oJ5ghy1c8fzPG7duoWUkmvXru07MOw4Ru1ubGw0zYz7+/v3PfYg9tqC+OmvfI5/N34b1QtIJJJYmobjezjBVunQeG6RqG7ihR6vdQ5xZ3WSiKaRNKJEDJ2N+lYx9pl0PyvVDYQQ2L7N2fQg8/kljFDB0wK6oxkc6TJQsFnviGAFAUJKunJV1vpTCFUQL9aJ2x6rAylQBF1LRRRdYa0vgSoE3RsOqCFFO4euqiT1DH7oUPPKWJqJqUaQ0sMNHOJGEi94kt0OAzJWN0V3DV1VkTKkJzrKpj1D4IbYTo3e6EUK3gyIAIlLxjiDI9ep+psoQhCRGaxynXL5MZYtEEIlbvRTsccxp5YI4zrmYhn7cgfG8ipJEUNxq1hzUyiL08S/vIDTKxBz88jSPLoyhCI8fFYRtdeIvrP+9AcjBN5f+kvYv/zLCCm3suCAqNdRf+/3EMvLh/r8D7o3XmT9YsM9/dVXX31q9G6tVuO9995jamqKYrF4qG2zozoVfRT4yAmmEALf93nnnXcYHBxseXLkUQVTSsnMzAxTU1PcuHHjKTPjnce2ev273Xz/8J0v8vuT9+k2oqz5NUxNJaNFKDoVvMDH9l2u9oxxe3WCqG4SSMmZTC9zpVVMVSNlxHEDBzfwCWXAQLKLTXuTuB5hrbROxoiBpdCf6GautEjsw4eEa6uMzK4xdbYLPQwx6x5dmxVmznSiI0lvVojXXBZHM+hhSHa1jAmsD2XQL10mpscRIqTilYjokSfzuwOcwCZpJHEDZ8sVKAzoiHRTcNbQVBUpJb3RUdZrWwa/gQxIigFK4TzxeASJR5d1noq/gu2X0DRBXOnBqNepFMaJfuU22uIaqYdrVGoTGAWPUNrEFmtUr3Sj1n10xwdFIFMmzM+S+DCPOxJHtQP83ijR2xvIvggeReq1TXwnhhV8J5mf/33kju0hmU7jff/3I4Lg2WSOomyVGh0TL7OGsTF6t7+/n2w2y5UrV5ptmw2PyuXl5QPbNtsR5nOyn6Dt5bq+FysrK9Trda5cuUJPzwH9vE84rKg1BLbhalSpVPbsEjqO3vN/8NUv8A/f+XdEVI1MKkVHNMZSeRMpJK90DDBT3BpdW/ddrvacYTK/RMIwCWVITAqq998n8v5tEvNLVCubWKpB3bNJ6XHWCmv0RLNs+sUnWXKHc+s2j/osLNtBBJKxuU0eXe7D9AMiFZfejTIzZ7sw3IBYySZVc1kbTKH+/9s77/C2qvOPf6729pS8Zxwnzl5ACDtltBBISBgFSksDndDSXWjLKm1/BQqUQidQoJRSIGFDoYyyCZCQ7cSJ95YlL+15z+8P56qOYyce8oD68zx+4sjS1ZF09b3nnPd9v6/RgpSaiTo3D49Oxqw1gwQq+rwqU/SpBGMBNJJEXMTJNDroDjn7ZpLIZJuK6Qj2BW5kESfXUk5HYD8Bv4+4iJJtLscTbSUU60WSZFJ0eUjqGN5IO8b6FjQuL7bGHnrLUzC6g8QtBix1Hvy0Isk6MBpRBWPEckwIAZaqLsKFNjQxgZyqxby1k3B5GrJFh8jQoavzYfAItCY3IppH4z4bpieeQNbp+koY1WpQq4muXw86HfHFixFpaYgDZZFCr0euqEAM4UswGqZC0rcyBq1WmyjbPProoykuLiYSiVBZWcnmzZupqakZtGxzOko+jgx39ifLMnv37qWtrQ2z2TyiD2Q0M8xgMMjmzZtJTU1l3rx5Q57EoxHM/jPMv378H16u3MK8tFzq/Z0YNRoyTVbC8SiReIxwNMw8eyGNng6sWgPdIR+51jR6wj5SdEZC7S2IaAitDKpYFE1TK8Gwj0y9jVaPE6vJDFoVM9MKqeqswShUiE4Xc/e2sXtBPsZIDHVMprTeTXV5FqZwFG04hqPTR3thGpZwDElSYUzLwDuvDFN6DkERIxIO0e3rwqK24o960KjUxOQYDnM2naE2NGoNMjJ5lhLaA3VoVX1mGvmWcpzB/SAJYnIYYyybsMaNSicDMqn6AmRCeMJOdCoDWsmMWTbQmxrB6BfIaoGtpove+eloPWEwatF5IsTogpx8zO1+InYTalkgm7XYPnYTmmFGSBLxXAvGXZ2ohUyoIg01IKVkY5JOIi/t/D77vQPu9HGtlrhej6zV0itE36zKaCTw2mvEVq0iPmcO0QsuIPDss6NOIRqMqSCYgxlvKGWbRUVFLF68mEWLFmGz2RJlmzt37qSlpQW32z0iwWxqauKUU06hoqKCuXPnJvr/dHV1kcSOkUnjEyGYkUiELVu2oNVqWbx48Yj3eEYqmLFYjF27djFz5kwKCwsPe9/RLMmV+/9h00v85v3nyExJQa3VkGWx0eHvRaNSkWNJIyBFiIRCtPe4cejMOH1dOMwptPo6MWi0iEiY1ECIXouRuFaF3RfFb9YQ9Xnp9nZTnlFEo78NjUpFVESZl1ZKZXcNel+AuEZNxT4n+yqyMYWixFUq8tt6aC5Kx+ILE9OosOWX0LliMbb5ywimWDBq9chqmbyUXGLqCGa9kVAkhCFmxulvQsRixGLRPpH01aJTaYiLGIW2WbQH9qMCYnKEXPMsukIN9PjcGAxaMvUlxIUPb6QDnUqHXp2CSWvGE2nBpE1BSDK2tjCeHAl9d5C4RYfe6SdYbEblj6DHgCyFUKtkYscsw9YoCM61I1LTCZ+0GJ22BJFtIZpjQEo1oukRmBskgkdnIKXkYFN/NnFOdX7zm0haLep4HLUQkJJC91ln/dcMw+ej/Xe/w/fee4R//3uw2Yb92Q+HqSqYA9FoNNjt9kTZZmlpKbIs861vfYsHH3yQDRs28Oqrrx5x+a7RaLj99tvZs2cPmzZt4ve//z2VlZX8uq8z5mtCiJnAa/R1jGRAx8jPAn+QJGnCMvMnPa1IcV0fCqUNbXl5+aiTw0ciai0tLXi9XubOnZtwYT8co609v2/Tv9mwexPzsgpwhfzkWG10+MNIkgAhiMlRHJZUZBGjyOCgqrOZPKONzq5O7Hozdd2tVKTmYPRHCJp1dFr06DxBSlt6qLSZKDSlIEsy8zJnUuncw4LdzcR0GubGY+yvyGZ2VTv+FCMlDZ00FaVT3NiJO8uGo8tPl8NKpidCmyZOht5KIB7EYXbQ6msi15JDJB4hz5pPi6+OAksxceKkYaM1UEtaNItQIECmPp9WfzXZ5pIDzdRm0e7fR5o+G0mW0UfTEXofEbyYNQ6MpCKpYvRG2kjX5xGK92DT2/FGm7AZcola2jC1evHNTsdS04MkBAG1RDw/HSm/CKvGQCDWgFlTQHR+KWaVjbCtCYkAWo0WUmegifoILNZgkGaASkaPjVT1eahU/w0Y9p59NvH0dLLeeQeRkkL0618nNz+fXPoupN3d3bS3t1NVVYXZbE5U2ySrSGKsKT3JGsNIRFuSJMxmM2azmUcffZQf/vCHFBYW8txzz3H33XfzzGFac+Tk5JCTkwOA1WqloqKClpYW5TH9O0a+AfyYfh0jgTpJkpSOkcPq+jhWJkQwR5tW1NLSQmNjI4sWLTpoE1mZpQ33Qx3ODFOWZaqqqgiHwzgcjmF/AUZ6ckuSxF/ee4nHaz9mhiOLhl43OZYUIvEoFp0OfyRIKB7GbrJR3d1KUYqdUDxKhb2A7a5qlmaXEQqHyJQtVPW0UJ6TRVa7k+ZcG91GNak2G7McM6jpqadMyiW27WPmezzUzHRQvt9J0GJgRp2b5uIMiho66cqykuPy4s62Ye/w0l6cgcPpwTurlGxLFq2+RnIteUTlCAXWApp8dRRZi4nLMQqtpTT59lNknYFMnOKUWTR795JjLiEej5EWzcMVqMMopWHRWbAbi/BEWgnE1GRacohLBmRC9IbaSTfmEoh2YdNl4Im0kKrPJSL3YtJk4ou2YLHZkYJBpDjEClLQ+MHaKeErN2JV64iLEBbtDMJyA1rJTBwPelUOQuolLJowa2aCyoJJSidCFWphx8oFyLIGiCdSxIQQBE88kfCFFx7y2SmzKrvdnujH3dnZya5du5BlmfT0dDIzM7FaraMWvbGYXiSLsXphhkIhTjnlFI499tgRPa6+vp6tW7dyzDHH4HQ6lU6RCCHaJEnq3zFyU7+HDadjZNKYsE9mqBNoMDFTnH9cLhdHHXXUIRG3ZKQJ9ScSifDxxx+j0+lYuHAhGo1mXPwH4/E4LzXs4u+1mynKdBCMRSmwpdPgcaNWSdh0BqJyjLgcJxSPMDszn92uOkxeHzG/l/mZxWx3VmM1msiwpuKwptLhSCE2u5x0jHRnp+HLy4Kqvczc1UBLaxXa3l7CBi0ldW5aCtKxeoN4UozktHtwZ9nI6PDiyrKR2h3En2oit7GL1tJMjDn5RGJhCqyFtPga0Ku0xOQoJbYZNPlq0KjUxEWMEtssmnzVSAjicoQC6yw6gvVIqjhms4Fscwmy2k8g1ovf64ewHp1WjTfmxqixIKHCqk+lN9KCRZtONB7EosvEG21Gp7ICUTQqPZE0UOmMmLtihNL1qONx4nlZpOjLCMVb+rpiil6M6gIgRjjuRKWS0UhWzOpyQvH9CKIghdEzk0ztlzDq7agPRO2VVLXhnlf99/SWLFnCwoULsVgsia6HlZWVOJ1OotHBK4WG4pOyJD8cown6+Hw+1q1bx29/+1tsh9/mGE3HyKQx6XuYA5fk4XCYzZs3YzQaE+I1kGT09VHwer1s3ryZwsJCZsyYMS7J6NB31b3n5Y283lXHrIxstnc0YNHqUKkkHCYLzb1uZCFTmppFq68T4fEQ2fQux1Q2sc3fjmX7ToTLycz0PKq7WjBotVi0RtRqCbdGRu+wk9/hIehqQuVsR9aqyG3rwZmbiikQxp9iJNvlpTPLht3lxZVtJbUngC/NSEFjJy0zMjCGY4RsBkrcMZq9DejVWmJyhBLbDBq8fSIZExFKbLNo9FYDfe1ui6zldPgbiMZDCGJkm0rwxdx9wSC1hhS9HbVaJqbxY0/JQqXSoo5rcfkakSI6glE/Fm0mnkhLn4WbCKFVmwnFnaglA3qNhShBRFkxIjeb1F4rvlmpqFLSickeLJoSZHqJyr0IwmikdMyaAoLxGiQkkGKY1LP6OkDKbaTqz8CgzUWtVqPVatHr9eh0OqLRKB0dHRgMBqLRaEJAh3MuKBHlOXPmHJTPuGPHDrZs2UJ9fT1er/eI2zdTQTAnumNkNBpl3bp1XHLJJaxduxaArKwspVNkMjpGJo1JF8z+YtbT08PmzZspLS2lpKRkRLPSwzGUKbDT6WTnzp0sWLAAh8ORuH2kxz8Svb29/OW1Z/lD/YeY9XrCsSgLHQVsbq3BoNKQpregUkFX0EdcxFmIkf2eNnQeHwGdisW17ezNMmOtbSAeiZBpsuIK9KBXaSASQ9vbhXrHdvQ+PymeIN2ZZgzBKFGjltTeAL2ZZjJdXjrtFqy+EN5UIwUNnbSUZmBQ6QiUFDCjupOGWXZ0ai3hOeXMSC2jwVuDSlIRk6PMSJ1Fo7fP9VwWEUps5TgDjUTjYSBOtqUYT9RNIOpFo1Jh02UipAi+SCciDCKuItWUijfmIt3oQKtXkWnJIabpRR0z4PV1IkfVeMItqNGjc3cT83QhmvZBNEaKrpAALlSZ2cTy00gxlBMWTmIi2FfWqM5Gr0ohGKtHrVL3zQA1FYRFLVG5G0mKoZUKyNBfjEFdeshnFAwG2b17NxUVFaSnp6PVahMXTmX2GYvFhiWeSj5jSUkJS5cuZf78+QdV0xyulnsqCOZEdowUQnD55ZdTUVHB9/r5g55zzjmQvI6RSWNKLMljsRhNTU3s2bOHxYsXk5mZedhjjWaG2f9EF0JQXV1NU1MTRx111CEfbjJnmO3t7fzz/dd4O9DG8rwZ7OpuwaTVAoIZ6Q5qutvQqVXkWzPoCfQQa20htn8fi2qd7C/MwBqM4DHpKW7voS3FQJpKQzAWRiXL9Ha5yN67H5XPT8iiRxeJoVKBLhrHl2Yko8uHL9WENhLDn9I3k2wvTEMTkwnYTBRaC2gst6OaUUbouGOYYSulblYGQqchKkeYkVpOk7cOWcSIiwglKTNxBZsJx4MIKU6OuRBv1EUg6kMjaUjRZRIXIXzRHswaC2p0yFGZIL3YrTnE5PCBPUonFl06kbgPsyYFofWQZnVgMhgQCGLNVair60nd24E/TaDbshU56idVW0Yw3owsYsRELyZ1PhqVikC8r3ZdpTJi1c4mKO9HFiEghEFVilolCMm1WLRLMWvmH/IZeTwedu7cybx580hNTUWlUqFWq9HpdBgMBnQ6HWp1nwjH43EikQiRSGTYs8+B1TS5ubn4fD62bdvGxx9/TENDQ8JJaKoI5lhnmMMVzHfffZeHH36Y119/nUWLFrFo0SJefPFFrrnmGkhex8ikMelRckmSEq7RRx999LCubKMRzFAoBPRFOnfu3InRaByyp1AyBFMIQU1NDW837OWO2vdYmlNMIBZmXlouVd2tzHMUEJWjGDQaesN+LLKgqMWN06JhRihMr81AWXsPbXYb+V0eGnLSyIrK+FWCtE4/Lr+brB4/2mgMSziCz6zHaNKS1h3EmZeCKhIjaDZQ0NRF7aws7E4PYbOOsr1O9h1dgt3kIByHTDmTJk892cZsJIOOMk059Z795Jpz0agkilNm0OarI9OYhUlrJNtcSHe4DUEcm86GTZ9JJO7DF4mTYkhDjkbRq9V4wm6kiA60EdJNdrzRDlJ0DoKxLkzaFLyRNlIqW4lpwqgsWsJqF/r82ej1OrypHsxtKoRGTeaH7fQudaBraSWeH8ekKSBKB6F4EKtWh1ZKQa9KwR+rxqIpRRDGpJ5JTDQSkmVs2gUY1AsxqeejUaUc8jl1dXWxb98+Fi5cOGSLZ6WBHfTNAJU9T+UcicViifscSWgkSSIlJSVRzx0Oh+ns7KSuro5gMIgkSaSlpSWlCdloGWt7ikgkMuyOkccff/yQ2xRCiKR0jEwmk3opC4VC7N69G7Vazfz588fkWHQ4FAFUzDMcDsdhLeBGsyTv/6HH43G2b9/O9o4mXuypY3F2Efu62rBo9fhjYbKNNjr8Hqw6PTqNlkA0hKqtjbgassMyHZlW7L0BWjOt2D1+es0GCrv9NBRkoK6tQ19TTXa3j45MC7JWTYonhEGW8diMxAxq8lp7CKQYCJi0hI1ayvY5ceWnEjRqiZq0zDQV0Blxo9GrsdrMFFmLcYed9Hi76PV0k6XLoTPU3mfLBmSZ8vFFu/BHfWjVGqy6dOIijC/qwaIxo5F0aDVqfNEeUvVphGJB5IiErAuRYc4mGPNg1qTgizoxadOIyUE0nb2EzDF0vVGMvRFCNhWqxmoA7B+345mbiToeJ5ppJG1zOyJDIiZ78Qe6iPj1aOJpfUbBqJEkgVU7m5DcQEzuQqe2kmlYQ4nlehyGS7Bpjx9ULJ1OJ9XV1SxevHhIsRzsXBo4+1T22ZWl+0j2PhUnofnz57Ns2TLMZjPBYJCPP/6Ybdu2JVzUJ5KxivVkp0WNJ5MmmEqPnxkzZqDT6Ub0Jo9mhunz+di6dSsVFRVHbOs7lvpwpdGbUxXltr1voVOp6A0HmJnmwOnrJstsw+33EAsH8QUC6CQVWrUan0omPRSj26QlXVbhsRmZ0d7NvmIHFoOJ0FHLKK5to8ECGiEwhSJkeoI056SARsLh8oJGhTvTgqxTUVTvxpdmwpNiJK5TU7bPSXdOCt6SXOJGLSUpJXSFXQRiAbRaNYUpRUQ1IdQ6UEsSZpFCT9BFl8+NGgmLNpWYHMQf8WLRmlGjQauS8EZ7STWkE46FMGlN9IbcqEIGJF2MFEMa3kgHNl0GEdmPRtIRiLkxqG3oPD5CaUbiFg2qsEzmbjceB2hUGmJZqWRuasVXnkbUoiGeacSkysGot4GhkxSrDbVKiyqUhz+2j0CwBzmqJsfweUpt15Bj/AIp2mNQS0PXM7e0tNDc3MzixYuHPRsa6lzpHzgabO9zuOKpUqkSAnrUUUclLurV1dV8+OGH7Nu3b9x6+PRnLNsCk90eY7yZsCW5IohCCBobG2lvb2fp0qVotVrq6upGdKyRCKYQApfLRU9PD8ceeywGg+GIjxlNuWM8Hsfr9bJr1y6krFR+t/klsiw2XEEPuZZU9nW2UJyaSVwIijMdtHg7sUgCdQx6In7UBj0+nURpd4CdWRbmOGMEKmZRYbezw9TIsvffJ6ZWMaMtxp6yLBbtb8fmCSB0Khry0ylr6iS3tQdnQSrtDisFTg9FDW5aizPoUgnsGCgwOGgzhFGFvaQabOSac+kMdaBGYDVYyDDa8UW6Uesk0o1p+KNqorEA3lAPWllLXC0jiOKPeEgzpNMVcpJiSMMX7SHTmE1XqBV1RI/GFCHVkI0/6karNhCIuTFrMojIHkLxEHHhRxtRkVHdRdd8O46dbmS9GvsePz1LmjGWlyJpVaTs6iI8IwVfUSo2owktYFCn4Ivtw6orxWBKx6Y5jXggh053D1VdXej1e8jMzCQzM3PIWWN9fT09PT0sWrQoqcteRWSUYyqiqTTJU85Z5e+DiVJ/sTIYDOTl5ZGXl4csy/T09NDZ2UlNTQ16vT6RND/c2fFwGesM89PaMRImeA8zHo+ze/duVCoVRx11VCJReLw6Ryr5nJFIhIyMjGGJJYxOMNvb22lqasJclMPP3n2aNIOJ/d1tlKbYD7SSyGJXRwMLU+xIRgOpBhO90RD5tjTK1TYqO+sx2h14O93Mc/n5uCidZc3tyDU1LJIEWyvyOaayiVBYoqS9h90zHCysbkfVE0BSSTTkpzGjuQtHu4fubBtOh4WcDh/Z7T465xXRpbeSYUzBHgvhjXTjDUOq0UaqPo1gzIs6KmHTm4kLEzE5QiDqx6az0SOiGDU6JCSsKjtd4XYMYQPuiBObLhVvuIt0o52eYAfaqBnJGMKgNeOLurFq0wnJPUTjUSIqLzqVGZ1KR2+kmcyZMxC7dpK9qYXOo3NJqXIT1UVI7bXgTwsSLc1APXsuWiT0KoEvWkOafjZ6VSrZpq9i1cxEpTpw+hogI70vyyEQCOB2u9mzZw/RaDSRTJ6SkoIkSezfv59oNMqCBQvGPbgycO9zoHAqwRUllU2531D76unp6Ynqs0AgkNh/jUQipKWlkZ6enghajYWxCOZk7r1OBBMmmIFAgK1bt5KXl0dBP3eX0XaOPFJCcDgcZtu2bWRlZZGZmUl1dfWIjj+SGWwwGKStrY30mUWsf+F+UvQGgtEwczJy+KC1mqMtduLbtjGbOJUOPwsjKuzlM2mMBekJ+dCZbMx3FLPVWc3cOXOItLVy9L5mtszK4thdPQQNWubXtrNtdi5L97YgNBIFbg/7i+3MbnAhe4NoVEaac1IpdPYgd/nx2624jinFbrNji/oJRn30hiXSDDbiwkxMDuOL+rHp+n6PiwiBKKTqU+gKuVFLgmDMT4YxA3ewnTRDOlE5SK61kM5gK6m6dAIxL/qYBbe3FS0GNIYIKXoHgVgnsogTlj19y2+VFk+0nUxDIZKkxmEqoztYTYbFQkSSyfyghd6l2aiDUTS1lZiXHIXQxvFG68g0zMWgSafQciYWTekRxcBkMlFYWEhhYSGxWIyuri7a2trYu3cv8Xgcs9nM3LlzJzwSPVjgaKB4jqSCzWQyYTKZyM/PJx6P093djcvlorq6GqPRmJh9jma7YSxL8k+zUxFMoGB6PB5mzZpFWlrake98BPpHvQdDqT+fPXs2GRkZhEKhMVuwDYZi/wZgycviF+8+x4xUOx+11bIgK59gLMIyQyofdDVxUq+HiE5Nfo+KGrORWa2tlBQVsr+7GbNWiyqmYQkWtnU1sKylg4hKsGxva59IVrXis+gpb3Kzd4aDOXUuenVqHJ4ATflpFLb1EDdo0Oo1uIqzySycSVQKI8tRPBEPqXorcRFFiBiBqI8UvZXuUAREjEA0QLoxFXfAhVGjIxQLYDfa6Qi0kmnMIBQLkGXKxR1sIdPgwB/tJcucR2eoBZs+Db/ci1XKIKbxEovH6fK2oVeZ0aji+IOtGOt7UUlqHA4HnRn1OIwzkL1dZG1upWtRBoYOLWqVIGW3i2ieBc98O/YuH8bCRcywnYdVVzTq5Z1Go8HhcJCRkcGOHTswGo3odDq2b98OkGheZzabJ3QJ2X/prtVqD9rv9Hq9QF8y98DZ51Co1erENoQQgkAgQGdnJ5WVlcRisUQLCpvNNiwhHMss8dPcMRImUDBzcnKS1nRpYF5lf1pbW2loaGDx4sWJD26oxPWhGI5ghkIhtm3bRn5+Ph1hH5e+eD8pBiN2s4Vjckt5r2kvxwsDkaYGloo4W0qzOKahA3whwgYtbRE/uRKUpeWw391IeXeAuNfLkmCI3aWZLNrfRsBkYG59B3tL7cytc9GVZqKgw0NDXirFbb10ZpqxBSO4Mi1kdfnoOGYROr0OjxQhzWClM9iJCgjEAqQZbLiDbiS0hGJBMozpdAScpBt0hGNhsswOnP4WHCYHwViAHEseHYFmHMZsgjEv2eYC3MEmUvWZ+KLdZBhycPma0Kl1qPUxLBoHoXgvwXAXBl8YXV0jNmTci7LI2dyKHAqQs0+m82gZSzdEUrSk7+okUGLBm20h68MW7C/UkPVSHfo/bUC2HTPsz+twRKNRduzYQVZWFvn5+QCUlpYSiURwu93U1tbi9/tJTU0lMzOT9PT0CV9SqlSqhENWaWkpVqv1oECRMvscbtqSYoShzLJHahgylj3I6RnmBDGSD0k5wQY+ft++fQQCAY466qiDSiqTWUoJ/53BVlRUENZK/OXNDym0pbO3q5V0g5FgNMIKT4St5hjLQ2F6DVpKu7zsz0qhrKOXDE+QDpsZ365tWOKCcq2ahhQds9qDRPRq5ta52F9kp6LBRVeamdK2Hurz0yhp7cbpsGH3BHHZLX2elTkppATC9KSasOjM9EQ9pBks+KMB7KYM2v1O0jU2wrEwDlMmTl8bdnMG4ViYHEs2bb4mcsw5hOMh8qwFtPkbyTHnEor5yLEU0BFoIkNvxx/rxWEqoCvUgkFtpMvrJFWbSczfQiDQhS6sxeTqxhwL4p5rJzcaRWjV5L3XhHN5Phl7XEQtKjI+duKZbydiMGOq6qXkn3vJebEaS6Onr3fO0qWEj0mOWEYiEbZt20ZRUdEhZtM6ne6gxmA9PT243e5EQEWZfQ5333ssKNtHM2bMSBRtDAwcKbmfyu9KIv2RBHS0hiGjFcxPc8dImIQo+WAoAjVY3fhgDDTHUGYRNpuNRYsWHfJcyXBFV2hvb6e2tpbFixfjEzHOe+IuVHGZTIuVeY489nW2skhvxUec+RE1+3LSmd3eiUtvwhKN02kzki7A3uWh22rA3BuEYJjSXkFTbiozWjrpTTVR0tZDU24axe3dtGelkNPpoyPTSo7bS1N+Go5uH70pRnI7PDQVpuOwZRCKh7FgxOlzYden4Rd+cswOWrwt5FodRGIR8my5tHgbybPmEYmHKbQV0eJrINecTzAeoMBaRJu/Absxm2DUS665kI5gE2a1lZDPSVrcRKfag0oDmv07MXZ5iafo6Z6ZQW6dB6FWkfdhM85j8sna1k7Epid7UzNdy3LQecKYGnzkbddR9psXMbf5+mZN0RjyihXEzziDWL/yuLEQDAbZvn075eXlR7TpGyyg4na7qaysTASO7HZ7InCUTJSVylDjTHbSvMViSZiGRKNRuru7aW5uxuv1YrVaycjIGFNq0Ke5PQVMkRnmSAWz/xLb5/OxY8cOSktLyc7OHvT+Iz3JBxNMpXKnt7eXo48+mp5IkB+//jgWrYGOcDeZsoVwLEpFZi51nW3MisRpNUIOOjrSrWT2+nCmWYhptUSicYyyjOQL4TapyHdF8dqM5HR6acuyUeT00JZtI7vLhyvDQm5HL/WFGeR39NKTb6ewx099TiqFbb34sjPJz5tBY7ybAlNfb+9STSENnkYcpNMV7iJTm0abr40iWwFROUKRrZgmbx0FtgJC8SBF1hKafXVkm3IJxvzkWUtw+uuxalMINlaR3emnO91FTJbRdvrJllWEih24Cy3keXyo/FFyt7XStiyPvM3NxE1a8t5romN5HuY2L+aeEAvv+ID81+rQmzIJv/xrKDuf+O9+R8Dvp+HUU+k+5pi+fbgDS7qxCJPP50usAAb2YBoOgwWOWltb2bNnDxaLJbFfeLjGe8NBEfXZs2eTmpp6xPsfLm1JmX0q9xvO7FMxDHE4HAghEu13g8EgW7ZsSSzdR/J5TAvmBDDaJbPL5WLfvn0sWLAgqV3qBgqmEtwxGAwsWbKE3nCQLz5zLxqVGr1GTabBTIunkwJrGq5IL/lpDto9XnK9QepsenI0WkJmI+mSGrdJTzAYJL3XT8SsxxKErlQz2V0+2rNtZHhCuNPN5Lf3UlecSUF7Dz0pJmY0dbJ/ZhalrT34j15Ksd5Mrb2R0pR8IiJKqaaA2t56SlMKiYkYZWnF1PXWUZJSRDgaIluVRaOnHrs6k5g2QpG1mBZfPbmWfIIxP4W2Elp9daRJVsLONvKCMh3GLqLBCPpQkPSaCIFcK10z0snZ68JQ04pZJdO2LI/8D5qQ9RoK322kfUU+qdVdmLuCHP2Lt8l/owG9NwKAyMsj8pe/IIqLobgY8cgjaIEy+pbPSomgsqdot9tJS0sb0Z5iT08Pe/fuZf78+Un54iqBo/6ionQQValUZGRkjCpw5Pf72blzJ3PmzDmSndmQDJW21H/vc7jiqRiG2Gw23G438+fPp6uri8bGRnw+HzabjYyMDNLT0w87sfk0d4yEKbIkP5Lr+kBUKhVer5f6+nqOOuqopLldK/QX8P7Bnfz8fDzhIFe+9DDuoA+bXkem0YIvEiA3NR1fNESGWs/+rjaKHdl4vL0UyYLadA1FrhhaSU1KXMZvNOCPRsnwBGjLSsEcitCTaiS/vZfa4kzyOnrpTTFS1uCmqjyLGY1uvFYjs2td7JmdTVlMJqSNMDOtiOruWsrSigjLEWamlVDTU0NZagkROcLMtBnU9FRTmlpCXESZaS2nrnc/Dhx0+7pIlTJp9zeRpsskpPKTJ9lx9dag84fR9gSx+yP4Cmy4StLIq3Zhdvkx+aO0Ls6h6KMWZK1E4TuNtB6bT9buDnTBKCf87D/kvd2ILhhDmM1IRhvxZfOJ3HMPFBcP+Z7rdLqE+7ayp6ikyRgMBux2O5mZmYdNk1H2IBctWjQue4/9RaV/4KimpoZAIDDswJHP50uYfSRLXAaKJzBk0vzhxFNxfFcMQ7KzsxFC4PF46OzspLGxEbVanZh9mkymg77bgUDgUz3DlI6wX5G0OichBJFIZNC/VVZWkpOTM6yUo3g8zo4dO+jp6eGkk04adr7Ye++9x4oVK4Y91vfff5+5c+cmlnbp6en4ImG+8eJDBGMROoNeZBHHFpfJiMSpJMhMex5REcOq07PNWU+5NZNINIo64KEz5KHUG8LU46Uj04KQIC0QJsUforYoE3u3v6+1rS/InvJsSpq7EFoVNl+Iyrl5zKpzEdeqsYSj7F5UzKyMEuIihkmrZ1/XfmamlSb+v797PzNSSpCJYdIYqe3dT6GtEIGMSWuk0VON3ehAK6lRCQ2ucDMaocHR4MTQ5aGnOJWwUUNutRtJCOIWHR2z7RR/1Ixs1KENR2k5Jo+87U5srb0Uv1FPwbuNqGMCkZFBdP16RHk5qmAQOT8f+bTT+trRjhK/34/b7cbtdhOPxxOzuv6BCqVwYOHChUm/gA6H/oGjrq6uIQNHHo+HysrKpM2Ahzu2/sEjhcFmn7FYjB07drBkyZIhj6cYhijL95SUFDIyMkhJSeG+++4jNTWVr371q0cc1/r163n++edxOBzs2rUL6CuZvvDCC6mvr6e6uvpV4AIhRDf0NT8DLgfiwLeFEC+P6g0ZA1NCMKuqqsjIyDiirZuy55OXl0dTU9OwBRBGJpgAb775ZsKB3WQyEYhGuOzZ+9jV0cysDAcmjZaq1jpynC6MQpASifFhUSZLC8qJyDG0aoldrkaWZJUQj0fw7a+kVyWY4epFH43RkJ+OKRQh3R/GEgpTWZ5DvrMHQ1zGGoywc24u5XUuUKuwhGPsmpvD7JoO4jNnYsorYE/nPsrTi/tEUGNgb1cVM1NLQBIYNXr2d++jKKUAlSRh0hio7d1PlikLvVqHQaOnxV+HWW0lxWBFo9LSE2on1u0ip64LkIjadHQWpVL6cQtxvRpNLE7z8gKKP2jG1hsj/6yryH/0P+gf34jU3Y1ITyd+6qlEb7gBMjKG/T6PlGg0SmdnJ263G6/Xm9ijDAaDQxpOTwZK4MjtdicCRwaDgebm5sQ5NRkMljQPJIQzGo2yd+9eFi5cOOzj9fb20tnZyU9+8pNEff71119PWVnZYR/71ltvYbFY+OIXv5gQzB/96Eekp6dzzTXXKAKZJoT48YHmZ4/S178nF3gVKJ9IazeYIoJZU1ODxWI5bJ/x7u5uKisrmTNnDmlpaSMWwPfff59jjjnmiDNSJbhTX1/PySefjEajIRyL8qPXHqfZ002br4u4EBRaUrB8+BEf5qWyoCeAGjCFI7xXnMFxBbOJyjFicpQadwOLGzuRAgE67FbCWjXFLg+6WJzqEjtpngDp/hCmSIydFbkUt3RhjMUxhaJsX1DATEcpmmgEUyjKLjqZmV6MWgKj1sCezr3MSC1CLUkYNXqquqsoshWgVanRa/TU9uwj25yNUatHr9LR5KvDqrWSarChljR0htqIy3FyrbkgIFq9nS67gZIdTuJaFWpZpmVZLmVv15HSESQvfQm5RcuQPnPaf7slCpHUNrMjIR6Ps3fvXnp6elCr1ROeDjRcYrEYjY2NNDY2otVqsdlsSQscjZX+M09ZlvH7/TQ2NjJ37txh7X0O5Mc//jGSJNHS0kIwGOTllw8/Cayvr2fVqlUJwZw1axZvvPEGOTk5SJKUC7whhJh1QDwRQvwfgCRJLwM3CiEmpPmZwpTYwzxS0KepqYmWlhaWLl066i+Ckux+uBOgf3DHaDSi0WiIxGNc9txf+bC5hqPyisi3pbO/qxVPyIdOK3Gsy887uVaOc3oJa9UcbbbzYetejtOlE63cRYlRx+5MC4saA2S7fbRmp9CSaaXI7aG8wc3+GXY0Emh8IeZXtbJ7Th5FzV2ohWCBNY/dniZKU/MJm4zM12RS2VnFjJRCIvEwczJnUdVVRaE1D7UsMTt9FjU9+8g2Z6FWScxInUmzr46YbEFjSKPAUoQ71IbL7yTHmkumMYtgzEOLt5bilJmoMvLIr6unflkus95rIh0ry0u+RWp5Du4DpXeNgQBpra3Yo1HS0tImzexWCMH+/fuRJIkVK1YgSdIh6UDK0t1ms02qGYSyH3vsscei0+mSFjhKBv33PkOhENXV1RQXF48qaV5h3bp1rFy5clSesk6nM9FFcio1P1OY0PXLUC1ph+ocKcsye/fuJRqNctRRR42pAkNJRRpqyTYwuPPee+8Rk+Pc+NYz+CJBcqw2qrs7mJluZ3ZGDjtcjdiMBlShMMc7vbyXY+Wklm4C0QhLatv5KD/KikgUJMj1BNibn8Hclk7yXL205qTSnmElv8tLeb2b6lI7KgkyfUHmV7WyZ3YO2X4Zg05DhbWU6t46CqzZqFUSczNmsr+7mnxrDmqVxOz0mdT21pBlsqNRSZSlltHkrScqW8g0plNgKcQVaqcj0E6uJZdMo4NgzEOzr5ZiWxlGjQWz1kSDp4qZmfMRXhPn7bOQX/455JUr4cD7lWs0JpK8lbrlffv2YTabEwGZiZotybLM7t27MRqNiT5McGg6UGdnJ83NzXg8nsSsLiMjY0KX7R0dHdTX17N48eLE3uqRAkejyQ4YK5FIhB07dlBWVkbGgS2VwZLm4fBpS/3TipJ8MZ3U5mcKU2LDR61WH9LwXanSsNvtVFRUjPnKe7hZbP/KHSV5OC5kvv6vh3m/YR/zbRkInQFnKILb7yXTZGGho5AdIsZSt4pwOMhxzV18mGvjuG3b8Zr0zGnrYntJFkvqnagCEmgkanNSmdneTW6Hh/acFJxpZnJ7fJQ1uqmfkYVGoyY9BrNSCqixdJEeDRKPRshRZdDmbcdhzCDNZGVm2gzqPfVk6tNINVmZkVJCi7+JqBzGbswg31pAZ8hJu6+NfFsudqODQKyXJl8tpbYyJI0Vk9ZIvWcf8zOXkmnM5tj0s2ivczP/+L5gxFBzA2VGpCQ4+3w+XC4X27ZtQ5Kkg+qzxwMl6Jeenk5RUdGQ99NoNGRlZZGVlZWI8rpcLurr69FqtYlxJtsarT9KIGrx4sVDXkwGqzhSsgP0en3iYjSeWwzKd620tDQhljC6pPmxVvpkZWXR1tamLMmnTPMzhSkhmBqN5iBXaaXHSnl5OXa7fcjHjbSccrAlQltbG3V1dQfVnstC5qHGHdTVVpLt6aFZ3UxhHKRZZTQHPVj1enRqFYszC9hJI0fV+/ERZUl9B1tLslna0E63xUhRl4e9+RlUtHYhByQkjURjVgrFrl5yXB46smx0SGay0VGYX05rSjsqg5U0o5VSYaLZ24remIpVZ0Yf1eEMthOK+MkwpJBvzMYdcRMPRMkyZ5JrzqMr5KLd105BSi6ZRjuBmIcGTy0zUsuQsGHWGqnz7GOR4ygcplzWlF2GTZ9GW1sbTQ1NIzbTlSQJq9WK1WpNtFtwu93s37+fUCh0UIVMMmYb0WiUbdu2kZeXR25u7ojGqbSFKCsrIxQK4XK52Lt3L+FwOLEkTmYlT2trK21tbSxevHhEBRmHqzhSAqPJHGd/sTxc0HW4SfNKxdBoOeecc3jooYeUnj4Dm5/9Q5KkO+gL+kxo8zOFCQv6QN8JP5hodXZ24nK5mD17dqL0cOHChYedpXzwwQcsXbp02Cfjrl27KCgoSERV+1fu9I+uCiH47tN/5f0P3qKkp5e2FDNCo8IaimAxGgnPm0urx82s3iDRLhfGcIT9eWksbHDRmWLCEo3RnGllTmsn7hQTarWEz6ilxNlLr8VA0KpHJcvkdfrwm3R05aZjysrDYU4lHA/jCnZi1Zmwm1KJyBE6/K4D/08jGo/gDrrQocWmMROKhoiogkhIFKTmEZUjhGJ+PJFeytJmEI6FEERxBtpYlnUM2ZY8ZqXPx6y1Jl5rQ0MDXV1dLFiwIKlL1Xg8TldXFy6Xi97eXqxWa2JJPJqleygUYvv27ZSWlh72IjqacSpR92SME/r23F0uFwsXLkzaslqpOHK5XHg8nqSMc7hieSSUtKWGhgZWrlzJ5s2bDzv7V7jooot44403cLvdZGVlcdNNN7FmzRouuOACGhsbqa6ufh04XwjRBSBJ0k+B9UAM+I4Q4l+jHvQomRKC2dPTQ3NzM3q9Ho/Hw4IFC454EmzevJn58+cPe0a0Z88esrKySE9PPyi4M2vWrP9erT0efvHz7/GULoo9EEKowBaN4bIaEVoV2f4I0VkzUVfvpz3VzOy2TrptJlJDYZrsNma1deFMt2ILR+iyGihxe+hIN6MBomoV+d1eOlNMRI1a1LYUskrK8Ub8+KN+jGo9meYUAtEAnogHk9qA3ZxKIB7EE+5Fr9KRbckgEA3ij3kQsky+LRdf2Ecw4sMf85GtcyDUMjqdCnfIxdHZy8mzFlCePg+j5uClpxCCqqoq4vE4FRUV4xq8USpkXC4XnZ2dqNXqhCHEcJbESn/vZNkDjmScSjR7uFsMDQ0NdHd3j6tB8cBxqlSqg8Y5nNlnNBpl69atYxZLhZaWFs4//3z+8Ic/jCh75QhMOdv2KSGY3d3dbN++ndzcXGbOnDmsD3zr1q3MmjVr2PlsSq6nxWI5KLiToKODn3/nS7zlSCE1HGG/PYWcQAhzJIqsVeHXa4npteT6Qnj1KizhKK5UM2Ud3bRm2nB4g3Skmih2e2h22MgIhPEZNOT2+GnNtGI88Loz1Xrcc2aAiKNRqbGbU+gNeYnIYXQqDXZzKt6wj3A8iFalxmHOwBvxEZGDyLJMvjUbX8SHTAR/xE9xSiH+qA9JEriDLuZa52IKm8kkm6zMLBwOxyG1wPF4nF27dmGxWCgtLZ3wyKyyJHa5XEc0t/B4POzevTupVTEjGaeSS6lsMWRmZg7pal5bW4vP52PevHkTmj2gJJK7XC4CgQBpaWlkZmYOGThSxLKkpCQps/X29nbOO+887rzzTk466aQxH68f/9uCGYvFDgm8+P1+tm3bhkql4thjjx32sXbs2EFJScmwv0TV1dWo1WpaW1sPCu4o3Pqzb/NHXYiFzk5klQpJBU1pVrKDQdICYXosBsjLRXZ3UNDZS4s9BbsvQLfFSGGXh/qcNHK7fXjMerJ7/TTkpOHwBoho1WT6grRmp2Eum4kkQZrRgivQjVaSUKs1ZBisdIV6UEkyaklNpimF3rAHIWIIIci2ZNIb9qCSZALRIEUpufSGvWhVEt2hLo7NW0FJajEz02ahOdC2IRqN4na7cblc+P1+0tLSEsGYXbt2kZOTc8RmcBPBwKWmzWbDbreTkZGBx+OhqqqKBQsWTLopbX9X856enkR2gLIkrqmpIRwOM2fOnElNYeofOOru7j4kcJRssezo6GDdunXccsstnHrqqUl4BQcxLZj9BdPtdlNVVcXs2bOpra3lqKOOGvaxBu5JHont27fT09PDUUcdddCXTwjBXR+8yssvbsDU2cnW3AwWtXeiETI+k54ek57MYJh0rYEWTZyUcIS4RkV2r5+a3HQKOz34LHqyev3sz8+k2N1LwKAl0x+kNi+dHG+IyMKFpBlNtHhdpOpNIEGawUy7vxOTWotKkkg32XAFOjFoNAghYzen0xXsRq9WE4qGyLVl0RvqQa/R0hvu4bi8Y5mRVsqM1DLUqsPvkympQG1tbTidTmw2G/n5+VMicbo/Qgh6e3txuVw4nU6i0SjFxcXk5ORMqUR0JTtAmX0Gg0EMBgMVFRVjdlpKNkrgSJnNRyIRCgsLKSoavZO9gtvtZt26ddx888189rOfTdKID2LqvJEHmBTBFEJQX1+f2BjXaDR89NFHLF++fNjH2rNnT6L9wOEQQlBdXY3T6aSgoOCgzWghBL/78DV+8e7znISeeG0NMa2K/ZmpzO/oQh+L05ppBZ2O9F4v6YEQ+/Izyev2EtOqcXj9VBY5mNnWTcCkJdMfYk+hnZnOboI6DakxmeqyHPKzComLODa9kaZeJ3azDYEgVW+izefCpjchC5lMk40OfycWvYFQNEyOJRN3sBOrzog34uX4/OWUp5dRnFKMShrZkk9Z2s6ZMweVSoXL5cLtdo94P3EiaG1tpbW1lfLy8sRsaaga8slECMGePXsASElJwe12J5bESi7lZCX2DyQajfLxxx+Tnp5OJBIZc+Cou7ubtWvX8rOf/Yyzzz57nEY9LZhEIhF2796NWq1OBBsUs4uRbBbv27cvcWIORf/gjtlsRpblhGAKIXhw+7s8UbkZnUbNppZqTmlyEQ+H6LUY6LCamOXuwRiLUp2TQUowhDUaIy0QZmeJgxnt3cS1GjL8QXbOyKKi2U3QoCMtEGJ3qYNylw9/jgN1eiZt0R7yzRlIahWpRhONvW1kW9KIyXHSDBZavE4yzTbC0Qh2UyrtARfpRivBWJDj84+hImMmhbaCIV/nkXC73VRXV7Nw4cJDRHHgfuJkV8f0j9r3338brIbcbrdPSksJ+G9HUoPBcFDyfP/E/u7ubkwmU2JJPBmmIPDfdKyioiIcjr7CmbEEjnp7e1m3bh0/+MEPWLt27XgO/X9bMH0+H1u2bCE3N5fCwsKD/jbS2vCamhrMZvOQpsEDK3daW1sJh8OUlJQghOCvW9/h+69t4LSScsKxGKK1mR0ixPF1rQgh05ppJaZSUdTjxRSJsavEQV6XF2M8TmowwsdlOcxpdiPr1KT6Q2ydlcO8+g4iRh3W7Fx2p6iZlZFHOBbFotFT3dNEltZGRI6SbrTgjHSRb7UTikfIMFpp8baTZU4nIkc5Pv8o5tlnkWsZ/LWNhJaWFlpbW4fl4qNUx7hcroQoORyOCak6UVYCyj7gkSzIlKV7V1fXsO3fkoUsy+zatQur1UpJScmQ91NaQihLdyFE4oI0UUv3wcRyMJQc2v6z5MECR16vl/POO4+rrrqKCy+8cLyH/78tmG1tbQCDWvGPVDCVio3BAheDVe44nU68Xi8lJSVs3LOFB3e+j16t5t3mfXymuIJwzX4CQR+NGljW6kIAtTlpGCNR8rwBjNEYW2fkMKO9G4OQsYUibJ6dy4KGDmIaNbZIlG1zCpibW0Y0HsWqM1DZWc/s9HwichSrzsi+rgZKU3Lwh/wYJC3tYTc5xnTUWhUnFh7Nouw5OExjT/GAvi9r/6jtSAVvYPDAaDSO20xJWdqqVKqD07yGid/vT2wxjLcoKZVGGRkZh1z0j8TAQNx4N14brlgORJklu91uuru7MRgMCVPmH/3oR6xfv55LL7006eMdhP9twYzH40N2jhypYDY1NSGEOOSkbWtro76+/hALLWXpsT3m4aqXH+WEwhkE/T70AT8fh3s5udFFMB6hx2qk26BjnqsbBFQVZJLuDeIIBDFFY2wuz6WixY0WsIbCfFSRz4KUHGJWMzadgR2uGuZmFhOJR7DpjVR21jIrvYBwPEqKzkh1dyMz0vJAghW5iyjR5RD1hOnp6cFqtSZEaSxfIFmW2bNnD2q1elQCNBBlpqSIklIC6XA4xhy9lmWZnTt3JmZrYx2r4tw+MDsgGfuJ8Xic7du343A4Dk5JGwUD/TMNBkNiSZyMANdoxXIw/H4/d999N48++ijxeJyLL76Ys88+m2OS1KzuMPxvC6Ysy0Sj0UH/9t5773HssccO+wvTf4kN/13SeTyeQ3wRlf2av/znRZ5x1WI1GNnhauKETi8+SUAwwP50C8c2OwloNTjTLcQliZmdvaiA3cUOcrs8pIUiGKMxNs/OY16DC2lmGZb8Qj527mO+owRZjmPRGdjRsZ+59mKiB2aWezvrmJVeiE6t4bj8RSzNnoNNf3C9bf96Z7fbnUgHsdvtI1pmxmIxdu7cSVpaWlIioYMRDocT+55jKS2MxWIJASooGP0e7VAM3E80m80JURrpLDkWi7Ft27ZE3XeyGY5J8kjGunXr1qSIJfRtb1188cWsWbOGiy++mFdffZXdu3dz3XXXjfnYR2BaMIcSzJGWOipL7LKysqErdyBhGPBy7W6++dI/WBiS8Xl7sQb8VGZYObbFRbdOTUynocNiYKGzi5BWQ4vdhj4So7DXhxrBjpIsily9pIYj6MpmslkfZl5mIWpJwqI38HF7FfMyi5GRseoM7HRVMzezGLPWwHF5C1mWOwezdvhRaGVG53K5ABLiebiKk3A4zPbt2ykoKEhYZI03SmnhYHmUh5slRyKRxFiH2odOJkPNku12+yFtFgaizNYKCwsP69maLAYLcCnR7COtPBSxTNZYI5EIX/jCFzj99NP51re+NdGBwGnBHEowR1rq6Ha76ezspKioaPDKHf4rlm/UV/GLd17A1NpKdTzEkqjAHfBiiUapS7eyuL2TbpOBkEmLX6thtquHkE5DY3YqKf4QOd4AaiHYUZZNsTEVa1YOBo2Wj537mJNRiEYlYdbq2XpgpplptLEibwFH5VagVx+YyQQCaH/4Q6SdOxEVFURvu+2/JrxHIBKJ4HK56OjoSMzoHA7HQZFspanWcNrKjhf98yg7OzuHDMYozvkzZ848YlrYeKG8py6Xi1AolFi6D6ziUeqtk5XoPVL6v6ddXV1otdrEezow4yHZYhmNRrnssss47rjj+P73vz8ZWRP/24J5ONf1kZY6dnd3U19fTyAQGLRyRwhBvKWF9+//A9+kmzKnC7dRT0Y4TF26jQVON20pFkzxOB0WI3PcPXSb9XjNBkCmtMtLWKuhLieNTI8fh96EtGgRu911FKc4sOiMGDVatnbsY25mEYU2B8flz2dJ1ky06gE5bbKMfsUKVHv39rmTC4EoKCC0dWvCb3K4KDO6jo6OxOzDZDLR2trKggULxmStlWwGBmOUlJXq6mrmzJkzrNayE8HAKh6LxZJYDu/atesgj8jJJhgMJt7T/g5GZrM5qbPgWCzG5ZdfzqJFi/jJT34yWXmv04I5lGDu3LmT4uLiYZc61tbWUldXx7HHHntI5Y4sy8ihEFtvuJarrTEsPT24DVrK3T00Z9jI8gdpSzExs7OXllQLRiHw69WUdnnpNhvwWA3oojEKe/14crNpsluxm2xkWVNQI7HbXceMtFzmO4pYkTePhY4ZqA8TUJC2bcNwyimg1fY1AxMCIhHCTzyBPIZyMlmWqauro7m5Ga1Wm/iiT7UKHuibqSltGvrvzybL+i1ZKPvdbW1tNDc3Yzabyc3NJTMzc9LLMweilJU6nU5cLhc2m42CgoIxmyTH43G+8Y1vMGPGDG688cbJLBKYcoI5JfwwYWjX9YEowZ3u7m7S0tIGFUveeINdD9/Pd+1aclwRGsxa8j1+GjNslHZ7qLGnkusP0Jhuo6jbS1uaGaMsaEq3UtjjQy0JujNstMyeTY7ZRlE4RJO/AxGNssxRykXHfpGjiw6fK9gfSTFHHnjiBYPDfn8Go7m5mZ6eHlasWIFGo0mY+W7dujVRweNwOKZEWaHSlkFp09DV1UVbWxt79+5NZAdMtBv6YEiShEajobu7m2XLlqHX6xMlvOPlnTlaNBoN6enpNDY2UlFRgclkSpgkazSaxMVzJEIfj8f59re/TX5+/mSL5ZRkQmeYwCHO6grD6RzZP7hTVFREZWUlS5cu7RuoIpa7drHn1l9y8Sw7qb1eZBEjz+OnKjud0h4PXWYD+R4f1fY0cgJB/HoNeZ4A7almJJ2GiMNOSV4RnkiQrqCHdIOF00sXcWzebMpScxJ5dF6vd/gpK7EYhrlzkZxOUKshHkekphLatQtGsYRW+tmEw2Hmzp076HMrSzelrFAJcExGrbPT6aShoYFFixYdEp3unx3Q2dmJTqebEJfxoThcz/DBAlyT0fZCQYnc5+fnHxI4Uyq43G53QugV8+GhzlVZlvne976HxWLhN7/5zVSY+U85tZ4ygnmkzpEDK3cU15Wjjz46EdwRQrD/jlv4jrMKqyyotBko6uolpNeQ6w2wKy+TcncvPUYduf4ANY407JEokVQbptQMPEYNGk1fAOecmUdxbN5sSlIHH8/AlBWr1ZqobR80ktnSgu7LX0ZVXY1cUEDkr3+FGTNG/P4pVSZGo5GysrJhex/2T5hW7NSGsilLJs3NzTidzmG3wO1vFjHRQu/1etm1axfz588/4l7wQKFXgjET1bHycGI5kIFmzsrWTf8aclmWFZdzfve7300FsYRpwezbyxrsOUdauSPLMh988AHLly9Hfv991P/6F/sDHs42BUgJhrHGomT6/HxckMWcji4CBh0Of5Ad+ZnM6vLg12ux6wzUFGRhVGtIsVg5v2I5x+bPJs86siiz8uXp6OhIRIcdDkfSq2Ki0Sg7duwYU96iLMt0dXXR0dGRcBg/rNCPEsVgxePxjKrSCAa3qHM4HOMi9L29vezZs4f58+ePqh/RYMGY8arJV8QyLy9vxOljA2vI9+zZQ01NDR6PB4A//elPU0UsYVowhxbMkVbuyLLM+++/z3JA94tfUJtq4TsOPapgkI/zMijt7EUjCTIDYT4qzmJBm5uAQUdmOMqOAjvlUYEoKeUoWz4XHLOSgvSxJ/gq+P1+Ojo6cLlcSXMDUlo0lJSUJCUZGQ4Ver1ej8PhwG63j0nohRDs27ePWCyWNDf3gTP6wWZJo6W7u5uqqqpBzUlGw2A1+ckyConH44kE+mTk2ra0tPCzn/2MzZs3Y7PZOOWUU7jyyiuZMYrVzzgwLZhDCeZIK3eUpanjzjvxdbtZtawYYyhMbq8HazjM+0XZzHe6EWoVGcEwH5Zks6S9C/3ceZxdtoii9AKkmGDevHnjuv+k7CV1dHQklpgOh2NEPaiVpWJFRcW4puIMliw/0vJHxcVHr9cPe8tgpIy15UV/Ojs7E05O47GUHmgUMtoKLki+WAohuPXWW6muruahhx4iFovxxhtvUF5eTmlp6ZiPnwSmBXOoNhXKEnHmzJlHrNxRmi5JkkTHDdfxnZATr07DbrOGgu5e0sIRbOEo75bmcHRLBxnBMOfsbeaES7+Kfv0VVFZWotPpKC8vn9AAiLLE7OjoIBgMDivi2tnZyf79+0e9VBwtA8sflb3Ewy0xlc8tNTWV4uLiCRtrMBg8yCRXGeuRygpdLhd1dXWDBqPGC6UE0uVyIcvysPdox0Msf/vb37Jt2zb+8Y9/TLk0tANMC+aROkcWFxcfsXJHaa/bEfDx2Qd/Q8ztpiwaRyvLfJhqYG5nLzNd3aza08Cp+5owSiqi119P4OtfZ/v27eTk5IzZPGGsDIy4KlZq6enpiSWskgs4HGu28WTgEjM1NTWxxFTGGo1GE+/tZLa+UMoKXS4XPp9v0LFCX+S+sbGRRYsWTZpYDLZHq7gX9R/reIjlH/7wB959910ef/zxcTm37rzzTu677z4kSWL+/Pk88MADo5nBTwvm4TpH1tbWEgwGh6zcUfI0VSoVnUEf33vlSToCXmpcLdgjMU7UGDntmJM5YeYCjLffTnzrVvxpaVSddx6UlODz+Zg1a1bS9gCTRX8rta6ursRyPRqNJrVVazIYbKxpaWm0trYmdX81GQw2VrvdTiwWw+l0smjRoknP+1QYOFbFeDgtLY3KykpycnKSYvohhOC+++7jlVdeYePGjePiH9rS0sLxxx9PZWUlRqORCy64gDPPPJPLLrtspIeacoI54WfLUMuO7u5uuru7D6ncARIN4yVJQpIkukMBzn78T3gjYS6YvYifHHcGK/JKD6q2if3qVwCYgIIDiccZGRnU1tbS1taW2EeaCksRlUpFeno66enpCbuzQCCAJEmJqPhYAzHjMVYhBG63m8rKSrRaLc3NzYTD4QlLrRnpWH0+HzU1NYk0sJaWloT5xmQzcKx+vx+n00lVVRU6nY5wOIzP5xvR3vdgPPTQQ7z44os888wz42q2HIvFCAaDaLVaAoHAuDg8TQYTPsMc2Aitf+WOWq1OJKIrf+u/X6mcKE9VbSPfmsaynMIjnjzNzc20tbUdtKz1+Xx0dHTgdrvRaDQJQZoIt+7DoewB2my2hDdkIBBIRNwlSUoEYqZC/x0lGDV37lxsNtugyfIjDXCNJ42NjXR2drJgwYKDlsORSGTSW3MMRPHezM7OJjMzMzHWYDA4pFHIkXjkkUf45z//yXPPPTfuF4m77rqLn/70pxiNRk4//XQeeeSR0Rxm8j+IAUyqYPYP7pSUlLBjx45E58ihxHK4KKktSjXMUMvaYDCYECQhBA6HY1IESbE7y8vLG/JqrARiOjo6EsGNwfqOTwQ9PT0JF+7BglH9A1yBQID09PREDuVkCFJdXR0ej4f58+cfIjJKTXZ/Q5PJ7BekiGVWVtYh+8GDGYUoHp+HWy09/vjjPPDAA7zwwgvjbtDS3d3NunXreOyxx0hNTeX888/nvPPO4wtf+MJIDzUtmIrr+sDKHVmW+fDDD1m+fPkhwZ3RGKgqPVdKS0uH/fj+ghSLxSZshhQIBNixY8eI7M5isVhCkJTqnYkSJJfLRW1t7bBTcQZWmgzXMzMZKK06AoHAkGWkA+/ffy9xPFtzDMbhxHKwsSr+AUoH0P4enwpPP/00f/zjH3n++eeH3ZZ6LDzxxBO89NJL3H///QD87W9/Y9OmTfzhD38Y6aGmnGBOyo63UrkzZ84c0tLSgL69TVmWDwnujJRQKMSOHTtGZaKr1+sPKr10u93U1NQkUoAGelAmg97eXiorKwetXT4cGo2G7OxssrOzE9U7ipmFzWZLRNyTLUhK5H7x4sXDFpD+eZL9/R1ra2sTnpnjsUer1NzHYjHmzZs3rM9NkiTS0tIS56WSm7p9+/aDTIfHI8VrJGKpjNVqtSYmBqFQKGEU0tnZyVNPPUVpaSkvvvgiL7744oSIJUBhYSGbNm0iEAhgNBp57bXXWLZs2YQ893gz4TPM9vZ29u7de0jlDsC7777L0UcfPapZJfy39/bs2bMTJ3wyGOhBmawSPUU0FixYkLQtAEWQlOodJTKcDMu3xsZG3G43CxYsSFp0WamKUlzQFfEc6x6bEIK9e/ciSVJS+hrBoabDyXQuGqlYHolAIMCdd97JY489hl6vZ9myZVx22WWccsopYz72cLjhhht47LHH0Gg0LF68mPvuu280MYIpN8OccMEMBoPIsjxo5c7u3bvxer2JwMZI9uY6OjoS4jOeG9pKiZ7T6UwsL5Va7JGIZ3NzM+3t7SxcuHDcIvXKkk0Rz9EGuJRlrd/vZ968eeNWazyaZPmhxqsUJ4xXtVEytxmS2VxN4T//+Q833ngjL7zwApmZmWzevJlAIMDJJ5+clONPENOCObBNhSKW8XgclUpFPB4/KFhwpKWwEIKGhoZE9HMi04SU2ZzT6Uzk+SmmG0PNwIQQ1NTUJPbUJjKoMDDANZw+QcpMDWD27NkTFrAZLFle6ZF+pJ7lu3fvxmQyjWj/eiwMbM0xkvJHpW2v3W5Pmli+/fbb/OQnP+GFF16YkH5J48i0YPYXzCMFdwYuhQcGNmRZPujLPJkuK8pszul0Jro+ZmVlHRQsUOqstVrthJdlDqR/nyAlrcbhcBxUTqjU65vN5gkTn8FQkro7OjoS3R8HuzApOawpKSkTWpo5kEAgkJgpK605lAtT//dQlmW2b9+eVLF8//33+cEPfsDzzz8/LhVXVVVVXHjhhYn/19bW8vOf/5zvfOc7SX8upgXzv4I50ki4EthwOp0J81afz4fD4aC4uHhK5M71Z6BjUUZGBi6XC4fDQVFR0WQP7yCU2VxHRwc+ny9RotfQ0IDdbj/EQWoy6W+84Xa7Ez6UGRkZVFVVkZmZOS4te0dLJBIZNIfSZrOxc+fOpI73o48+4uqrr+bZZ5+dkM8sHo+Tl5fHBx98MF7n9NT6UjMJgimESOxjjja44/f72bp1KyaTiXA4POp9xImit7eXHTt2oNFoEq0DRuoCNFHIsozL5UoETJRZ/USkAI2GYDBIe3v7QX6qg83mpgJKDmVHRwft7e2YzWaKi4uT4ti+detWvvnNb/L0008nHL/Gm3//+9/cdNNNvPvuu+P1FFPrA2QS0oqeeeYZPv74Y9asWcOsWbNG/Pienh727NnDggULsNlsB+0jVldXY7FYEsu1qfAF9/l87Nmzh3nz5pGWlpZYCldVVRGJRCY1+XwwIpEI9fX1zJkzh8zMzIRfZm1tbSIncaqUlEJfepXb7Wb27NlkZmbicrkSqWD9neWnwnurVqtJT0+nqamJsrIyUlNT6ejoSIj9aB3bd+7cyTe+8Q02bNgwYWIJ8M9//pOLLrpowp5vKjDhM8yuri6eeuopnnzySdrb2znjjDM499xzh2U029bWRlNTEwsWLBj0pBpoiGs0GhNR4ckwWVCMaefNmzdodcXA5HNlH3GyGmwpvc1nz549qO+mkiTd3xh5MpusKT3Di4uLDzH9GCyKPV65qcNFlmV27NhBRkbGIcvwgWWlyrlwpAtpZWUl69ev55///Cdz5swZ75eQIBKJkJuby+7du5PS1ncIJv8qN4AJF8z+9PT08Nxzz7Fx40bq6+s57bTTWLNmDQsXLjxIPJW0Fq/XO2zD3/4pNW63G51OR1ZW1oTNjpTGX0OJ+0CUL3hHRwcej2fYUeFkoeSwDjeBfqAxsjI7mqi+6OFwmG3btjFjxozDNs6Dg3NTu7q6xq2FyOE4nFgOZDDbt8Ga7e3bt48vfvGLPPLII8yfP3+8X8JBPPPMM/z+97/n3//+93g+zbRgDoXX6+WFF15g48aNVFVVsXLlStasWUNFRQW33norl1xyyZgSkPsHYcbbcKN/mtNoZrYDo8Lj1XdHoauri3379o06hzUajSZmR+NZFaWglNWWl5cfYgN4JBQnICVolMxk+aFQxDI9PX3EwZiBrTn0ej1btmxhyZIlXHnllTz00EMsXrx4XMZ9OD7/+c9zxhln8OUvf3k8n2ZaMIdDIBDgpZde4pFHHuHtt99mxYoVXHnllSxfvjwpgqHkI3Z0dCBJUsJwY6xLS8XwIxqNMmfO8PuWH+mY/XP8kr3NoOyhLVy4MCkXj4GpYMmeKQeDQbZv3z7ktsFIUcoJFUOTwdKrxsJYxHIgQgicTie/+tWveP755ykqKuKSSy5h9erVE5p5EQgEKCgooLa2drzLLacFc7js2bOHSy65hJtvvhlZltmwYQNbtmxhxYoVnHvuuRx33HFJEYxwOJwQT1mWRx3BjsfjiYTpGTNmjFsvm4HbDMp4R7O0bGlpSVjfjcc2xcCZshKQG21U2O/3s2PHjoSdXLIZLL1qWH3nh0DJC01LS0tamk9LSwvnn38+f/zjHykoKOD5558nFAqNVx7kZDMtmMOlqqqKWCzG3LlzE7dFIhH+85//sGHDBt577z2OOeYY1qxZw4knnpiUvSglgu10OolGoweVaB4OpT1Ddnb2hLa+GOiVqcw8h1OXXl9fT3d3NwsWLJiQIIiSP6kE5HQ63YiMkX0+Hzt37hyxScloGapL5eGquAY+XulvlKzZX1tbG+eddx533XUXJ554YlKOOcWZFsxkEYvFeOutt3jiiSd46623WLJkCWvWrOGUU05JStRW2Xh3Op2EQiEyMzPJyso6JGoZDAbZsWMHpaWl2O32MT/vaBksCKNY0/VHMWwOh8NJ2zYYDf07VB7JGFkJSC1YsGBCG8EpDBR7rVZ72D3w8RBLp9PJunXruO222/jMZz6TlGMOpKenhyuuuIJdu3YhSRJ//etfOfbYY8fluYbJtGCOB/F4nHfffZcNGzbwn//8h7lz57J69WpOO+20pGzkK0s1p9OZMMNVUikqKyuZM2fOhFlnDQclCNPR0ZEQe0U89+7di0ajmfTSzP4M9CHtn1LT29vL3r17x91UZSQcrvRRCJF0sXS73axdu5Zf/OIXfPazn03KMQfjS1/6EieccAJXXHEFkUiEQCAwrm2dh8HUOEH78akQzP4oRsRPPPEEr7zyCjNnzmTNmjWcccYZSUl5UYIaTU1N9PT0kJWVRW5uLmlpaVNGgPrTX+wVu7eysrIpO97+KTUej4dYLEZFRQUOh2NKjrd/6WMgEECWZdLT05NmVNLd3c3atWu57rrrWLVqVRJGPDgej4eFCxdSW1s7ld7nKTMQhU+dYPZHlmW2bt3Khg0beOmllygsLOScc87hzDPPHNOMsLW1lZaWFubPn58IwvT29pKSkkJWVtaE5U4Ol1gsljB5MJlMB413YGvfqYLb7aa6uprCwkK6u7sTrYiVuvGpNl5lGa5Wq5Ek6aDxjjZZvre3l3Xr1vHDH/6Qc889dxxG/V+2bdvGV7/6VebMmcP27dtZunQpd91116RsgfRjWjAnCyEEu3bt4oknnuDFF1/EbrezevVqVq1aNexcPiHEQb1h+n8JhBCJOmEldzIrK2tSK0vgv9UwRUVFB1VkKONVWjFMpZJSJdVp0aJFiYCQ0jpCST4fjpXeRKG4OtlstoRL0lhbXXi9Xs477zyuuuqqg9yBxovNmzezfPly3n33XY455hiuvvpqbDYbN99887g/92GYFsypgOLxuGHDhkSfk3POOYdVq1Zht9sHXZIoVnKSJB1xuTWY67li9TbR/pfbt28/Yq+gwUpKJ6tmvL29naamJhYtWjTkcw9MrzpSEGY8UcTSarUOWcfdP1ne5XKhUqkOm9Hg9/s5//zzufzyy7n00kvH+yUAfe/78uXLqa+vB/o8NX/961/zwgsvTMjzD8G0YE41FEPfDRs28Oyzz6LX6zn77LNZvXo12dnZSJJEKBRiz549pKamjthKrn+E1e12JxLPk9Ey4nAoaTijCUhNVhvi1tbWRF7oSGaNA4MwE+UGNRyxHAwlo8HlciW6f2ZkZGCz2QiHw1xwwQVccsklrF+/fhxHfygnnHAC9913H7NmzeLGG2/E7/dz2223TegYBjAtmFMZxb39ySef5KmnngJg5cqVbNy4kbvuuispKRaKGLlcrhHnIg4XpbHa/Pnzxxzomqg2xE1NTbhcLhYuXDimWfhwjJGTgeLsbrFYxuQQFI1G6ezs5L333uOGG27AbDazcuVKbr311gmrc1fYtm1bIkJeWlrKAw88MOLeWIq/bSwWS8ZWybRgflIQQvDOO+9w8cUXU1paSiQSYdWqVaxevZqSkpKkfPmUxPOOjg7UanVCjMYyk+vs7GT//v0sXLgw6aI2Xm2IGxoaEkn0yQzmDKzc6W/3NpbnSZZY9iccDnPppZdSVFSUOPe+9a1v8ZWvfCUpx58IFLH897//zRtvvIHNZuOCCy6guLh4tO/3tGB+UggEApxyyince++9zJ8/n46OjoQtXU9PD2eeeSarV69OWj5jKBRKiCdw2ETuoVAckvoHS8YLJf2no6NjTIYbtbW1+Hy+cW2uBv917FcyBEbbtEwJHiptO5JBNBrlS1/6Escffzzf//73kSQpsU87EVVNyeSdd97hq1/9Kg8//DBr167l/PPP59e//vVoZ5vTgvlJIhKJDCo8nZ2dPP3002zcuJGOjo6DPD2TIZ4DZ3JDVe30p6mpiY6OjhHv/yWD0bQhVvaOQ6EQc+fOndDcv6EMTY60rzweYhmLxVi/fj1Llizh2muvnUo5kKPihhtuYPny5WRmZnLllVfy1FNPkZeXRzgcnm6zO01fOdmzzz7Lk08+SUNDQ8LTM1nLS6Vqx+l0Jhzas7KyEstgJdVJ8Qqd7JQgpQa7o6ODnp6eQduHKK5OsixPaCfKwVAi2EqQS9kaGeh8LoRg9+7dGI1GZsyYkZTnjsfjfO1rX6O8vJwbbrhhXN+H4uJirFYrarUajUbD5s2bk3JcWZZRqVQ0NjZitVp55ZVXeOyxx2hoaODxxx+ntLSUv/3tb7S3t/OjH/1opIefFsxPMx6PhxdeeIEnn3ySffv28ZnPfIbVq1ezdOnSpIhnLBZLzDyVZXAoFEKlUjFnzpwpNzsZqg2xkgo0lcozFQY6nyvpVfX19UkXy29961vk5OTwq1/9atzfh+LiYjZv3nxEs+WRoIjlli1bWLduHXfccQelpaVcddVVXH755Vx00UXs37+fSy65hFtvvXU0ZZ1T6+RgWjDHjUAgwL/+9S82btzIzp07Ofnkk1m9ejXHHHNMUmaB0WiUbdu2EY1GE83KsrKyJq29xZFQcj0rKyuJRCLYbLZD2hBPNZSIe01NDUIIcnNzk2KMLMsy3/3ud7HZbNx2220TUrU0HoIJsGPHDr7+9a+TlZXF7Nmz+b//+z/++te/8u6779LS0kIgEOA73/kOa9euTQSFRsCUO5EnXTDHa6kwlQiFQrzyyis88cQTfPzxxxx33HGce+65rFixYlT7jfF4nB07dpCWlkZxcTGyLCf2ED0ez7D2ECcapXTQZrNRUlJySBviwZbBk40QgsrKSgwGA8XFxYfs047GK1OWZX784x8jSRK/+93vJuzzKSkpSfgHfO1rX+OrX/3qqI4Ti8W48847ufrqq/F6vZx22mn86Ec/Yt68eVx33XWJdLzm5mZMJhM+n28sXqDTgjmQ8bryTVUikQivv/46GzZsYNOmTQlPzxNOOGFYMy3FezM3N5fc3NxD/j5wD3Eq1IsrAp+enj6og4+SIeByucZk4pxMFLHU6/WHGEIP9Mq0Wq2JssfDrR5kWeb666/H5/Pxpz/9aUI/j9bWVnJzc+no6OC0007j7rvvHpWnZktLC/X19YltJrfbnTjut7/9bf75z3+yd+9e/v3vf/ONb3xjrMUZ04I5kP81wexPLBbjzTffZMOGDbz99tssWbKE1atXs3LlykEjiuFwmO3btw/aJXEwBtZfj3dvoMGIx+Ns374dh8MxLHPlgYnnk9GG+HBiOdh9PR5PokfQUA3WhBDcfPPNtLe3c//9909qcO7GG2/EYrHwgx/8YNTHuP7669m+fTt/+ctfyMrKoqGhge9973tcddVVfPe73+X73/9+Mso6pwVzIMlaKnzSicfjvPPOO2zcuJH//Oc/zJs3jzVr1nDqqadiNBqprq6mvb2dOXPmjLjxFxxaL24ymcbdvCIWi7Ft27YhZ8PDefxEtyEeiVgORv+Iu0qlwul0MnPmTDZu3EhNTQ1/+9vfJlws/X4/sixjtVrx+/2cdtppXH/99SMKwsTjcdRqNT09PaSmplJfX899991HbW0tt956K/n5+Zx88sk0Njby85//nC984QvJGPq0YA4kWUuFTxOyLLNp0yY2btzIK6+8Ql5eHnv37uWBBx7g6KOPHvPxB5pX6PX6xB5isurblaBUYWFhUvpWT0QbYiEEe/bsQavVUlZWNmZRDoVC/OMf/+Avf/kLbW1tfOtb32LdunUTntFQW1ubsIeLxWJcfPHF/PSnPx3245VoeHt7O2eeeSY33XQTZ599NvX19fz5z3+msbGR3//+9/zpT38C4JprrgEYTZBnINOCeTiSsVT4tPHWW2/xla98hZUrV/L+++9TXFzMOeecw+c+97mkubwP1oJ4tI3V4L+WciUlJePStmM82hAnWyyVY/7+97/n/fff589//jOvvPIKTz/9NL/61a+YOXPmmI8/kfh8Pk444QS++c1vJso1w+Ew3d3d/O53v2P37t08+eSTifc/CWIJ04J5MMlYKnyaicVinH/++dxzzz3k5eUl3HGeeOIJ/vWvf+FwOFi9ejVnnXXWqJbpgxEMBnE6nQkbMiUAM9zodTgcZtu2bZSVlR3WUi5ZDGZNN9I2xOMllvfeey+vvvoqGzdunHDbuWSzb98+fvOb33DLLbfw2GOP8eKLL9LS0sKDDz6I3W5n//79nHDCCcl+2mnB7M9Ylwr/yyhf8g0bNvDCCy+QkpKSMETOzMxMan17/+h1VlbWkPXtiv/mrFmzRuxykwyUqh2n03mQT+bhZsvjJZYPPvggzz33HE8//fS4pkrF43GWLVtGXl4ezz///Lg9TyAQ4KyzzkKWZU4++WTWrVvH3/72NzIyMrj22msT90vSzFJhWjCnST5KJ8iNGzfy7LPPYjAYEp6eWVlZSTmBI5FIwhxksPr2QCDAjh07qKiomDIN4Y7Uhlgxklar1cycOTNpX/S///3vPP744zz77LPjnhp1xx13sHnzZjwez7gJphLwUc4BJdvhs5/9LOvWrRtPR6VpwZxmfFE8PTdu3MjTTz+NJEmsWrWKNWvWkJeXlxRR6N+VMhwOY7PZ6OzsZMGCBdhstiS8iuQzsA1xZmYmPp8Pg8GQVLF8/PHHefDBB3nhhRfGvR9Oc3MzX/rSl/jpT3/KHXfckRTBVMRxINFoNBEQrKmp4YorrmDFihX88pe/HPNzHoZpwZxs1q9fz/PPP4/D4WDXrl0AdHV1ceGFF1JfX09xcTGPP/74pCwpk40QgtbWVjZu3MhTTz1FOBxOeHqO1Dl+KHp6etixYwcWi+Ugw96xlg+OJ5FIhB07dhAKhdBoNIlcz7GaDD/11FP8+c9/5rnnnpuQWfZ5553Htddei9fr5Te/+c2YBVMRSyEEP/vZz5g9ezZGo5HzzjvvoPvJssxzzz3H6tWrE/8fpyT8KXcCTY26uQnksssu46WXXjrotl//+td85jOfYf/+/XzmM5/h17/+9SSNLrlIkkReXh7f/va3ef3113nqqadIS0vjO9/5DitXruS2225j3759HOGiOSS9vb3s2bOHpUuXsmTJEo466ihSUlJoampi06ZNVFVV0d3dPerjjwdCCGpra7FarRx33HEsW7YMq9VKQ0PDmMb8/PPP8/vf/55nnnlmQsRSuegvXbo0acdUZparVq1CCIHL5eK6666jsbExcZ9YLIZKpZoIsZyS/M/NMAHq6+tZtWpVYoY5a9Ys3njjDXJycmhra+Pkk0+mqqpqkkc5vrjdbp5++mmefPJJOjo6+NznPsfq1auH7enZ3d1NVVXVkM7uAw17xyNvcqQIIaiqqkKSpEGdkgaOebhlpS+//DK33HILL7zwwoRkBgBce+21PPzww2g0GkKhEB6Ph7Vr1/L3v/99TMd98803efvtt/nZz37GSSedxEUXXcTXv/51nE5nUvJpR8iUm2FOCyaQmppKT09P4u9paWl0d3dP0ugmnu7ubp577jk2btxIY2Mjp59+OmvWrGH+/PmDCoXSBmPRokXDigAPzJsczCNzvDmSWA52//5lpUO1IX799de56aabEq2bJ4M33nhj1EvygTPEN954g1//+tdEIhHWrl3LVVddRTwe55ZbbmH9+vVkZ2cnc+hHYsoJ5uQ2dJ5mSpCWlsYXv/hFvvjFLyY8PW+//Xb279/PqaeeyurVq1myZAkqlYqtW7cSiURYsmTJsBPbVSoV6enppKenH+SRWV1dPSH90EcqltC3nZGWlkZaWtpBnT8Vs+b9+/dTWFiYmFlOlliOhf5iuWvXLubNm8fJJ5/M/fffT2VlJVdddRUAF1xwAQ6HY6LFckoyaTPMmpoaTCYTOTk54/UUQzK9JB8egUCAF198kQ0bNlBZWUl5eTmVlZW8/vrrSYmGK0LkdDpHnXQ+nOdQ9mlnzZqVlEBUXV0dt956Ky+++CJz587loosuSrRl/qTQXyy/8IUvJATziiuuICsri7vuuosPPviAoqIi0tPT+etf/wokPc/ySEy5GeakCWZ+fj56vZ45c+awYsUKrr766gmz8xoomD/84Q/JyMjgmmuu4de//jVdXV3ceuutEzKWTwoPPPAAt99+O4sWLWL79u0cd9xxrFmzZtSengMZmHSu0+nIysoaU337eIglwEcffcTVV1/Ns88+ixCCp556CqPRyNe+9rWkHH8i+dWvfkVvby+/+tWvEr3ITz31VM4880x27NiBVquloqICGDrlaByZFkzoa+Vw3HHHsXPnTl5++WVeeOEFfvCDH1BZWYkkSZx++umJfjXJvppddNFFvPHGG7jdbrKysrjppptYs2YNF1xwAY2NjRQWFvLEE08krdTw00BzczNf+9rXePzxxzGbzUQiEV577TU2bNjABx98wPLlyxOensky7xisvt1utw+7xHC8xHLr1q1885vf5Omnn05ai92J5I9//CPnnnsu2dnZvP3221xyySV897vf5bvf/S6hUIjf/e531NfXs3LlSs4+++zE+z1J0fBpwQR48sknuf/++3nhhRcSt3V2dnLXXXcRCoUSs7t4PI7T6RyVNdg0yWWoi1c0GuWtt97iiSee4J133mHp0qWsXr2aU045JWn108FgMCGeQKLccaiA03g1Wdu5cydf+cpX2Lhx47iZZ4RCIU488UTC4TCxWIzzzjuPm266KWnHf/jhhzn//PMJBoOkpaVx22238cQTT3DzzTdzxhlnIITgpptuwm63c+WVVybteUfJtGACHH300Qgh0Gg0zJ8/n7vuuovKykoeeughzjrrLM444wwANm7cyB//+EdeeOEF/H4/LpeLWbNmjceQpkkCiqfnhg0beOONN5g/fz5r1qzhM5/5zIj6qx+OcDicKNEczJ1dCMH+/fuJx+NJFcvKykrWr1/PY489lliijgfK1oTFYiEajXL88cdz1113sXz58jEdt/9y+p133uHEE09k165dzJkzh3vvvZenn36ab3zjG6xatSoZLyNZTDnBnPAouc/nw+VyUVdXR1tbG2+//TZGo5G6ujpCodBBibhvvfUWJ598Mnq9nuuuu467776b5cuXs2LFCj7/+c8zf/78iR7+NIdBrVZz0kkncdJJJyU8PTds2MAvf/lLysvLWbNmDaeffvqYSgb1ej0FBQUUFBQk3NmrqqqIRqMHddFMplhWVVWxfv16HnnkkXEVS+iLzlssFqBv9q40uRsLQoiEWAaDQY4//nhuueUWTjnlFF599VW+8pWvoNVqufnmm0lJSUm4Dk1wgOcTwYQL5iuvvMKZZ54JQE5ODhdccEEiry8/Pz/RqiIWi7Fz505uvPHGxOPefvttrFYrDz74INdffz133nknfr8fm81GQUHBRL+UaQ6DSqVixYoVrFixAlmW+fjjj3niiSf4zW9+c5Cn51ii7Tqdjry8PPLy8ohGo+zatQufz4dWq6WmpiYp5Y41NTV86Utf4m9/+9uEXaDj8ThLly6l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GeXAn0+FYPZHlmURi8UG/SI89dRT4oQTThAzZswQq1atEj/72c+E3+8Xe/fuFVdddZV47bXXRHV1tTjrrLPErl27REZGhhCi74s2Z84c8bWvfU3s27cvcZsQQpxzzjnijjvuSDyH1+sVb7zxxpi/DBPBUPtqnZ2d4tRTTxVlZWXi1FNPFV1dXZM80uTT29s7KWLp9XrFkiVLxMaNG5NyvMcee0yoVCpx9tlnH3T7Sy+9JP72t78l/j+Fyh1HwqQL5MCfT51gDofW1tbEbFEIIe655x5x5ZVXin379glZlsX1118vFi1aJK644orEfbZu3SouueQS8dWvfjUxaw0Gg6KkpEQ0NTUl7rd7925xwgkniC1btoj29nZx5513CqfTOXEvbgQMta/2wx/+UPzf//2fEEKI//u//xM/+tGPJnOYnxoikYg4/fTTxe23357U47744ovCarUmgp0vvfSSmDdv3qTVwCeRSRfIgT//U4I51Mzzo48+Ev/85z8TgaAzzjhDSJIktm3bJoT4b0R9//794qyzzhLnnHOOEEKIf/zjH+KUU05JHCcej4unn35anH/++UIIIR5++GEhSVIixUO5z1TlnHPOEf/+979FeXl5Ikrf2toqysvLJ3lkn3xkWRaXXnqpuPrqq8fl+M8//7zIyMgQ3//+98Xxxx8v3nzzzcTzfoKZdIEc+DNlEtcnArVaPWhVyLJly7jwwgtRq9XEYjFOPvlkUlJSWLhwIVu2bGHPnj0AlJWVcfPNNxOPxwmHwzz77LMHla35fD4++OADlixZQjwep62tjRNOOIGmpiagr+LogQceoKSkhM2bN0/Mix4m9fX1bN26lWOOOQan05koN83JyaGjo2OSR/fJ59133+Xhhx/m9ddfZ9GiRSxatIgXX3wxacc/66yz+Mc//sHdd9/NT3/6U0488USEmPazTDbTxaMcXH+r0Wi45ppr+O53vwv0udZce+21iRaku3btIisrC71eT1NTEzfccEPiOE6nkz179nDDDTewf/9+fD5fol0rwL///W/uvvtu0tLSMBqNtLW1cdlll7F48WLOP//8g8yTJxKfz8e6dev47W9/m5RukNMcyvHHH9+3pBtHTj/9dFwuFzabbVosx4n/qRnmUPQ/sYQQxOPxRD+a1atX8/HHH7Nu3Tq2bNnCwoULuf322/H7/cyZM4e6urrE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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "#Regresion multiple con coeficinetes invertidos\n", + "\n", + "fig3=plt.figure() #se añade una figura para graficar\n", + "\n", + "ax3 = fig3.add_axes([0,0,1,1],projection='3d') #se añade un eje 3-D\n", + "\n", + "ax3.scatter(train.FUELCONSUMPTION_COMB,train.ENGINESIZE ,train.CO2EMISSIONS, color='red',marker='o')#se grafica la dispersion 3-D\n", + "ax3.set_xlabel('FUELCONSUMPTION_COMB')\n", + "ax3.set_ylabel('Engine size')\n", + "ax3.set_zlabel('Emision')\n", + "\n", + "num_puntos=train_x1.shape[0]\n", + "x_muestra=np.linspace(train_x1.min(),train_x1.max(),num_puntos)\n", + "y_muestra=np.linspace(train_x2.min(),train_x2.max(),num_puntos)\n", + "\n", + "XX,YY=np.meshgrid(x_muestra,y_muestra)\n", + "ZZ=regr.coef_[0][0]*YY + regr.coef_[0][1]*XX+regr.coef_[0][0] #se invirtio los coeficientes\n", + "\n", + "ax3.plot_surface(XX, YY, ZZ,cmap='summer') #grafico del plano de regresion\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Bozmpq39fkVW" + }, + "source": [ + "# GRACIAS " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "colab": { + "include_colab_link": true, + "name": "LAB_05_MOD_V_Regresión_Lineal_Múltiple.ipynb", + "provenance": [] + }, + "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.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} From 1ebfad31be1744979f04b54b282d91bb816db541 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20Quispe?= <47084770+RubenMcCarty@users.noreply.github.com> Date: Sat, 28 Nov 2020 11:52:57 -0500 Subject: [PATCH 06/51] =?UTF-8?q?Regresi=C3=B3n=20Polinomial=20Emisi=C3=B3?= =?UTF-8?q?n=20de=20CO2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...3\263mica_Predic_Emisi\303\263n_CO2.ipynb" | 781 ++++++++++++++++++ 1 file changed, 781 insertions(+) create mode 100644 "Lab_04_Regresi\303\263n_Polin\303\263mica_Predic_Emisi\303\263n_CO2.ipynb" diff --git "a/Lab_04_Regresi\303\263n_Polin\303\263mica_Predic_Emisi\303\263n_CO2.ipynb" "b/Lab_04_Regresi\303\263n_Polin\303\263mica_Predic_Emisi\303\263n_CO2.ipynb" new file mode 100644 index 0000000..f0252d3 --- /dev/null +++ "b/Lab_04_Regresi\303\263n_Polin\303\263mica_Predic_Emisi\303\263n_CO2.ipynb" @@ -0,0 +1,781 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "view-in-github" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "pUHInVwN8gr0" + }, + "source": [ + "

Regresión Polinómica para predecir Emisión de CO2

\n", + "\n", + "## Creado por [M.Sc. Ruben Quispe](https://machinelearningmastery.com/tutorial-to-implement-k-nearest-neighbors-in-python-from-scratch/)\n", + "### Curso [Machine Learning](https://eie.pe/curso-machine-learning/)\n", + "\n", + "## Sobre este Notebook\n", + "En este notebook, aprenderemos a usar scikit learn para regresión polinómica. Descargamos el dataset de consumo de combustible y la emisión de CO2 de los automóviles. Luego dividimos nuestros datos en conjuntos de train y test, creamos un modelo usando el conjunto de train, evaluamos nuestro modelo usando el test set y finalmente usamos el modelo para predecir el valor desconocido.\n", + "# Tabla de contenidos\n", + "1. cargar o descargar data\n", + "2. regresión polinomial\n", + "3. Evaluación\n", + "4. Práctica\n", + "# Nuestro dataset comprende estos datos\n", + "Hemos descargado un conjunto de datos de consumo de combustible, FuelConsumption.csv, que contiene clasificaciones de consumo de combustible específicas del modelo y emisiones estimadas de dióxido de carbono para los vehículos ligeros nuevos para la venta minorista en Canadá. [Dataset](https://open.canada.ca/data/en/dataset/98f1a129-f628-4ce4-b24d-6f16bf24dd64)\n", + "1. MODELYEAR e.g. 2014\n", + "2. MAKE e.g. Acura\n", + "3. MODEL e.g. ILX\n", + "4. VEHICLE CLASS e.g. SUV\n", + "5. ENGINE SIZE e.g. 4.7\n", + "6. CYLINDERS e.g 6\n", + "7. TRANSMISSION e.g. A6\n", + "8. FUEL CONSUMPTION in CITY(L/100 km) e.g. 9.9\n", + "9. FUEL CONSUMPTION in HWY (L/100 km) e.g. 8.9\n", + "10. FUEL CONSUMPTION COMB (L/100 km) e.g. 9.2\n", + "11. CO2 EMISSIONS (g/km) e.g. 182 --> low --> 0\n", + "\n", + "# 1. Importando las librerias necesarias " + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "id": "4Y2GpzBK-_sT" + }, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import pandas as pd\n", + "import numpy as np\n", + "%matplotlib inline " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "q_ETLz12BYuN" + }, + "source": [ + "# 2. Load o Descargar o Lear la data " + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 309 + }, + "id": "5ZKumNNZBWR3", + "outputId": "4b8011c4-b0dd-44a9-be16-7eff9d358ab4" + }, + "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", + "
MODELYEARMAKEMODELVEHICLECLASSENGINESIZECYLINDERSTRANSMISSIONFUELTYPEFUELCONSUMPTION_CITYFUELCONSUMPTION_HWYFUELCONSUMPTION_COMBFUELCONSUMPTION_COMB_MPGCO2EMISSIONS
10622014VOLVOXC60 AWDSUV - SMALL3.06AS6X13.49.811.824271
10632014VOLVOXC60 AWDSUV - SMALL3.26AS6X13.29.511.525264
10642014VOLVOXC70 AWDSUV - SMALL3.06AS6X13.49.811.824271
10652014VOLVOXC70 AWDSUV - SMALL3.26AS6X12.99.311.325260
10662014VOLVOXC90 AWDSUV - STANDARD3.26AS6X14.910.212.822294
\n", + "
" + ], + "text/plain": [ + " MODELYEAR MAKE MODEL VEHICLECLASS ENGINESIZE CYLINDERS \\\n", + "1062 2014 VOLVO XC60 AWD SUV - SMALL 3.0 6 \n", + "1063 2014 VOLVO XC60 AWD SUV - SMALL 3.2 6 \n", + "1064 2014 VOLVO XC70 AWD SUV - SMALL 3.0 6 \n", + "1065 2014 VOLVO XC70 AWD SUV - SMALL 3.2 6 \n", + "1066 2014 VOLVO XC90 AWD SUV - STANDARD 3.2 6 \n", + "\n", + " TRANSMISSION FUELTYPE FUELCONSUMPTION_CITY FUELCONSUMPTION_HWY \\\n", + "1062 AS6 X 13.4 9.8 \n", + "1063 AS6 X 13.2 9.5 \n", + "1064 AS6 X 13.4 9.8 \n", + "1065 AS6 X 12.9 9.3 \n", + "1066 AS6 X 14.9 10.2 \n", + "\n", + " FUELCONSUMPTION_COMB FUELCONSUMPTION_COMB_MPG CO2EMISSIONS \n", + "1062 11.8 24 271 \n", + "1063 11.5 25 264 \n", + "1064 11.8 24 271 \n", + "1065 11.3 25 260 \n", + "1066 12.8 22 294 " + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df = pd.read_csv(\"D:/TECHNOLOGY 2020/Data/FuelConsumption.csv\")\n", + "# Mirar el dataset\n", + "df.tail()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 328 + }, + "id": "DTxF5nR3CfDI", + "outputId": "68f76ed0-9733-4bf9-98a2-e295af60f91a" + }, + "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", + "
ENGINESIZECYLINDERSFUELCONSUMPTION_COMBCO2EMISSIONS
10583.0611.5264
10593.2610.2235
10603.0611.5264
10613.2611.2258
10623.0611.8271
10633.2611.5264
10643.0611.8271
10653.2611.3260
10663.2612.8294
\n", + "
" + ], + "text/plain": [ + " ENGINESIZE CYLINDERS FUELCONSUMPTION_COMB CO2EMISSIONS\n", + "1058 3.0 6 11.5 264\n", + "1059 3.2 6 10.2 235\n", + "1060 3.0 6 11.5 264\n", + "1061 3.2 6 11.2 258\n", + "1062 3.0 6 11.8 271\n", + "1063 3.2 6 11.5 264\n", + "1064 3.0 6 11.8 271\n", + "1065 3.2 6 11.3 260\n", + "1066 3.2 6 12.8 294" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# seleccionamos algunas caracteristicas \n", + "cdf = df[['ENGINESIZE', 'CYLINDERS', 'FUELCONSUMPTION_COMB', 'CO2EMISSIONS']]\n", + "cdf.tail(9)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 297 + }, + "id": "6pmHoarsDIMe", + "outputId": "cb3a5d9f-bc28-48b1-95fb-4c2a61f88299" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAEHCAYAAABBW1qbAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAAyzElEQVR4nO2dfbwdZXXvv79zchJyEhA4idxAyDmIwDVBihKpmtpSAmKpH9G+0HiPmqrXaIIt2nqtuem94r1NL1qtcnsbvKlQUnOEUsUrpYhCEKkUpQnvCVKiJBCIEEArbwJJ1v1jZp8zZ2dmz8ue2bPPOev7+cxnzzwzz8za+yTPmmet9awlM8NxHMdxAHrqFsBxHMfpHlwpOI7jOKO4UnAcx3FGcaXgOI7jjOJKwXEcxxnFlYLjOI4zyrQqby5pB/A0sA/Ya2aLJR0O/D0wBOwAzjWzn4bXrwbeH17/h2b2rVb3nzNnjg0NDVUlvuM4zqRky5YtT5jZ3LhzlSqFkF83sycix58ANpnZhZI+ER7/iaSFwDJgEXAkcIOk481sX9KNh4aG2Lx5c5WyO47jTDok7Uw6V4f56BxgQ7i/AXh7pP0KM3vBzB4EtgOndl48x3GcqUvVSsGAb0vaImlF2HaEme0GCD9fHrYfBTwc6bsrbHMcx3E6RNXmoyVm9qiklwPXS/phi2sV03ZADo5QuawAWLBgQTlSOo7jOEDFMwUzezT8fBz4OoE56DFJ8wDCz8fDy3cBR0e6zwcejbnnejNbbGaL586N9ZM4juM4BalMKUiaJengxj7wZuBe4GpgeXjZcuAb4f7VwDJJMyQdAxwH3FaVfI7jOM6BVDlTOAL4nqS7CAb3fzKz64ALgTMlPQCcGR5jZluBK4FtwHXAea0ijxzHmVqMjMDQEPT0BJ8jI3VLNDnRRE6dvXjxYvOQVMeZ/IyMwIoV8NxzY239/bB+PQwP1yfXREXSFjNbHHfOVzQ7jtP1rFkzXiFAcLxmTT3yTGZcKTiO0/U89FC+dqc4rhQcx+l6kqLPPSq9fFwpOI7T9axdG/gQovT3B+1OubhScByn6xkeDpzKg4MgBZ/uZK6GTiTEcxzHaZvhYVcCncBnCo7jOM4orhQcx3GcUVwpOI7jOKO4UnAcx3FGcaXgOI7jjOJKwXEcxxnFlYLjOI4ziisFx3EcZxRXCo7jOM4orhQcx3GcUVwpOI7jOKNUrhQk9Uq6Q9I14fEFkh6RdGe4nR25drWk7ZLul3RW1bI5juM44+lEQrzzgfuAQyJtnzezz0YvkrQQWAYsAo4EbpB0vNdpdhzH6RyVzhQkzQd+E/hShsvPAa4wsxfM7EFgO3BqlfI5juM446nafPQF4OPA/qb2D0u6W9Klkg4L244CHo5csytscxzHcTpEZUpB0luBx81sS9Opi4FjgZOB3cDnGl1ibmMx910habOkzXv27ClRYsdxHKfKmcIS4G2SdgBXAKdL2mhmj5nZPjPbD/wNYyaiXcDRkf7zgUebb2pm681ssZktnjt3boXiO47jTD0qUwpmttrM5pvZEIED+UYze5ekeZHL3gHcG+5fDSyTNEPSMcBxwG1Vyec4juMcSB3lOD8j6WQC09AO4IMAZrZV0pXANmAvcJ5HHjmO43SWjixeM7ObzOyt4f67zezVZnaSmb3NzHZHrltrZsea2Qlm9s1OyOY4zsRgZASGhqCnJ/gcGalbosmJr2h2HCeVVatg2jSQgs9Vqzr7/JERWLECdu4Es+BzxQpXDFXgSsFxnJasWgUXXwz7QmPuvn3BcScVw5o18Nxz49ueey5od8pFZgdEfU4YFi9ebJs3b65bDMeZ1PT0BG/nzUiwv3kF0iSWYTIhaYuZLY475zMFx3FakvTe2Mn3yQUL8rU7xXGl4DhO17N2LfT3j2/r7w/anXJxpeA4TtczPAzr18PgYGAyGhwMjoeH65Zs8uFKwXGclqxcma+9KoaHYceOwIewY4crhKpwpeA4k4AqY/jXrQsUQG9vcNzbGxyvW9fefX3dQXfiSsFxKqbqGP+4GP73vhfmzClvwF23DvbuDe6/d285CsHXHXQnHpLqOBXSiPFvpow37QZDQ8Gg2or+/u6ywSfJPDgYmIacamkVkupKwXEqZNq0sUVfUXp7gzfuMkiK4W+mmwZcX3dQL75OwXFqIk4htGovQtZY/YceKv6MNBNYXv+ArzvoXlwpOE6FKK50VIv2IsTF8MdRdMBNS3NRxD/g6w66F1cKjlMhZawGTntLb47hHxiA6dPHX9POgPvFL7ZuL5KXyNcddC+uFJwpTd3ZP9PImowuGsP/xBPw/vePDyFdvrz4gJum2JLMUmnmKl930J24UnCmLJ3I/tkYmLO2N7N+fb52CMw2GzaM/14bNlQX7un+gcmFKwVnylJkwM3LihX52psp4qjudJpp9w9MLipXCpJ6Jd0h6Zrw+HBJ10t6IPw8LHLtaknbJd0v6ayqZXOmNp2IDGp3NXCRmUZRc04SaWkuhocD81RZ5iqnXjoxUzgfuC9y/Algk5kdB2wKj5G0EFgGLALeAqyTlHGS7Tj5ade0k5V2VgMXmWmUbc5JU2ydNlc51VKpUpA0H/hN4EuR5nOADeH+BuDtkfYrzOwFM3sQ2A6cWqV8ztSmXdNOJ1iyJHCAR5k2LWhPIs6c09cHzzxTPO1FK8XmVdEmF1XPFL4AfByIrlE8wsx2A4SfLw/bjwIejly3K2xznEqoKtFbmaxZc+DK5717Dxxwo4vH1qwJzDfREFUJnnyymjxDZZurnHqpTClIeivwuJltydolpu2AYDhJKyRtlrR5z549bcnoOGUneiubLANu3OKxDRuCGcP+/TB7Nrz44vj+Zb7Je/TR5KLKmcIS4G2SdgBXAKdL2gg8JmkeQPj5eHj9LuDoSP/5wKPNNzWz9Wa22MwWz507t0LxHad+sgy4aeabqt/kq4o+WrQomOE0tkWL2rufk43KlIKZrTaz+WY2ROBAvtHM3gVcDSwPL1sOfCPcvxpYJmmGpGOA44DbqpLPcSYCWQbctEG/6jf5KlYnL1oE27aNb9u2zRVDJ6hjncKFwJmSHgDODI8xs63AlcA24DrgPDMrMTjQcSYeWQbctEG/E+sIyl6d3KwQ0tqnEpWvwjezCbudcsop5jh1s3Gj2eCgmRR8btzY+ef395sFHoVg6+8fL0fdMuYl+l2at6nMypXxv8nKlfnuA2y2hHHVVzQ7Tht0QwWxLLOJ5jd58FKYE5FOrMJ3peA4bTARY/SrUGRlO4UXLszXPlXoxCp8VwqO0wZ1xOhHB9/GljbIR9cxLF+eX5Gdccb4551xxti5KpzCW7ceqAAWLgzapzKdWIXvSsFx2qDTMfpJxXlaDfLNM4Okt8qkOs9nnAGbNo1v27RpTDFU5RTeunW85XyqKwTozCp8VwqO0wbdnCG0MVuJM3HFkfS22awQ0tqd6ujEKnxXCo7TBt1cQawxW8lqyirTLu1UR9Wr8F0pOM4kJDpbyWrKGhysTh5n4uBKwXHaoBtCUhskzVbiTFxxnH12fPvSpfnanYmNKwXHaUE0aicunr/TIamt6iUnrShuNnEl+Q6uvTa+/YYbDlQAS5cG7dC5uhROZ3Cl4DgJZJkF1BGSGremNS31QXTx2v79sbdtKfMNN4x/XkMhQHkRMZWnb3CykbTUeSJsnubCqZLBwfiUAoODY9cMDMRfMzBQnVwrV5r19gbP6e01W7gwX+qDLN8rL0uXjr/X0qX5v1MZ6RucbFAkzYWkV0v6vqSHJa1vqqXs2UudSU83Fo9ZtQouvnh86cuk9QAXXxxv9io7jHZkBG69dXzbrbceaGprZYrrRPoGJyNJ2gL4HkGt5EOBjwFbgWPDc3ck9evk5jMFp0qyvFFL8ddI5ckRTWbXKlFcq63KBHlJv9PAwNgzBgbMpk9PlskT4HUWCibEm21m15nZz8zss8CHgeskvZ6YimiOM9nI8kadFO7Z01NOsrlmv0ZRnnsuSG/RkAlap7puldaimaSV0E8+OSb3k0+2rv7mzuouIklbAHcBL2tqOwl4AHgyqV8nN58pOFWT9kYdl7Y67S09D0lv4e1urWRq9g+k+QnakaMxo8r7TKc9KDhT+DTwqiYFcjewFLiqCgXlON1GWvGYLOGe7YSoVuW/aJ45RGczrdJalB0Z1Jhpbd8efz6p3amORKVgZl8xs+8DSJotaVbY/pCZfaBTAjpOt9NuuGerUMyqEutB4KQ2C0w873tfdjPXvn2BE7shZ1ETT9QU141O/alKy3UKklZKegjYCTwsaaekTO8Ikg6SdJukuyRtlfSpsP0CSY9IujPczo70WS1pu6T7JZ3VzhdznDqYNStfe1w0UXTAfeUry5cxjhdfhPPPz9enERl0wgnZru/rg4GB+FXXnc4267Qgya4E/ClwLfCKSNsrgH8E/jSpX+RaETirAfqAHwCvBy4APhZz/UICP8YM4BjgR0Bvq2e4T8HpBrJGB8XRWG/QvPX2tj4f3Y48Mt2vkXUzS7bvJ13f6ntnjXDKUlLUKQ8K+hTeDfyWmf04okB+DJwLvCeDsjEzeyY87Au3VvET5wBXmNkLZvYgsB04Ne05jlMn7UYHpVXSapW5tDF8PvJItjQWvb3J9RiixKW1SLpfQ44kWvljonRzttmpRkvzkZn9IqbteSDBcjoeSb2S7gQeB643sx+Epz4s6W5Jl0YWxR0FPBzpvitsc5yOkTfVQtZaBUmkhWJmDdW85RbYtSsYoPfvD2SP0t8PGzYE5wYG4u8ZbY+mtVi5Mv76Mgu7QLpT3+kMrZTCLkkHvC9IOh3YneXmZrbPzE4G5gOnSjoRuBg4Fjg5vM/nGreOu0XM81dI2ixp8549e7KI4TiZSLPvx5EUo5+VJHt8oz1p4N23b2wNwfTp4+U2C/Lsz5499ta9fHmgwHrC//HNSqWvDy66KP5ZaYVdDjoovl9Su9PdyBLmfpIWAd8gWNm8hWCAfh2wBDjHzHIVx5P0SeBZCxbCNdqGgGvM7ERJqwHM7H+F574FXGBmt8bdD2Dx4sW2efPmPGI4TiLTpsWba3p7g0E2T59menqS7x0XsRS9ftWqwJSStwhOQ+6GiSs6o+nrg0MOgaeeCpy5a9cWfzOfMydYnNbMwAA88USxezrVImmLmS2OO9cqJHUrcCJwMzBE4GS+GTgxi0KQNFfSoeH+TOAM4IeS5kUuewdwb7h/NbBM0gxJxwDHAZ5jyekYafb9vOeiJIWqZmmPVtrKQ0O2OBPXSy8FA7lZYHa65ZZ8947y1FP52p3uZlrSCUmvBI4ws0ub2t8k6VEz+1HKvecBGyT1EiifK83sGklflnQywcxjB/BBCJSQpCuBbcBe4Dwz8wKBTsfo7U0e5BsO2oULxxeQHxzMZkKqo6pZw9yTFuvfMJNBsdKOSTMpT1ExMWnlU/gC8HRM+/PhuZaY2d1m9hozO8nMTjSz/xG2v9vMXh22v83Mdkf6rDWzY83sBDP7Zr6v4jj5iTqWs7z1b9sGixaNHWetatap9QZRGv6IrLH+RTOSJpnWktqd7qaVUhiyIK3FOMxsM4E5yZnipFUl63YZmh3LDdLCNqOpqptDKZO46abscrXi0EPj2/v6kh3BWRVXXp+FM0lJWsAAbC9yrpObL16rj25YbNSuDGkLx/IuRCvSJ+/1RYvRZFlg1/jeeSnyOzn1QovFa62ijy4HbjSzv2lqfz/wZjP7vWrVVToefVQfQ0PxtvTBwSDGfCLI0OrN3iz9fBx5I5jyPqNIhFQzjRlSM9HZRR6K/E5OvRSKPgI+ArxX0k2SPhdu3wX+M3B+BXI6E4huSGDWrgxpC8MWLow/39weNWHNnBnfp6yFXkUipJpZsmRsvUKDnp6gvQhJi9uS2p3uplVI6mNm9kbgUwRRQjuAT5nZG8zsJ50Rz+lWuiGBWRYZWvkc0grOb916oAJojj5qTnPxzDMHDrhLlya/gSe9ZSe1l1GMZs2aA0Nh9+9vnd67G/xHTodIsitNhM19CvUxEXwKWWRcuXLMt9Dbm79QfJYiOK1+l075FKLkLSGa9jum+Wac7oMWPoXaB/Z2NlcK9dLugFoGrSqjZamx3M79zbLXTU56ZhEZq1JkRWV0R/PEo5VSaJkQz3GSGBkJEqxF8wRt2NBdZoV2fQ7NpqGdO4Pj6HfMai5LemaWOtDNRFc4792b3zl89tn52tN+x7wmMKfLSdIW0Q0YBM4I92cCB2fpV/XmM4X6KOMtvF3SzBqzZsXLOGtWtvtn+Y4bN5pNn54+U+jtTZ5tdHrGVddMIW3W5XQO2jEfAR8A/hX4UXh8HLAprV8nNlcK9ZHXLp2FvING1WaNLP03bjTr60tXCkmKK65/X1/r7x53fR7K9ilk/Z2anyu5YqiLdpXCncB04I5I2z1p/TqxuVKoj7JnCkUc12mDWyeUQtLv0JgZJDlhG7/TwED8+YGBeJmSFFAexVDkb9dKYWf5nZJmU9OnZ5fbKY9WSiGLT+EFM3uxcSBpGrSsoOZMAYrYwlsRl8nzueeCOgBJYZDdEBabZG/fvz/YktYPNBbdxaWcbtX+0kv52uNYuzaowRBl+vTWf7tWBXCy+BRefDH+mqR2pz6yKIXvSvqvwExJZwL/QFCn2ZnClF0+MWlw3bcveKeMc/KWrZiKkKaYylhXUAVmrY/z8KEP5Wt3upykKURjI1AcHyBQBl8N95XWrxObm48mD1ni/eNMHO2aNVqR1Vbejr09r4xZr2/lvK4iSCDNWd7u38IpF3ydgtPtbNxo1tOTTTFkjdTJ4lBtpVQWLozvv3DhgbIXXSuRd7DM4lNIW+BWRZBAGkuXxj9z6dLqnukkU0gpAPcAdydtSf06ublSmDwkDWRZtiTFMHt2/PWzZwfn48JJp09vrRiaFUIaZUTuNJMWfZSkXHt6sv0uVdGsGFwh1EdRpTAYbp8Jt1eH24XAf0/q18nNlUK9lBl3nhSlk3XmEEfagJs38icrzb/LypXVmbjiSLtnq1XYvoZgatCW+Qi4JUtbzDUHEdRYvgvYSpBMD+Bw4HrggfDzsEif1cB24H7grLRnuFKoj7JzHxVVCK0G0CrqJaSR93epQylk+T07ncfK6SytlEJiPYUGku4EPmxm3wuP3wisM7OTU/oJmGVmz0jqA75HkHL7t4CnzOxCSZ8IlcKfSFoIXA6cChwJ3AAcby3qNHs9hfoou55CUp2ALBStVVBFHYC8v0sVMvT0xPeVgpDSrL91J2tjOJ2laD2FBu8H/lrSDkkPAuuA96V1ChXSM+FhX7gZcA6wIWzfALw93D8HuMLMXjCzBwlmDKdmkM+pgaRi9VmK2MfRTr2BpL6zZ7duHxiIP5/UnoWk0NqdO8tLOx2tKz1tWnAcJUmZNNpPOy3bczpZG8PpHlKVgpltMbNfAk4CTjazk83s9iw3l9QbzjQeB643sx8AR5jZ7vDeu4GXh5cfBTwc6b4rbHO6kLLj7+MKv8Qxe/b4WsRLl8K118YPuM8+G3+PRvtFFwW1jaP09QXteYgO0q3e7s0C5fDe9xZXDM11pfftC46bFUMrtm/Pdl0nFwE6XUSSXanMDTgU+A5wIvCzpnM/DT//GnhXpP0S4Ldj7rUC2AxsXrBgQfvGNacQWWzheRzRWdcpwNg9BwYOjB4qkpOnHWd50aiphjO7bD9J2j2zpvrO61PwZHcTC7phnQLwSeBjBE7keWHbPOD+cH81sDpy/beAN7S6pzua6yMtcqdMh2vercw8/zNnju83c+b4862iptIG4Cy/Y57fqYzfssigXiSpn1MvrZRCqqO5KJLmAi+Z2c8kzQS+DXwa+DXgSRtzNB9uZh+XtAj4CmOO5k3AceaO5q4krYB8mQ7XvDQcqkWcuKtWBek6WjliZ84cy9PUrjN79ux4M9esWUFpz2ayfKd2fssiw8GcOfG5mgYG4IknisviVEe7jmYkvVHSf5L0nsaWods84DuS7iZIvX29mV1DsM7hTEkPAGeGx5jZVuBKYBtwHXBeK4Uw2Sm7Jm6aczIvaQXk2y1w0w5FbeHN9voknn9+bL9d30qa32MikDepn9PlJE0hGhvwZeBfCKKO/irc/ndav05sk9V8VPYagDLq+jaTZsbIm1+nLNNRO6uF8yygy/rbpt0jr4xVm4+KUPb9nOqhzcVr99ElCfCat8mqFMpOWFZFYfW0gaDTPoUyVgsXHTxbJYNL8xlUoRTyOO2jW9G0E1WtDHeqo5VSyGI+uhf4D1XMUpx4yja9pJl6qqDs1NppxOX5r4qZM8cfL1kC8+cH33P+/OC4QVlhrw1Wrkxvj0sp3jAdQmDaOvLI8eeXLoUbbigm00UXxddnKPodnZpJ0haNjSCU9KcE0UBXN7a0fp3YJutMoew3r7QEaUUo22TQTu6jpGfm/R2zhGs2/2ZZZkStwjWLZA/NUtM5+syBgQOjg8pOY+EhqRML2jQf/VrcltavE5srhWy0W8A+jrKVQjsKIemZeQfcrM/KUpugUY4zbYCswt/TTBX1E5yJTSulkCkkVdIRwOvCw9vM7PFSpysFmawhqWm5a+q+X6NvEhn+SR3AwQfHh2BmJe6ZaWGzWa9v1T/pt43S359sOssrI4wPm+3tDdJ8rFuX/Pwq/v7OxCZ3SKqkBZH9cwmynf4ucC7wA0m/U4WgTkDZtYe7oZZxGlWEYOb1pWTNvxTtn+U3fO65oAZ1HlmS2oukuejE37/sEGqnRuKmDwSD/x+H+3cBL4+cmwvclTT16OQ2Wc1HWYq/5L1fO3bvOLrNfNTYokVwikRdRe31SVu0f9xvm+d3yStjke9Udohzp+/vlA95o4/M7ErgJ+Fhj403Fz1JxkVvTnGap/tFTDIN0iKBRkaCJG07dwbPaTdpWxKdeJvctg0WLQr2k978s84Ikkxk0f7Nv20SSYvZ8spYJJKs6kiwNWvGVng3aDU7crqcJG3R2IC/IIg8+v1w+ybw6bR+ndgm60yh047BIo7tvG/E7ZSlLLI1yBKpE702bYaQ5gAuMoPKI2MVa07apY6az057UIKj+beBJYCAm83s69WoqHy4o7kcijiNs/QZGQneFh96KPhOcW+zjVxIZeY+isqQhzKc53lzGeVl0aJgNtTMwoWwdWv79y9C2QWXnOpp5WieluUGZvY14GulSuUk0t8fP7A0L0jqZkZGAhNIw6yQZN4oWpSnW2k2o6S15+X++/O1d4K1a8f/rSH4t7p2bX0yOcVJ9A1IapTffFrSzyPb05J+3jkRpx7RhGtZ2tuligpkcXbmOIoW5WnFwoXl3zMrSTOKVjONPL6WOlanp9Hp1etOtSTOFMzsV8LPgzsnjgPJJqKqYsovugje9z548cWxtnbTFGSdAZQ9mLVjRkmqnFa2aStKw8n/0kvBccPJD/GDam9v8rqGOhkediUwWUiNIpJ0rKQZ4f5pkv5Q0qGVS+a0RfPb56pVyW+jw8Nw6aXj3/QuvbS9/+RZB6l2ZiNRGu7NZoWQ5y38Qx/K114G558/phAavPRS0B5HuxFVjpNKkge6sQF3EswoXgn8CPg8cG1av05skzX6qEgES5QssfM9Pe3FkafJmDVKKEu20Cxb3PqKIvHzeSKBivwu7V5fhoxV4LmPJha0E30k6XYze62k/wL8wsz+StIdZvaaSrVVBiZr9FG7UTBJ0SDNtBMRkyZjb292c5dZeSaa6dPHZjl1RMXk/duVnS6kDpqDCqB1ag+nftqtvPaSpHcCy4Frwra+Ftc7bdKu4zerPb/K6l55/B89JS6FfPHFMdNLHdXf8v7tqnDydxpfvDa5yPLf8b3AG4C1ZvagpGOAjWmdJB0t6TuS7pO0VdL5YfsFkh6RdGe4nR3ps1rSdkn3Szqr6Jea6Ey1/PRlvxE3ykDWkfMp799uMvyt6yy96lRAkl2p3Y2gRvNrw/2DgX8DFgIXAB+LuX4hQZ6lGcAxBP6L3lbPmKw+BbP2bLRZ7fDR2gBl5z7KUpugyq3xnerIyZP3t5zo9nhPzT3xoIVPITEkVdKVZnaupHuA6LucAl1iJ6Uom93A7nD/aUn3AUe16HIOcIWZvQA8KGk7cCpwa6vnOMX54AeDz2ab8M6dY9EsRW3C3WAPb8jeWFW9YEGwoKpqO3fe8MyJHs7pi9cmGUnaApgXfg7GbUn9Eu41BDwEHEIwU9gB3A1cChwWXvN/gHdF+lwC/E6r+07WmcLGjQe+aUvZ3yDT3qKbI1aKvOmlvaUn5VPq5ExhKtPp2cdEn+1MNWg39xGApEOILHYzs6cy9psNfJfAJ3FVWLDnCYLZx/8Mlc/7JP01cKuZbQz7XUIQ+vq1pvutAFYALFiw4JSdky1PAjBjxviFZA2mT4cXXkjvnzeipUiupbRnzJkzZtuvg26YqdSFRwM5abQVfSTpg5IeI3iz3xJumeJAJfUR5EwaMbOrAMzsMTPbZ2b7gb8hMBEB7AKOjnSfDzzafE8zW29mi81s8dy5c7OIMeGIUwit2tulCofsU5leGZwq8Gggpx2yRB99DFhkZkNmdky4vSKtkyQRmIDuM7O/jLTPi1z2DuDecP9qYJmkGWGE03EEFd+cilm79sBke+3ahA8/vD2ZnOJ4NJDTDlmUwo+AIjkelwDvBk5vCj/9jKR7JN0N/DrwUQAz2wpcCWwDrgPOM7Ma03xNTqSgLnC0fGMnE5r19FSbS8iZGOVXne4lS+rs1cC/SPoBMGrRNrM/bNXJzL5HEKnUzLUt+qwFPGahYhp1faF1wfdWHHQQ/OIX8e2QbD4yC/wUVSqGibTwqwo8Gshphywzhf8L3Ah8nzGfwpYqhXLaI2vq6PXrg8+REXjPe8aX43zPe1onj3tFggGx0V7X22pf38Ra+FUFnsraaYuksKTGBvxL2jV1bd0aktpueF67oZZ5QzdnzYo/N2tWcRmTSls2QmHLDD+dPdtDIR0nDxRZvBbhO2EY6D8y3nzk8SUxVLEQLEpPT/mLsJJyILWTG+naBCNhUns7PP98dbUmHGeqkSVL6oMxzWYZIpCqphuzpJaRmTOLvb1V3HlWe31jHUIVNZrT1j50Q01mx5mqtLVOwcbCUKNb7QqhW+lUOGAZcedVDqSd9CnUXXXMcSYTrWo0fzyy/7tN5/68SqEmMp0cDLs57jxt7UOZA7lXHXOc8mg1U1gW2V/ddO4tFcgyKTj77Hzt7dDNcedpETAnnFD83g2F0tsLK1cWD6t1HOdAWjmalbAfd+yEXHllcnuZg1eZcedVFaxvlf3z/vuL3TNr/ifHcYrRaqZgCftxx05IUhK4spLDVRF3XkfB+n0F16q/6U3lyuE4znhazRR+SdLPCWYFM8N9wuODKpfMiaWK0MvGDGb9+mCw7u0N7PRVmmV6e4sphptuKl0Ux3EiJM4UzKzXzA4xs4PNbFq43zj2Gs1tsGpVkH8oLg9RXaxbB3v3BmakvXurt9MXdQ4XnWE4jpONLIvXnByk2edXrRrLOwTl5CGqg3b9EM2zk6x4+KnjVEuW3EdOEyMjwSK1np7gM5ojKCn2v9HeyDfUTFJ7p8g7e3nVq/K1xxGdnRx5ZLY+Hn7qONXiM4WctJvGIumtuE6zSJHZy3335WtPoy/FINkJP4fjOBnSXHQzdaS5SEtjkZb+Ydq0eAXQ2xu8NUOxtBNR8oSSZpUpzzOK/JMq+36O4yTTVpoLZzxJJaGzloo+7bR87VUyc2bw2Q2zlyRfgfsQHKezuFLISbuD15135muvkuefDz6LfKfZs/O1p9ENislxnAqVgqSjJX1H0n2Stko6P2w/XNL1kh4IPw+L9Fktabuk+yWdVZVs7dDu4FX14rYiJDlvWzl1v/jFwOwUZdq0oL0Ig4P52h3HqYYqZwp7gT82s1cBrwfOk7QQ+ASwycyOAzaFx4TnlgGLCHIrrZPUdcaDiTB4HXpovuvXrQtyCOXJKTQ8DJddNj630WWXFV9l3cmcUY7jJFOZUjCz3WZ2e7j/NHAfcBRwDrAhvGwD8PZw/xzgCjN7wcweBLYDp1YlX1EmwuD1s5/l71Nk8drwcOBc378/+Gwn7UYni/I4jpNMR3wKkoaA1wA/AI4ws90QKA7g5eFlRwEPR7rtCtu6iqRBav36YN2CU4xO1aFwHKc1lQ9jkmYDXwM+YmY/b3VpTNsBwYiSVkjaLGnznj17yhIzM0lRRvv2dSZ0Mm7B3GSgk3UoHMdJplKlIKmPQCGMmNlVYfNjkuaF5+cBj4ftu4CjI93nA48239PM1pvZYjNbPHfu3OqET6DuEEmzsQVzk0kxpBXlcRynM1QZfSTgEuA+M/vLyKmrgeXh/nLgG5H2ZZJmSDoGOA64rSr5itItIZJllONsl1bpPvIyPAzLl493di9fXl56cMdxslHlTGEJ8G7gdEl3htvZwIXAmZIeAM4MjzGzrcCVwDbgOuA8M+uSIbg7SbK3z5qVrX87RXQa6T527ixn9jIyEoSzNpTuvn3B8WSaDTnORMDTXOSknYHULFs6h6zPaKTWaOaMM2DTpvT+s2bBM89ke1Yzaek+8nLQQfEV1WbMgF/8Iv/9HMdJxtNcTEJa2dtvvDHbPZ59tvjzy44WSiqx6aU3HaezuFKYYGQpx9mJyZ9HCznO5MRTZ08wqijHWYS1a8enEAePFnKcyYDPFCYh7fg9sjI8HMxWomkuWs1e0li6NF+74zjV4I7mnNTtaC6znsLAADzxRLZrO0Gzg3zpUrjhhvrkcZzJijuapxhZk/Ode261cuTl+OPHr1M4/vh65XGcqYgrhUlI3OrgOP7u76qXJSuNkqDRdQoXX5xeK9pxnHJxpTAJabb3J9FOSGrZrF+fr91xnGpwpTBJiaa1ngh45TXH6Q5cKXSYpBQU0fayI3GSZgudiFJyHGdi4UqhQzSqoWUZoLdvj78mqd1xHKcsXCl0iJe9LPhMyjUUbU+q2ZDUnkZSGGs3RSNPhDKnjjMVcKXQIbyCWGu8noLjdAeuFGJYtQqmTQtMOtOmlRMWefjh7d9jMlP2CmnHcYrhuY+aaMTLN2jEy0O2YvbdyNKl8am0uy2FxPCwKwHHqRufKTSRFi8/MFDsvk89VaxfGdxww4EKwFNIOI4ThyuFJtLi5Yumhqg7pfQNNwSO5cbmCsFxnDiqrNF8qaTHJd0babtA0iNN5Tkb51ZL2i7pfklnVSUXtK4t3Mi900yj/dpr8z+vr2/MYZolJHX69Phrktodx3HKosqZwmXAW2LaP29mJ4fbtQCSFgLLgEVhn3WSEobn9kirLbxiRXy/RnuRKKLogJ8lPPTSSw9UHlLQ7jiOUyWVKQUzuxnIakk/B7jCzF4wsweB7cCpVci1Zs34wjAQHK9ZE+yvWwcrV47P1rly5ZiTOckM1NsbDNxxM40XXxy7f5Z4/OFh+PKXx0fifPnL7oR1HKd66vApfFjS3aF56bCw7Sjg4cg1u8K20slSW3jJEpg/PxiQ588PjhskxdNv2BDkGUrKNdS4f9Z4/Gjuoh07XCE4jtMZOq0ULgaOBU4GdgOfC9vjLO2xhhZJKyRtlrR5z549uQVISindaE8zL8XF0y9fHswEenqCLY7GDCNrPH4rv0cW2u3vOM4Uxcwq24Ah4N60c8BqYHXk3LeAN6Td/5RTTrG89PREY3DGtp6e4PzgYPz53l4zKTi/cePY/TZuNOvvj+/T2Pr7x/dJI+6eee6xcaPZ9Onj+0+fnk8Gx3EmL8BmSxhXKy3HKWkIuMbMTgyP55nZ7nD/o8Avm9kySYuArxD4EY4ENgHHmVnLxMlFynGmlbrs6UnPCdTfP/Z2PzQUn5Ootzcw/SxYEJiG8ph/ku45OBiYktKYMweefPLA9m4rv+k4Tj3UUo5T0uXArcAJknZJej/wGUn3SLob+HXgowBmthW4EtgGXAecl6YQipIWcpplPUHUMZ3ko2j4F4r4A7L4PVoRpxAa7WWm7nAcZ/JRZfTRO81snpn1mdl8M7vEzN5tZq82s5PM7G2NWUN4/VozO9bMTjCzb1YlV1rI6dlnx59vpjFAJymRdharJeVJKit/kpe6dBwniSm3ojkt5DTr4rTGoJ+kRLIqlyrImorDS106jtPMlFMKECiAvXsD38HeveMT3WUx0URDSJOUSJGVzw2S8iRlzZ900UXBKuo0vNSl4zjNTEml0Iq0xWnNIaTt2v/zyJDVJDU8DH/7t2Nhr0kk+Vccx5m6uFJoIm1xWrPjuMgAnraGoIyCM9HFb0kpsk87Lfv9HMeZGrhSaCJvsZe8A3ja4rgiMqThNZ8dx8mKK4UY8qSYyDuAp+VeqoIqTFyO40xOXCkUoNn8A9mVSNyitOb2LLOJPFQRNus4zuTElUJO2h2w0xbPQfmziTJ8FI7jTA1cKeSk3QE7rbIblG/uKdtH4TjO5GVa3QJMNNodsAcHk/MaNViwIP6adsw9w8OuBBzHScdnCjlp1z6fxZTj5h7HcerClUJO2h2ws5hy3NzjOE5dVJo6u2qKpM4ug5GRwIfw0EPFUmM7juPUSS2psycz7ZbKzFIVzSunOY5TB64USiDPAJ4lpLXsdQqO4zhZcfNRmzQG8GiYarQyWzNZqqq1W3nNcRynFa3MR64U2iTvAJ5U7lMKzFFZr3EcxylKXeU4L5X0uKR7I22HS7pe0gPh52GRc6slbZd0v6SzqpKrbPKuW8gS0uppKRzHqYsqfQqXAW9pavsEsMnMjgM2hcdIWggsAxaFfdZJmhDZ/vMO4L5OwXGcbqbKGs03A821ws4BNoT7G4C3R9qvMLMXzOxBYDtwalWylUneAdzXKTiO0810Os3FEWa2G8DMdkt6edh+FPD9yHW7wraupzFQ51m3kCXlhKelcBynDrol91Fc0chYD7ikFcAKgAVdYmT3AdxxnMlCp9cpPCZpHkD4+XjYvgs4OnLdfODRuBuY2XozW2xmi+fOnVupsI7jOFONTiuFq4Hl4f5y4BuR9mWSZkg6BjgOuK3DsjmO40x5KjMfSbocOA2YI2kX8EngQuBKSe8HHgJ+F8DMtkq6EtgG7AXOM7OEygOO4zhOVVSmFMzsnQmnliZcvxbwoEvHcZwa8dxHjuM4zigTOs2FpD1ATJKJzMwBnihJnKpwGcvBZSwHl7Ec6pZx0MxiI3UmtFJoF0mbk/J/dAsuYzm4jOXgMpZDN8vo5iPHcRxnFFcKjuM4zihTXSmsr1uADLiM5eAyloPLWA5dK+OU9ik4juM445nqMwXHcRwnwpRTCnHFf7oNSUdL+o6k+yRtlXR+3TI1I+kgSbdJuiuU8VN1y5SEpF5Jd0i6pm5ZkpC0Q9I9ku6UVG85wQQkHSrpq5J+GP7bfEPdMkWRdEL4+zW2n0v6SN1yNSPpo+H/mXslXS7poLplijLlzEeSfhV4Bvg7MzuxbnniCJMFzjOz2yUdDGwB3m5m22oWbRRJAmaZ2TOS+oDvAeeb2fdTunYcSX8ELAYOMbO31i1PHJJ2AIvNrGvj6yVtAP7ZzL4kaTrQb2Y/q1msWMIiXY8Av2xm7axlKhVJRxH8X1loZs+H6X2uNbPL6pVsjCk3U0go/tNVmNluM7s93H8auI8uqy9hAc+Eh33h1nVvGJLmA78JfKluWSYykg4BfhW4BMDMXuxWhRCyFPhRNymECNOAmZKmAf0kZISuiymnFCYakoaA1wA/qFmUAwjNMncSpEC/3sy6TkbgC8DHgf01y5GGAd+WtCWsGdJtvALYA/xtaIr7kqRZdQvVgmXA5XUL0YyZPQJ8liAh6G7g383s2/VKNR5XCl2MpNnA14CPmNnP65anGTPbZ2YnE9S/OFVSV5njJL0VeNzMttQtSwaWmNlrgd8AzgvNnN3ENOC1wMVm9hrgWcIa691GaNp6G/APdcvSjKTDCMoPHwMcCcyS9K56pRqPK4UuJbTTfw0YMbOr6panFaEZ4SbgLfVKcgBLgLeF9vorgNMlbaxXpHjM7NHw83Hg63RfjfJdwK7IbPCrBEqiG/kN4HYze6xuQWI4A3jQzPaY2UvAVcAba5ZpHK4UupDQiXsJcJ+Z/WXd8sQhaa6kQ8P9mQT/2H9Yq1BNmNlqM5tvZkME5oQbzayr3soAJM0KAwoITTJvBroqOs7MfgI8LOmEsGkpQf2TbuSddKHpKOQh4PWS+sP/50sJfIZdw5RTCmHxn1uBEyTtCgv+dBtLgHcTvNk2wuvOrluoJuYB35F0N/CvBD6Frg357HKOAL4n6S6CioP/ZGbX1SxTHH8AjIR/85OBP69XnAOR1A+cSfAG3nWEM62vArcD9xCMwV21unnKhaQ6juM4yUy5mYLjOI6TjCsFx3EcZxRXCo7jOM4orhQcx3GcUVwpOI7jOKO4UnAmDJIGIiG6P5H0SOR4esnP6pV0dZit9pIwprzovW6S1JF6vGEm01WdeJYzOZlWtwCOkxUze5IgPh5JFwDPmNlnK3rWPoJUCRONQ4FVwLqsHST1ht/XcXym4ExsJH1A0r+GdR2+Fi5eQtJlki4O3/R/LOnXwloa90m6LNL/Ykmbm2tChPUNPiXp9rDOwX8M2w+X9P8k3S3p+5JOipFppqQrwmv+HpgZOfdmSbeG9/2HML9Vc/+bJH1e0s2hvK+TdJWkByT9WeS6Pwpz8t+rsboBFwLHhrOnv1DAX4TX3CPp98K+p4W/zVcIFlE5ToCZ+ebbhNuAC4CPAQORtj8D/iDcv4wg35EIEpD9HHg1wYvQFuDk8LrDw89egvxNJ4XHOyL3WgV8Kdz/K+CT4f7pwJ0xsv0RcGm4fxKwl6CewxzgZoI6FAB/Avz3mP43AZ8O988nSK08D5hBkINoADiFYDCfBcwGthJk0x0C7o3c67eB68PvdwRBmoV5wGkESe2Oqftv6Vt3bT5TcCY6J0r6Z0n3AMPAosi5fzQzIxg8HzOze8xsP8EAOhRec66k24E7wr4LI/0bqRK2RK7/FeDLAGZ2IzAg6WVNMv0qsDG85m7g7rD99eH9bwlTji8HBhO+19Xh5z3AVgtqbLwA/Bg4OpTj62b2rAV1La4C3hRzn18BLrcgo+1jwHeB14XnbjOzBxOe70xR3KfgTHQuI6hKd5ek3yd4A27wQvi5P7LfOJ4m6RiC2cbrzOynoVnpoJj++xj7vxLncI7LFRPXJoIcUe9M+jJZZU+QI45W1z2b8R7OFMJnCs5E52Bgd5hqfDhn30MIBsZ/l3QEQcrlNG5uPEfSacATdmCti+g1JxKYkAC+DyyR9MrwXL+k43PKHH3G28N7zALeAfwz8DTBbxK97vfCaKq5BLOY2wo+05kC+EzBmej8N4KqdDsJTC0Ht758jHB2cQeBOenHwC0Zul1AUH3sbuA5AhNQMxdHrrmTcBA2sz3hbOZySTPCa/8U+LesMkdkvz2c2TQG+C+Z2R0Akm6RdC/wTYKqc28A7iKYvXzczH7ScJw7TjOeJdVxHMcZxc1HjuM4ziiuFBzHcZxRXCk4juM4o7hScBzHcUZxpeA4juOM4krBcRzHGcWVguM4jjOKKwXHcRxnlP8PFjNl13eT6XQAAAAASUVORK5CYII=\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# Graficar los valores de emisión de CO2 respecto a Tamaño de motor\n", + "plt.scatter(cdf.ENGINESIZE, cdf.CO2EMISSIONS, color ='blue')\n", + "plt.xlabel(\"Tamaño de motor\")\n", + "plt.ylabel(\"Emisión de CO2\")\n", + "plt.show" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "hjpwquesD4yI" + }, + "source": [ + "# 3. Creando un conjunto de train y test\n", + "La división de conjunto de Train/Test, implica dividir el dataset en train set y test set, que son mutuamente excluyentes. Despues se debe entrenar con el train set y probar con el test set." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "id": "v-muwCQPD0Kc" + }, + "outputs": [], + "source": [ + "msk = np.random.rand(len(df))<0.8\n", + "train = cdf[msk]\n", + "test = cdf[~msk]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "bEOZIM4bFWI8" + }, + "source": [ + "# 4. Regresión Polinomial\n", + "A veces, la tendencia de los datos no es realmente lineal y parece curvilínea. En este caso podemos utilizar métodos de regresión polinomial. De hecho, existen muchas regresiones diferentes que pueden usarse para ajustarse a cualquier aspecto del conjunto de datos, como cuadrático, cúbico, etc.y puede continuar hasta grados infinitos.\n", + "\n", + "En esencia, podemos llamar a todos estos regresión polinomial, donde la relación entre la variable independiente x y la variable dependiente y se modela como un polinomio de enésimo grado en x. Digamos que desea tener una regresión polinomial (hagamos un polinomio de 2 grados):\n", + "\n", + "$𝑦 = 𝑏 + \\theta_1𝑥 + \\theta_2𝑥^2 $\n", + "Ahora, la pregunta es: ¿cómo podemos ajustar nuestros datos en esta ecuación mientras solo tenemos valores x, como el tamaño del motor? Bueno, podemos crear algunas características adicionales: 1, $𝑥$ y $𝑥^2$.\n", + "\n", + "La función **PloynomialFeatures()** en la biblioteca Scikit-learn, impulsa un nuevo conjunto de características del conjunto de características original. Es decir, se generará una matriz que consta de todas las combinaciones polinomiales de las características con grado menor o igual al grado especificado. Por ejemplo, digamos que el conjunto de características original tiene solo una característica, ENGINESIZE. Ahora, si seleccionamos el grado del polinomio para que sea 2, entonces genera 3 características, grado = 0, grado = 1 y grado = 2:" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 136 + }, + "id": "QkHMsr4oFSUt", + "outputId": "c597066a-52e8-4a15-f706-114c646748be" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 1. , 2.4 , 5.76],\n", + " [ 1. , 1.5 , 2.25],\n", + " [ 1. , 3.5 , 12.25],\n", + " ...,\n", + " [ 1. , 3. , 9. ],\n", + " [ 1. , 3.2 , 10.24],\n", + " [ 1. , 3.2 , 10.24]])" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from sklearn.preprocessing import PolynomialFeatures\n", + "from sklearn import linear_model\n", + "train_x =np.asanyarray(train[['ENGINESIZE']])\n", + "train_y = np.asanyarray(train[['CO2EMISSIONS']])\n", + "\n", + "test_x = np.asanyarray(test[['ENGINESIZE']])\n", + "test_y = np.asanyarray(test[['CO2EMISSIONS']])\n", + "\n", + "poly = PolynomialFeatures(degree=2)\n", + "train_x_poly = poly.fit_transform(train_x)\n", + "train_x_poly " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "k2YzTtnHMsj9" + }, + "source": [ + "**fit_transform** toma nuestros valores de x y genera una lista de nuestros datos elevados desde la potencia de 0 a la potencia de 2 (ya que establecemos el grado de nuestro polinomio en 2).\n", + "\n", + "$\n", + "\\begin{bmatrix}\n", + " v_1\\\\\n", + " v_2\\\\\n", + " \\vdots\\\\\n", + " v_n\n", + "\\end{bmatrix}\n", + "$\n", + "$\\longrightarrow$\n", + "$\n", + "\\begin{bmatrix}\n", + " [ 1 & v_1 & v_1^2]\\\\\n", + " [ 1 & v_2 & v_2^2]\\\\\n", + " \\vdots & \\vdots & \\vdots\\\\\n", + " [ 1 & v_n & v_n^2]\n", + "\\end{bmatrix}\n", + "$\n", + "\n", + "in our example\n", + "\n", + "$\n", + "\\begin{bmatrix}\n", + " 2.\\\\\n", + " 2.4\\\\\n", + " 1.5\\\\\n", + " \\vdots\n", + "\\end{bmatrix}\n", + "$\n", + "$\\longrightarrow$\n", + "$\n", + "\\begin{bmatrix}\n", + " [ 1 & 2. & 4.]\\\\\n", + " [ 1 & 2.4 & 5.76]\\\\\n", + " [ 1 & 1.5 & 2.25]\\\\\n", + " \\vdots & \\vdots & \\vdots\\\\\n", + "\\end{bmatrix}\n", + "$\n", + "\n", + "Parecen conjuntos de características para análisis de regresión lineal múltiple, ¿verdad? Si. Lo hace. De hecho, la regresión polinomial es un caso especial de regresión lineal, con la idea principal de cómo seleccionar sus características. Solo considere reemplazar $𝑥$ con $𝑥1$, $𝑥_1^2$ con $𝑥_2$, y así sucesivamente. Entonces la ecuación de grado 2 se convertiría en:\n", + "\n", + "$𝑦 = 𝑏 + \\theta_1 𝑥_1 +\\theta_2 𝑥2$\n", + "\n", + "Ahora, podemos tratarlo como un problema de \"regresión lineal\". Por lo tanto, esta regresión polinomial se considera un caso especial de regresión lineal múltiple tradicional. Entonces, puede usar el mismo mecanismo que la regresión lineal para resolver tales problemas.\n", + "\n", + "así que podemos usar la función **LinearRegression()** para resolverlo:" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 51 + }, + "id": "1owSdYZRMcch", + "outputId": "d3e75d7a-8047-42eb-c232-3b4378142d09" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Coefficients: [[ 0. 50.482403 -1.5626212]]\n", + "Intercept: [107.54994493]\n" + ] + } + ], + "source": [ + "clf = linear_model.LinearRegression()\n", + "train_y_ = clf.fit(train_x_poly, train_y)\n", + "# The coefficients\n", + "print ('Coefficients: ', clf.coef_)\n", + "print ('Intercept: ',clf.intercept_)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "5qtAYd5HPDOw" + }, + "source": [ + "Como se mencionó anteriormente, Coeficiente e Intercepción, son los parámetros de la línea curva ajustada. Dado que es una regresión lineal múltiple típica, con 3 parámetros, y sabiendo que los parámetros son la intersección y los coeficientes del hiperplano, sklearn los ha estimado a partir de nuestro nuevo conjunto de conjuntos de características. Vamos a trazarlo:" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 297 + }, + "id": "1GBSnJ1HO5Ur", + "outputId": "fc52a23f-6807-427b-cbea-5d9c3d4e483c" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0, 0.5, 'Emission')" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.scatter(train.ENGINESIZE, train.CO2EMISSIONS, color='blue')\n", + "XX = np.arange(0.0, 10.0, 0.1)\n", + "yy = clf.intercept_[0]+ clf.coef_[0][1]*XX+ clf.coef_[0][2]*np.power(XX, 2)\n", + "plt.plot(XX, yy, '-r' )\n", + "plt.xlabel(\"Engine size\")\n", + "plt.ylabel(\"Emission\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "oHUK00l8PXRu" + }, + "source": [ + "# 5.Evaluación" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 68 + }, + "id": "c2XV9yw1PTlO", + "outputId": "87f8cc53-7f75-4ceb-b3f3-1b6fa2aed7a0" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Mean absolute error: 23.05\n", + "Residual sum of squares (MSE): 953.55\n", + "R2-score: 0.69\n" + ] + } + ], + "source": [ + "from sklearn.metrics import r2_score\n", + "\n", + "test_x_poly = poly.fit_transform(test_x)\n", + "test_y_ = clf.predict(test_x_poly)\n", + "\n", + "print(\"Mean absolute error: %.2f\" % np.mean(np.absolute(test_y_ - test_y)))\n", + "print(\"Residual sum of squares (MSE): %.2f\" % np.mean((test_y_ - test_y) ** 2))\n", + "print(\"R2-score: %.2f\" % r2_score(test_y_ , test_y) )" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "dc7qTCc7QG0v" + }, + "source": [ + "# 6. Práctica\n", + "Intente utilizar una regresión polinomial con el conjunto de datos, pero esta vez con grado tres (cúbico). ¿Da como resultado una mejor precisión?" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 365 + }, + "id": "zvmy0DcXPed6", + "outputId": "286803ba-fcb4-4179-de95-a2bdd8354e8f" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Coefficients: [[ 0. 33.19224459 3.18056691 -0.39110202]]\n", + "Intercept: [125.96982931]\n", + "Mean absolute error: 22.88\n", + "Residual sum of squares (MSE): 946.14\n", + "R2-score: 0.70\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# Escribe tu codigo aqui\n", + "poly3 = PolynomialFeatures(degree=3)\n", + "train_x_poly3 = poly3.fit_transform(train_x)\n", + "clf3 = linear_model.LinearRegression()\n", + "train_y3_ = clf3.fit(train_x_poly3, train_y)\n", + "# The coefficients\n", + "print ('Coefficients: ', clf3.coef_)\n", + "print ('Intercept: ',clf3.intercept_)\n", + "plt.scatter(train.ENGINESIZE, train.CO2EMISSIONS, color='blue')\n", + "XX = np.arange(0.0, 10.0, 0.1)\n", + "yy = clf3.intercept_[0]+ clf3.coef_[0][1]*XX + clf3.coef_[0][2]*np.power(XX, 2) + clf3.coef_[0][3]*np.power(XX, 3)\n", + "plt.plot(XX, yy, '-r' )\n", + "plt.xlabel(\"Engine size\")\n", + "plt.ylabel(\"Emission\")\n", + "test_x_poly3 = poly3.fit_transform(test_x)\n", + "test_y3_ = clf3.predict(test_x_poly3)\n", + "print(\"Mean absolute error: %.2f\" % np.mean(np.absolute(test_y3_ - test_y)))\n", + "print(\"Residual sum of squares (MSE): %.2f\" % np.mean((test_y3_ - test_y) ** 2))\n", + "print(\"R2-score: %.2f\" % r2_score(test_y3_ , test_y) )\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "GdgiPgrdQa6U" + }, + "source": [ + "# Muchas gracias \n", + "### Atte:\n", + "# Mg.Rubén Quispe" + ] + } + ], + "metadata": { + "colab": { + "authorship_tag": "ABX9TyP/tHbNUfdvGAtS7cIcdPTL", + "include_colab_link": true, + "name": "Lab_08_Regresión_Polinómica.ipynb", + "provenance": [] + }, + "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.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} From b6f94a70d92ee057cae76cdf481a488de6f0bf4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20Quispe?= <47084770+RubenMcCarty@users.noreply.github.com> Date: Sat, 28 Nov 2020 11:53:39 -0500 Subject: [PATCH 07/51] =?UTF-8?q?Regresi=C3=B3n=20No=20Lineal=20PBI=20Chin?= =?UTF-8?q?a?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...egresi\303\263n_No_Lineal_PBI_China.ipynb" | 866 ++++++++++++++++++ 1 file changed, 866 insertions(+) create mode 100644 "Lab_05_An\303\241lisis_Regresi\303\263n_No_Lineal_PBI_China.ipynb" diff --git "a/Lab_05_An\303\241lisis_Regresi\303\263n_No_Lineal_PBI_China.ipynb" "b/Lab_05_An\303\241lisis_Regresi\303\263n_No_Lineal_PBI_China.ipynb" new file mode 100644 index 0000000..cc3df5e --- /dev/null +++ "b/Lab_05_An\303\241lisis_Regresi\303\263n_No_Lineal_PBI_China.ipynb" @@ -0,0 +1,866 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "view-in-github" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "hAvyBAjaR6ur" + }, + "source": [ + "#

Análisis de regresión no lineal

\n", + "## Creado por [M.Sc. Ruben Quispe](https://machinelearningmastery.com/tutorial-to-implement-k-nearest-neighbors-in-python-from-scratch/)\n", + "### Curso [Machine Learning](https://eie.pe/curso-machine-learning/)\n", + "\n", + "Si los datos muestran una tendencia curvilínea, la regresión lineal no producirá resultados muy precisos en comparación con una regresión no lineal porque, como su nombre lo indica, la regresión lineal supone que los datos son lineales. Aprendamos sobre regresiones no lineales y apliquemos un ejemplo en Python. En este notebook, ajustamos un modelo no lineal a los puntos de datos que corresponden al PIB de China de 1960 a 2014.\n", + "# 1. Importando las librerías necesarias" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "id": "ETirxSFeR6uv" + }, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "%matplotlib inline " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "FxKqwLq8R6u6" + }, + "source": [ + "Aunque la regresión lineal es muy buena para resolver muchos problemas, no se puede utilizar para todos los conjuntos de datos. Primero, recuerde cómo la regresión lineal podría modelar un conjunto de datos. Modela una relación lineal entre una variable dependiente y y una variable independiente x. Tenía una ecuación simple, de grado 1, por ejemplo y = 2𝑥 + 3" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "id": "zFHFRhhdR6u7", + "outputId": "63bc74dd-44ea-4257-c02f-d1d8bcdb564c" + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "x = np.arange(-5.0, 5.0, 0.1)\n", + "# y = 2x + 3\n", + "y = 2*(x)+3\n", + "y_noise = 2* np.random.normal(size = x.size)\n", + "ydata = y + y_noise\n", + "plt.plot(x, ydata, 'bo')\n", + "plt.plot (x,y, 'r')\n", + "plt.xlabel('Varible Independiente')\n", + "plt.ylabel('Variable Dependiente')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "HerrbZxbR6vG" + }, + "source": [ + "Las regresiones no lineales son una relación entre variables independientes 𝑥 y una variable dependiente 𝑦 que dan como resultado datos modelados de función no lineal. Básicamente, cualquier relación que no sea lineal puede denominarse no lineal y, por lo general, se representa mediante el polinomio de 𝑘 grados (potencia máxima de x).\n", + "$$ \\ y = a x^3 + b x^2 + c x + d \\$$\n", + "\n", + "las funciones no lineales pueden tener elementos exponenciales, logaritmicas, fracciones y otros. Por ejemplo\n", + "$$ y = \\log(x)$$\n", + "\n", + "O incluso mas complicado como:\n", + "$$ y = \\log(a x^3+ b x^2+ c x + d)$$\n", + "\n", + "#### Echemos un vistaso a la grafica de funciones cubicas " + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "id": "3w2PgTq9R6vI", + "outputId": "f3048a64-8b57-46dd-f414-bcce80ae2910" + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "x = np.arange(-5.0,5.0,0.1)\n", + "y = 1*(x**3)+ 1*(x**2) + 1 *x +3\n", + "y_noise = 20 *np.random.normal(size = x.size)\n", + "ydata = y + y_noise\n", + "plt.plot(x, ydata, 'bo')\n", + "plt.plot (x,y, 'r')\n", + "plt.xlabel('Varible Independiente')\n", + "plt.ylabel('Variable Dependiente')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "KecN4N14R6vQ" + }, + "source": [ + "Como puede ver, esta función tiene $ x^3$ y $𝑥^2$ como variables independientes. Además, el gráfico de esta función no es una línea recta sobre el plano 2D. Entonces esta es una función no lineal.\n", + "\n", + "Algunos otros tipos de funciones no lineales son:\n", + "# Cuadratica\n", + " $$ Y = X^2 $$" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "id": "ElHBU1qTR6vR", + "outputId": "b0a33cf3-7085-452d-af62-a1218cef61a4" + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "x = np.arange(-5.0,5.0,0.1)\n", + "y = np.power(x,2)\n", + "y_noise = 2 *np.random.normal(size = x.size)\n", + "ydata = y + y_noise\n", + "plt.plot(x, ydata, 'bo')\n", + "plt.plot (x,y, 'r')\n", + "plt.xlabel('Varible Independiente')\n", + "plt.ylabel('Variable Dependiente')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "IQ64NyLdR6vZ" + }, + "source": [ + "# Exponencial\n", + "Una función exponencial con base c is definida por:\n", + " $$ Y = a+b c^X $$\n", + " \n", + " Donde b ≠0, c > 0 , c ≠1, y x es cualquier número real. c,es la base es constante y el exponente x es variable" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "id": "PudIM7F9R6va", + "outputId": "eb028249-5522-4de4-aaaf-465cd4c176c1" + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAEJCAYAAAB7UTvrAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAAnJUlEQVR4nO3deZhcVZ3/8fenl+wbWQlZSAKBECBsIawqiggqCiiMgA4ozOCMiDoz6ID4oI6Pv2EGR3EBFRVkFEEGxKAjKAZZFWISQhKSQEISQtbubN2dpffv74+63XQy3Z2i01W3qvvzep56qu65y/leSNe3zjn3nquIwMzMDKAk7QDMzKxwOCmYmVkrJwUzM2vlpGBmZq2cFMzMrJWTgpmZtcpZUpB0l6QKSUvaWXe9pJA0sk3ZjZJWSnpF0rm5isvMzDqWy5bCT4Hz9i2UNAE4B1jbpmw6cClwdLLPHZJKcxibmZm1oyxXB46IpyVNamfVt4AvALPblF0A3B8RdcBqSSuBWcBfOqtj5MiRMWlSe1WYmVlH5s+fvyUiRrW3LmdJoT2SPgisj4iXJLVdNQ54vs3yuqSsU5MmTWLevHndG6SZWQ8n6fWO1uUtKUgaANwEvKe91e2UtTv/hqRrgGsAJk6c2G3xmZlZfq8+OgyYDLwkaQ0wHlgg6WAyLYMJbbYdD2xo7yARcWdEzIyImaNGtdv6MTOzLspbUoiIxRExOiImRcQkMongxIjYBDwCXCqpr6TJwFRgbr5iMzOzjFxeknofmYHiIyWtk3R1R9tGxMvAA8BS4DHg2ohoylVsZmbWvlxefXTZftZP2mf568DXcxWPmZntn+9oNjOzVk4KZmbWyknBzKzI3PXsan63eGNOju2kYGZWZH749GvMWVaRk2M7KZiZFZGqPQ1srq5j6phBOTm+k4KZWRFZWbETgKmjnRTMzHq9lRU1AEwdPTgnx3dSMDMrIis276RfeQnjDuqfk+M7KZiZFZEVFTuZMnIQpSXtzSN64JwUzMyKyMqKnTkbZAYnBTOzorGrrpH1O/bkbJAZnBTMzIrGa5WZK48Oz9EgMzgpmJkVjRWbk8tR3X1kZmYrKnZSXioOHT4gZ3U4KZiZFYmVFTVMGTmIstLcfXU7KZiZFYkVFTs5PIddR+CkYGZWFGobmnhj224OH+WkYGbW662q3EVz5HaQGZwUzMyKwoocz3nUwknBzKwIrKzYSWmJmDQyd1cegZOCmVlRWLF5J4eOGEDfstKc1pOzpCDpLkkVkpa0KbtV0nJJiyQ9LGlYm3U3Slop6RVJ5+YqLjOzYrSioian01u0yGVL4afAefuUPQ4cExEzgFeBGwEkTQcuBY5O9rlDUm7ToZlZkahtaGLN1t05H0+AHCaFiHga2LZP2R8iojFZfB4Yn3y+ALg/IuoiYjWwEpiVq9jMzIrJyoqdNDUHR40dkvO60hxTuAp4NPk8Dnijzbp1Sdn/IekaSfMkzausrMxxiGZm6Vu2sRqAaWOLuKXQGUk3AY3AvS1F7WwW7e0bEXdGxMyImDlq1KhchWhmVjCWb6qhX3kJk0YMzHldZTmvYR+SrgTOB86OiJYv/nXAhDabjQc25Ds2M7NCtHxTNUeOGZyzp621ldeWgqTzgH8FPhgRu9usegS4VFJfSZOBqcDcfMZmZlaIIoJlG2uYdnDuxxMghy0FSfcBZwEjJa0DvkzmaqO+wOOSAJ6PiH+IiJclPQAsJdOtdG1ENOUqNjOzYlFZU8e2XfV5GU+AHCaFiLisneKfdLL914Gv5yoeM7NitGxTZnqLfLUUfEezmVkBW55ceXRUnloKTgpmZgVs+aYaxg7tx7ABffJSn5OCmVkBW7axmmkH56eVAE4KZmYFq76xmZUVO5mWhzuZWzgpmJkVqNcqd9LYHG4pmJnZm9NbTHdLwczMlm+qoU9pCZNH5n56ixZOCmZmBWrZxmqmjhlEWWn+vqqdFMzMCtTyTfmb3qKFk4KZWQGqqK6lsqYubzettXBSMDMrQIvXVwEwY/ywvNbrpGBmVoAWr69CgqMPcfeRmVmvt2R9FVNGDmRg3/w+9sZJwcysAC1eX8Wx44bmvV4nBTOzAlNRU8vm6jqOcVIwM7MlySCzWwpmZsbiddWZQWYnBTMzW7y+iskjBzIoz4PM4KRgZlZwlqyvYkYKrQRwUjAzKygVNbVsqq5NZZAZskgKyviYpJuT5YmSZmWx312SKiQtaVM2XNLjklYk7we1WXejpJWSXpF0bldPyMysmKU5yAzZtRTuAE4DLkuWa4Dbs9jvp8B5+5TdAMyJiKnAnGQZSdOBS4Gjk33ukFSaRR1mZj1KmoPMkF1SOCUirgVqASJiO7DfJ0hHxNPAtn2KLwDuST7fA1zYpvz+iKiLiNXASmC/rREzs54mzUFmyC4pNCS/2gNA0iiguYv1jYmIjQDJ++ikfBzwRpvt1iVlZma9ypKU7mRukU1S+A7wMDBa0teBZ4F/7+Y41E5ZtLuhdI2keZLmVVZWdnMYZmbpaRlkTjMp7Ld9EhH3SpoPnE3my/vCiFjWxfo2SxobERsljQUqkvJ1wIQ2240HNnQQz53AnQAzZ85sN3GYmRWjF9fuAOCEicNSiyGbq49+FhHLI+L2iPheRCyT9LMu1vcIcGXy+UpgdpvySyX1lTQZmArM7WIdZmZFacHa7ZSXiqMPKeCWApkrglol4wsn7W8nSfcBZwEjJa0DvgzcAjwg6WpgLXAJQES8LOkBYCnQCFwbEU1v4TzMzIrei2t3MP2QofQrT+/iyw6TgqQbgS8C/SVV82a/fz1J901nIuKyDlad3cH2Xwe+vr/jmpn1RI1NzSxat4PLZk1MNY4Ou48i4t8jYjBwa0QMiYjByWtERNyYxxjNzHq85ZtqqG1o5oSJB+1/4xzKZqD5RknjgEPbbp/ch2BmZt3gxbXbATgxxUFmyCIpSLqFzN3GS4GWfv4AnBTMzLrJgrU7GDW4L+OG9U81jmwGmi8CjoyIulwHY2bWW724djsnThyG1N5tW/mTzc1rq4DyXAdiZtZbbd1Zx5qtu1MfT4DsWgq7gYWS5gCtrYWI+EzOojIz60UWvrEDgBOLJCk8krzMzCwHFqzdTmmJUp3eokU2Vx/dI6k/MDEiXslDTGZmvcqLa3dw1NjB9O+T/hMDspnm4gPAQuCxZPl4SW45mJl1g6bm4KU3dhRE1xFkN9D8FTLPNtgBEBELgck5i8jMrBdZvqmaXfVNqU6C11Y2SaExIqr2KfPspGZm3WDu6syzyGZNHpFyJBnZDDQvkXQ5UCppKvAZ4M+5DcvMrHeYu3ob4w/qn/pNay2yaSlcR2am1DrgPqAa+FwOYzIz6xUigrmrtzFr8vC0Q2mVzdVHu4GbkpeZmXWT1yp3snVXPacWSNcRdD519m0R8TlJv6GdMYSI+GBOIzMz6+GeX9UynlAcLYWWp6t9Ix+BmJn1NnNXb2P04L4cOmJA2qG06jApRMT85P2p/IVjZtY7tIwnnDJlROqT4LXVWffRYjq59DQiZuQkIjOzXmDttt1sqq4tqK4j6Lz76Pzk/drkvaU76aNkJskzM7MueiG5P+HUYkkKEfE6gKQzIuKMNqtukPQc8G+5Ds7MrKd6YdU2hg/sw+GjB6Udyl6yuU9hoKQzWxYknQ4MzF1IZmY939w1W5k1aXhBjSdAdknhauB2SWskrQHuAK46kEol/ZOklyUtkXSfpH6Shkt6XNKK5L0wZocyM+tmG3bs4Y1tewpuPAGySAoRMT8ijgNmAMdFxPERsaCrFUoaR2aqjJkRcQxQSuYZ0DcAcyJiKjAnWTYz63GeW7kFgFOnFM5Nay32e0ezpL7Ah4FJQFlLUyciDmRMoQzoL6kBGABsAG4EzkrW3wM8CfzrAdRhZlaQnl25hZGD+jDt4MFph/J/ZNN9NBu4AGgEdrV5dUlErCdzQ9xaYCNQFRF/AMZExMZkm43A6Pb2l3SNpHmS5lVWVnY1DDOzVDQ3B8+t3MIZh4+kpKSwxhMgu1lSx0fEed1VYTJWcAGZZzLsAP5H0sey3T8i7gTuBJg5c6an8DazorJ8Uw1bdtZz5uEj0w6lXdm0FP4s6dhurPPdwOqIqIyIBuBXwOnAZkljAZL3im6s08ysIDy7MtPD8bapo1KOpH3ZJIUzgfmSXpG0SNJiSYsOoM61wKmSBigzQHE2sAx4BLgy2eZKMt1WZmY9yjMrtnD46EEcPLRf2qG0K5vuo/d2Z4UR8YKkB4EFZMYpXiTTHTQIeEDS1WQSxyXdWa+ZWdpqG5qYu3obl82amHYoHcrmeQqvJzevTY2IuyWNIvMF3mUR8WXgy/sU15FpNZiZ9UjzX99OXWMzb5tamOMJkEX3kaQvk7k09MakqBz4eS6DMjPriZ5ZsYWyEnFKAd6f0CKbMYWLgA+SXIYaERuAwru41syswD27spITJg5jUN9seu7TkU1SqI+IIJlGW5LnPTIze4u27arn5Q3VnHl4YV511CKbpPCApB8CwyT9PfBH4Ee5DcvMrGd5duUWIuDMAh5PgOwGmr8h6RygGjgCuDkiHs95ZGZmPcgTyzYzfGAfjp8wLO1QOpVtx9ZioD+ZLqTFuQvHzKznaWxq5slXK3nXtNGUFuDUFm1lc/XR3wFzgQ8BFwPPSzqgqbPNzHqTBWt3sGN3A2dPG5N2KPuVTUvh88AJEbEVQNII4M/AXbkMzMysp5izfDNlJeLtRxT2eAJkN9C8Dqhps1wDvJGbcMzMep4nllVwypThDO5XnnYo+5VNS2E98IKk2WTGFC4A5kr6Z4CI+GYO4zMzK2prt+5mRcVOLi3gqS3ayiYpvJa8WrRMVOcb2MzM9uOJ5ZsBePdR7T4ipuBkc0nqVyFz01pEdPnhOmZmvdGc5RUcNmogh44ojvt+s7n66DRJS8lMb42k4yTdkfPIzMyK3M66Rp5ftZWzjyr8q45aZDPQfBtwLrAVICJeAt6ew5jMzHqEZ16tpKEpeNe04ug6guySAhGx79VGTTmIxcysR3l0ySaGD+zDzEMPSjuUrGWTFN6QdDoQkvpIup6kK8nMzNpX29DEnGWbOffoMZSVZvX7uyBkE+k/ANcC48jcs3B8smxmZh14+tVKdtU38d5jxqYdyluSzdVHW4CP5iEWM7Me49Elmxg2oJzTDivcB+q0p9OWgqR3SvqVpJeT14OSzspPaGZmxamusYk/Lt3Me6aPobyIuo6gk6Qg6f1k5jf6DXA5mdbC74C7JL0vP+GZmRWfZ1dsoaaukfceW1xdR9B599HngQuTS1BbLJQ0D/gumQTRJZKGAT8GjiEzdcZVwCvAL4FJwBrgbyJie1frMDNLy+8Wb2JIvzLOOKzwJ8DbV2ftmoP3SQgARMQi4EDvxPg28FhETAOOI3M10w3AnIiYCsxJls3Mikp9YzOPL93EOdMPpk9ZcXUdQedJobMpLbo83YWkIWRufvsJQETUR8QOMhPt3ZNsdg9wYVfrMDNLy3OvbaG6tpH3HXtw2qF0SWfdR4dJeqSdcgFTDqDOKUAlcLek44D5wGeBMRGxESAiNkoqnlsAzcwSjyzcwOB+ZQX/LOaOdJYULuhk3TcOsM4Tgesi4gVJ3+YtdBVJuga4BmDixOKYitbMeodddY08tmQTF55wCH3LStMOp0s6TAoR8VSO6lwHrIuIF5LlB8kkhc2SxiathLFARQdx3QncCTBz5szIUYxmZm/Z71/exJ6GJi46YXzaoXRZ3kdBImITmakzjkyKzgaWAo8AVyZlV/LmcxvMzIrCwy+uZ/xB/YtqrqN9ZfOQnVy4DrhXUh9gFfAJMgnqAUlXA2uBS1KKzczsLdtUVctzK7fw6XceTkmJ0g6ny7JOCt35kJ2IWAjMbGfV2d1xfDOzfJu9cD3NARedWLxdR5DdQ3ZO90N2zMw69/CL6zl+wjAmjyyOJ6x1JJsxhW/hh+yYmXVo6YZqlm+q4UMnjks7lAPmh+yYmR2ghxaso6xEnD/jkLRDOWDZjCns9ZAd4DP4ITtmZkDmYToPLVjHuUcfzPCBfdIO54D5ITtmZgfg0SUb2bG7gctm9Yybaf2QHTOzA3DfC29w6IgBnF5kD9PpSIdJQdJ3yUxr3a6I+ExOIjIzKxIrNtcwd802bnjvtKK+N6GtzloK8/IWhZlZEfrF3LWUl4qLTyruexPa6mzuo3vaLidTXkdE1OQ8KjOzAlfb0MRD8zMDzCMH9U07nG6Tzc1rMyUtBhYBSyS9JOmk3IdmZla4/nfRRqprG7n8lJ4xwNwim0tS7wI+FRHPAEg6E7gbmJHLwMzMClVEcM9f1jBl5EBOm9IzBphbZHNJak1LQgCIiGcBdyGZWa817/XtLFpXxVVnTkbqGQPMLTq7+ujE5ONcST8E7iNzNdJHgCdzH5qZWWH68TOrGDagnA8X+eR37ems++i/9ln+cpvPfriNmfVKr2/dxR+WbuZTZx1G/z7F+XS1znR29dE78xmImVkxuPu5NZSViCtOm5R2KDmR1fMUJL0fOBro11IWEf+Wq6DMzApR1Z4GHpj3Bh847hDGDOm3/x2KUDaXpP6AzDjCdYDIPBHt0BzHZWZWcO6fu5bd9U1cfebktEPJmWyuPjo9Iq4AtkfEV4HTgAm5DcvMrLDUNjTx42dXc/phIzj6kKFph5Mz2SSFPcn7bkmHAA1Az02TZmbtuH/uWipr6vjM2VPTDiWnshlT+K2kYcCtwAIyVx79OJdBmZkVkrrGJn7w1CpmTRrOqT3sZrV9ZTN19teSjw9J+i3QLyKqDrRiSaVkJt1bHxHnSxoO/BKYBKwB/iYith9oPWZmB+p/5q1jU3Ut37jkuLRDybkOu48kvSt5/1DLC3g/cHby+UB9lr2f4HYDMCcipgJzkmUzs1TVNzbz/Sdf48SJwzjj8J7dSoDOxxTekbx/oJ3X+QdSqaTxZBJM226oC4CWmVnvAS48kDrMzLrDwy+uY/2OPXzm7Kk9bkqL9nR289qXJZUAj0bEA91c723AF4DBbcrGRMTGpO6NkkZ3c51mZm9JbUMT35mzkuPGD+UdR4xKO5y86PTqo4hoBj7dnRVKOh+oiIj5Xdz/GknzJM2rrKzsztDMzPby8+dfZ/2OPXzhvGm9opUA2V2S+rik6yVNkDS85XUAdZ4BfFDSGuB+4F2Sfg5sljQWIHmvaG/niLgzImZGxMxRo3pH5jaz/Kva08D3/rSStx8xijMOH5l2OHmTTVK4CrgWeBqYn7y6/KjOiLgxIsZHxCTgUuCJiPgY8AhwZbLZlcDsrtZhZnagvv/ka1TtaeCG86alHUpeZXNJar5uVLsFeEDS1cBaMtNpmJnl3YYde7j7udVcdPw4ph8yJO1w8irbCfGOAaaz94R4/32glUfEkyTPZoiIrcDZB3pMM7MD9c3HXyUC/vk9R6QdSt7tNylI+jJwFpmk8DvgvcCzwAEnBTOzQvPi2u08OH8dn3z7FMYfNCDtcPIumzGFi8n8gt8UEZ8AjgP65jQqM7MUNDUHN89+mTFD+nJdD5/jqCNZTYiXXJraKGkImauCpuQ2LDOz/Ltv7loWr6/ipvdPZ1DfrHrXe5xsznpeMiHej8hcebQTmJvLoMzM8m3brnpu/f0rnDZlBB+YMTbtcFLTYVKQ9D3gFxHxqaToB5IeA4ZExKK8RGdmlif/+dhydtU18tULju41N6q1p7OWwgrgv5IbyX4J3BcRC/MSlZlZHv155Rbu/+sbXPP2KRwxZvD+d+jBOhxTiIhvR8RpZCbG2wbcLWmZpJsl9b7rtMysR9pV18gXHlrE5JED+ad3+6ttvwPNEfF6RPxHRJwAXA5cxN5TXpuZFa3/eGw563fs4T8vnkH/PqVph5O6/SYFSeWSPiDpXuBR4FXgwzmPzMwsx55ftZX//svrfPz0SZw86UCmdOs5OhtoPge4jMxzD+aSmbzumojYlafYzMxypqa2gS88uIhDRwzg8+cemXY4BaOzgeYvAr8Aro+IbXmKx8ws5yKCL/16Ceu27+aXnzyNAX165z0J7ensITvvzGcgZmb58uD8dcxeuIF/PucIdxvtI5s7ms3MeozXKndy8+yXOXXKcK595+Fph1NwnBTMrNeobWji0794kX7lJdz2kRMoLem9N6l1xB1pZtYrRAT/+tAilm+q5q4rT+bgof32v1Mv5JaCmfUKP3pmFbMXbuBfzjmCd04bnXY4BctJwcx6vKdereSWR5fzvmMP9jjCfjgpmFmPtrKihut+sYAjxgzm1ouP69WT3WXDScHMeqxNVbVc8ZO59Ckr5UdXzGRgL31GwlvhpGBmPVLVngY+fvdcqvY08NNPnMyE4b3v0Zpd4bRpZj1ObUMTn/zZPF6r3MldHz+ZY8YNTTukopH3loKkCZL+lEzD/bKkzyblwyU9LmlF8n5QvmMzs+JX19jEJ382nxdWb+PWi4/jbVNHpR1SUUmj+6gR+JeIOAo4FbhW0nTgBmBOREwF5iTLZmZZq2ts4h9/viBztdGHjuXCE8alHVLRyXtSiIiNEbEg+VxD5tkM44ALgHuSze4BLsx3bGZWvOobm7n23gU8sbyC/3fRsXzk5Ilph1SUUh1oljQJOAF4ARgTERshkziAdu8ukXSNpHmS5lVWVuYtVjMrXDvrGrnqp3/lj8sq+NoFR3P5KU4IXZVaUpA0CHgI+FxEVGe7X0TcGREzI2LmqFHuKzTr7bburOOjP3qev6zayq0Xz+BvT5uUdkhFLZWrjySVk0kI90bEr5LizZLGRsRGSWOBijRiM7Pi8ca23Vx591zWb9/DDz92Eu+ePibtkIpeGlcfCfgJsCwivtlm1SPAlcnnK4HZ+Y7NzIrHC6u2csHtz7Glpo6f/90pTgjdJI2WwhnA3wKLJS1Myr4I3AI8IOlqYC1wSQqxmVkRuH/uWr706yVMHDGAH18xkymjBqUdUo+R96QQEc8CHU0+cnY+YzGz4lLb0MTXfruUe19Yy9umjuR7l5/I0P7laYfVo/iOZjMrCqu37OJT9y5g2cZqPvn2KXz+3CMpK/VMPd3NScHMClpE8KsF67l59hLKy0q46+Mzedc0jx/kipOCmRWsypo6vvjwYh5fupmTJx3Ety89gUOG9U87rB7NScHMCk5E8MhLG/jKIy+zq76Jm953FFedOdnPVM4DJwUzKyivVe7k5tlLeG7lVo6bMIz/umQGh48enHZYvYaTgpkVhJraBu548jV+8sxq+paXJNNVHOrWQZ45KZhZqhqamrl/7lpu++MKtu6q50MnjOOG901j9OB+aYfWKzkpmFkqGpuamb1wA999YgVrtu7mlMnDufv9RzFj/LC0Q+vVnBTMLK/qG5t55KUN3P6nlazesoujxg7hR1fM5N1HjSYzC46lyUnBzPKiuraB+15Yy93PrWFTdS3TDh7MDz52Eu+ZPoYSjxsUDCcFM8uplzdU8fPn1zJ74Xp21zdxxuEjuOXDx/KOI0a5ZVCAnBTMrNtV7W7gN4s28OD8dSx8Ywf9ykv44HGHcMVpkzhm3NC0w7NOOCmYWbeobWjiyVcq+M1LG3l82WbqG5s5YswgvvT+o7jkpAkMHeCJ64qBk4KZdVnVngaeerWSx5duZs6yzeyub2LEwD5cPmsiHz5xPMeMG+IuoiLjpGBmWYsIlm+q4elXK3nq1Urmrt5GY3MwYmAfLjxhHOcfO5ZZk4d79tIi5qRgZh2KCFZt2cXzq7bywqpt/GXVVipr6gA4Yswg/u5tUzhn+hiOnzDMdx73EE4KZtaqak8DS9ZXsfCNHby4djsL1u5g2656AMYM6ctpU0Zw5tSRvH3qKA4e6juOeyInBbNeKCLYUFXLK5uqWbaxhqUbqlm6sZrVW3a1bjNl1EDOnjaakw49iFOmjGDSiAEeH+gFnBTMerDd9Y2s3babNVt28VrlLlZV7mJl5U5Wbq5hV31T63YThvdn+tghXHzSeGaMH8qx44YybECfFCO3tDgpmBWpiKBqTwMbq2rZVFXLhqo9bNixh3XbM6/Xt+5my866vfYZPbgvh40axMUnjWfqmMEcefBgph08mMH9fLmoZRRcUpB0HvBtoBT4cUTcknJIZnlT39jMjt31bN/dwPbd9WzdWc+2XXVs3VXPlp11bKmpp3JnHRU1tWyurqO+sXmv/ctKxCHD+jNuWH/eNW0Uh44YyMThA5g0YiCTRw1kUN+C+5O3AlNQ/0IklQK3A+cA64C/SnokIpamG5lZx5qag9qGJnbXN7GnvondDY3srm9id10Tu+ob2VWXee2sa2JnXQM7axupqW2kuraR6toGqvdkXjv2NLC7TZfOvg4aUM7IQX0ZOagvJ008iDFD+jFqcF/GDu3P2GH9GDu0H6MH9/NVQHZACiopALOAlRGxCkDS/cAFgJNCkYkIIiCA5uRzc2tZ0Nyy3Jx5b46gqc12zQHNzUFTc7y5vpnW5abmzPZNLdsky43NQVNT8t4cNDY309iUeW9oChqbmmlsjtbPDU3NNDQHDY3N1CfLdY3N1Cevtst1jc3UNjRR29hEXUPyuSGzX7ZKS8SgvmUM6lvGkP7lDOlXxviDBjBsXDnD+pcztH85wwb24aAB5Rw0oA/DB/ZhxMA+HDSwD+W+9t/yoNCSwjjgjTbL64BTuruS5Zuq+fQvXtzvdhGx/232W9Bp8V51xF7lbfeN9sv3+vx/j9PyBdx229hrv9inPPbaJiLZO95cH22OG23L90kAxaRPaQllpaJPWQl9SksoLy2hb1lJZrks87lfeSlD+pfTr7yEvmWlrWX9ykvpX15Kv/ISBvQppX+fMvqXlzKgbykD+5QxoE8pg/qWMTBJBP3KS3wFjxW0QksK7f217PUVI+ka4BqAiRMndqmSfmWlHDkmy2e+ZvH3u+8mHf3Rd3Sotptrr3K1W85e26v1GHvv++b61s9qs1fr+g62bVN/5thqrUPKrGvZpqW8RG23yXwuad0uU9ayTWnLthKlgpISJesz61q3K8l8LikRpRKlJZljlpa0ebWsLxFlJaKspISSEigvLWldLivNrCstEeVlJZS3KfOXtNmbCi0prAMmtFkeD2xou0FE3AncCTBz5swu/SadNHIgt3/0xK7GaGbWYxVaJ+VfgamSJkvqA1wKPJJyTGZmvUZBtRQiolHSp4Hfk7kk9a6IeDnlsMzMeo2CSgoAEfE74Hdpx2Fm1hsVWveRmZmlyEnBzMxaOSmYmVkrJwUzM2vlpGBmZq2UzVQOhUpSJfB62nF0wUhgS9pBpKA3nndvPGfoneddTOd8aESMam9FUSeFYiVpXkTMTDuOfOuN590bzxl653n3lHN295GZmbVyUjAzs1ZOCum4M+0AUtIbz7s3njP0zvPuEefsMQUzM2vlloKZmbVyUkiZpOslhaSRaceSD5JulbRc0iJJD0salnZMuSLpPEmvSFop6Ya048k1SRMk/UnSMkkvS/ps2jHli6RSSS9K+m3asRwoJ4UUSZoAnAOsTTuWPHocOCYiZgCvAjemHE9OSCoFbgfeC0wHLpM0Pd2ocq4R+JeIOAo4Fbi2F5xzi88Cy9IOojs4KaTrW8AX6PgRzj1ORPwhIhqTxefJPF2vJ5oFrIyIVRFRD9wPXJByTDkVERsjYkHyuYbMl+S4dKPKPUnjgfcDP047lu7gpJASSR8E1kfES2nHkqKrgEfTDiJHxgFvtFleRy/4gmwhaRJwAvBCyqHkw21kftw1pxxHtyi4h+z0JJL+CBzczqqbgC8C78lvRPnR2XlHxOxkm5vIdDfcm8/Y8kjtlPWKFqGkQcBDwOciojrteHJJ0vlARUTMl3RWyuF0CyeFHIqId7dXLulYYDLwkiTIdKEskDQrIjblMcSc6Oi8W0i6EjgfODt67jXR64AJbZbHAxtSiiVvJJWTSQj3RsSv0o4nD84APijpfUA/YIikn0fEx1KOq8t8n0IBkLQGmBkRxTKZVpdJOg/4JvCOiKhMO55ckVRGZiD9bGA98Ffg8p78zHFlfuHcA2yLiM+lHE7eJS2F6yPi/JRDOSAeU7B8+x4wGHhc0kJJP0g7oFxIBtM/DfyezIDrAz05ISTOAP4WeFfy/3Zh8gvaiohbCmZm1sotBTMza+WkYGZmrZwUzMyslZOCmZm1clIwM7NWTgqWKklPSjp3n7LPSbrjLRzj3yS9O/m8pr0ZZyV9RdL1b+GYH5f0vWy3T/b5qaSL38o+3aVtvJL+QdIVXTzOJEmXd290VkycFCxt9wGX7lN2aVK+X5JKI+LmiPhjt0dWpCLiBxHx313cfRLgpNCLOSlY2h4EzpfUF1onUjsEeFbS9yXNS+bm/2rLDklr4GZJzwKXtPML/fOS5iavw/etUNJhkh6TNF/SM5KmdRZgcvzvSPqzpFUtdSnje5KWSvpfYHSbfU6S9FRSx+8ljU3Kn5R0W3KsJZJmJeUDJd0l6a/JvPwXJOUfl/SrJN4Vkv6zTR2fkPSqpKfI3DjWUt7aKuroXDs6J+AW4G3JjWf/lDwn4NYkrkWSPtn5/04rdk4KlqqI2ArMBc5Lii4FfpnMiXRTRMwEZgDvkDSjza61EXFmRNzfzmGrI2IWmbunb2tn/Z3AdRFxEnA9kE1X1VjgTDJzNt2SlF0EHAkcC/w9cDq0zv/zXeDipI67gK+3OdbAiDgd+FSyDjKTJD4REScD7wRulTQwWXc88JGkno8o8zCbscBXySSDc8g8s6E9nZ1re+d0A/BMRBwfEd8CrgaqkrhOBv5e0uT9/+eyYuUJ8awQtHQhzU7er0rK/0bSNWT+nY4l88W3KFn3y/0cr+X9W21XJDN4ng78TzIZIUDfLGL8dUQ0A0sljUnK3g7cFxFNwAZJTyTlRwLHkJnKA6AU2LhvfBHxtKQhyjx97j1kJlZrGffoB0xMPs+JiKok/qXAocBI4MmW+aMk/RI44i2ea3vntK/3ADPatCSGAlOB1R1sb0XOScEKwa+Bb0o6EegfEQuSX6PXAydHxHZJPyXzRdliVyfHiw4+Q6Z1vCMijn+LMda1+dx2Wuz25okR8HJEnJZFfC3LAj4cEa/sdSDplH3qbuLNv9v9zVGzv3Pt6JzYp/y6iPj9fuqyHsLdR5a6iNgJPEmmK6XlV/4QMl/8Vcmv2Pe+hUN+pM37X/apqxpYLekSaB0XOK6LoT8NXJr0u48l0+0D8AowStJpSR3lko7eNz5JZ5LpmqkiM3HedUp+0ks6YT91vwCcJWlE0l11yb4bdPFca8hMWNji98A/JnUg6Yg23VrWA7mlYIXiPuBXJFciRcRLkl4EXgZWAc+9hWP1lfQCmR89l7Wz/qPA9yV9CSgn86jMrjwB72HgXcBiMtNkP5XEXp90t3xH0lAyf2e3JecCsF3Sn8kkvpausq8l2yxKEsMaMn397YqIjZK+QibpbQQWkOmmOtBzXQQ0SnoJ+CnwbTJXJC1I4qoELuxkfytyniXVLI8kPUlmzv15acdi1h53H5mZWSu3FMzMrJVbCmZm1spJwczMWjkpmJlZKycFMzNr5aRgZmatnBTMzKzV/wfwUqTMl6QXkAAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "x = np.arange(-5.0,5.0,0.1)\n", + "\n", + "y = np.exp(x)\n", + "\n", + "plt.plot (x,y)\n", + "plt.xlabel('Varible Independiente')\n", + "plt.ylabel('Variable Dependiente')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "MuQehq-qR6vk" + }, + "source": [ + "# Logaritmica\n", + "La respuesta 𝑦 es el resultado de aplicar un mapa logarítmico de la entrada 𝑥 a la variable de salida 𝑦. Es una de las formas más simples de __log ()__: es decir\n", + "$$ 𝑦 = log (𝑥)$$\n", + " \n", + "Tenga en cuenta que en lugar de 𝑥, podemos usar 𝑋, que puede ser una representación polinomial de las 𝑥. En forma general, se escribiría como\n", + "$$ 𝑦 = log (𝑋)$$" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "id": "RR_2P3J1R6vm", + "outputId": "6f82fd1d-193c-4095-f210-528fcb1c5829" + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ":3: RuntimeWarning: invalid value encountered in log\n", + " y = np.log(x)\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "x = np.arange(-5.0,5.0,0.1)\n", + "\n", + "y = np.log(x)\n", + "\n", + "plt.plot (x,y)\n", + "plt.xlabel('Varible Independiente')\n", + "plt.ylabel('Variable Dependiente')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "EGpZzcmFR6v0" + }, + "source": [ + "# Sigmoidal Logistica \n", + " $$ Y = a + \\frac{b}{1 + c^{(X-d)}}$$" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "id": "tpckO09lR6v5", + "outputId": "99f625ae-5982-4185-9fd5-b63fd2606e4d" + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# funcion de activación sigmoide\n", + "x = np.arange(-5.0,5.0,0.1)\n", + "\n", + "y = 1-4/(1+np.power(3, x-2))\n", + "\n", + "plt.plot (x,y)\n", + "plt.xlabel('Varible Independiente')\n", + "plt.ylabel('Variable Dependiente')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "TdUF4b50R6wD" + }, + "source": [ + "# Ejemplo de Regresión No Lineal\n", + "Por ejemplo, intentaremos ajustar un modelo no lineal a los puntos de datos correspondientes al PIB de China de 1960 a 2014. Descargamos un conjunto de datos con dos columnas, la primera, un año entre 1960 y 2014, la segunda, Ingreso interno bruto anual correspondiente de China en dólares estadounidenses para ese año." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "id": "1oOn5_NkR6wF" + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "import pandas as pd" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "id": "BhQNXYqwR6wM", + "outputId": "658a3621-0fc5-4008-8c27-28a091fdc353" + }, + "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", + "
YearValue
019605.918412e+10
119614.955705e+10
219624.668518e+10
319635.009730e+10
419645.906225e+10
519656.970915e+10
619667.587943e+10
719677.205703e+10
819686.999350e+10
919697.871882e+10
1019709.150621e+10
1119719.856202e+10
1219721.121598e+11
1319731.367699e+11
1419741.422547e+11
1519751.611625e+11
1619761.516277e+11
1719771.723490e+11
1819781.483821e+11
1919791.768565e+11
\n", + "
" + ], + "text/plain": [ + " Year Value\n", + "0 1960 5.918412e+10\n", + "1 1961 4.955705e+10\n", + "2 1962 4.668518e+10\n", + "3 1963 5.009730e+10\n", + "4 1964 5.906225e+10\n", + "5 1965 6.970915e+10\n", + "6 1966 7.587943e+10\n", + "7 1967 7.205703e+10\n", + "8 1968 6.999350e+10\n", + "9 1969 7.871882e+10\n", + "10 1970 9.150621e+10\n", + "11 1971 9.856202e+10\n", + "12 1972 1.121598e+11\n", + "13 1973 1.367699e+11\n", + "14 1974 1.422547e+11\n", + "15 1975 1.611625e+11\n", + "16 1976 1.516277e+11\n", + "17 1977 1.723490e+11\n", + "18 1978 1.483821e+11\n", + "19 1979 1.768565e+11" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df = pd.read_csv(\"D:/TECHNOLOGY 2020/Data/china_gdp.csv\")\n", + "df.head(20)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "H4OrOl3JR6wQ" + }, + "source": [ + "# Plotting the Dataset\n", + "Así es como se ven los puntos de datos. Parece una función logística o exponencial. El crecimiento comienza lento, luego desde 2005 en adelante, el crecimiento es muy significativo. Y finalmente, se desaceleró levemente en la década de 2010." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "id": "TBaiLXbgR6wR", + "outputId": "20b76870-b250-4e08-fba7-ab04fa49d138" + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure (figsize=(8,5))\n", + "x_data, y_data = (df[\"Year\"].values, df[\"Value\"].values)\n", + "plt.plot (x_data, y_data, 'ro')\n", + "plt.ylabel(\"PBI\")\n", + "plt.xlabel(\"Year\")\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "8Seo0G9DR6wX" + }, + "source": [ + "# Elegir un modelo\n", + "A partir de una mirada inicial a la gráfica, determinamos que la función logística podría ser una buena aproximación, ya que tiene la propiedad de comenzar con un crecimiento lento, aumentar el crecimiento en el medio y luego volver a disminuir al final; como se ilustra a continuación:" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "id": "2WhL94m4R6wY", + "outputId": "98db25ec-5f83-4edd-ad39-7de1497dc40e" + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "X = np.arange(-5.0, 5.0, 0.1)\n", + "Y = 1.0 / (1.0 + np.exp(-X))\n", + "\n", + "plt.plot(X,Y) \n", + "plt.ylabel('Dependent Variable')\n", + "plt.xlabel('Indepdendent Variable')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "tBUVwgpLR6wg" + }, + "source": [ + "La fórmula de la función logística es la siguiente:\n", + "$$ \\hat{Y} = \\frac1{1+e^{\\beta_1(X-\\beta_2)}}$$\n", + "\n", + "$\\beta_1$: Controls the curve's steepness,\n", + "\n", + "$\\beta_2$: Slides the curve on the x-axis.\n", + " # Construyendo el modelo\n", + " Construyendo el modelo de regresión e inicialicemos sus parámetros." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "id": "9xyz2dgqR6wh" + }, + "outputs": [], + "source": [ + "def sigmoid(x, Beta_1, Beta_2):\n", + " y = 1 / (1 + np.exp(-Beta_1*(x-Beta_2)))\n", + " return y" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "V6S5itBTR6wo" + }, + "source": [ + "Veamos una línea sigmoidea de muestra que podría encajar con los datos:" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "id": "H3bOh3qJR6wq", + "outputId": "334c829a-ce21-41da-acbb-7fe6d4a5e19a" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "beta_1 = 0.10\n", + "beta_2 = 1990.0\n", + "\n", + "#logistic function\n", + "Y_pred = sigmoid(x_data, beta_1 , beta_2)\n", + "\n", + "#plot initial prediction against datapoints\n", + "plt.plot(x_data, Y_pred*15000000000000.)\n", + "plt.plot(x_data, y_data, 'ro')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "-d9lomv3R6wv" + }, + "source": [ + "Nuestra tarea aquí es encontrar los mejores parámetros para nuestro modelo. Primero normalicemos nuestra xey:" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "id": "0OM8H6G1R6ww" + }, + "outputs": [], + "source": [ + "# Lets normalize our data\n", + "xdata =x_data/max(x_data)\n", + "ydata =y_data/max(y_data)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "XtFT63yPR6w0" + }, + "source": [ + "# ¿Cómo encontramos los mejores parámetros para nuestra línea de ajuste?\n", + "\n", + "podemos usar **curve_fit**, que usa mínimos cuadrados no lineales para ajustar nuestra función sigmoidea a los datos. Valores óptimos para los parámetros de modo que la suma de los residuos al cuadrado de sigmoide (xdata, * popt) - ydata se minimice.\n", + "\n", + "Son nuestros parámetros optimizados." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "id": "7iEzYYk9R6w1", + "outputId": "55ada668-f067-4c51-c07b-2c07411de628" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " beta_1 = 690.451711, beta_2 = 0.997207\n" + ] + } + ], + "source": [ + "from scipy.optimize import curve_fit\n", + "popt, pcov = curve_fit(sigmoid, xdata, ydata)\n", + "#print the final parameters\n", + "print(\" beta_1 = %f, beta_2 = %f\" % (popt[0], popt[1]))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "nDcv14gbR6w8" + }, + "source": [ + "Ahora trazamos nuestro modelo de regresión resultante." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "id": "d-wagYExR6w9", + "outputId": "baf82938-94f3-43b0-8bef-6b95a34481bf" + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "x = np.linspace(1960, 2015, 55)\n", + "x = x/max(x)\n", + "plt.figure(figsize=(8,5))\n", + "y = sigmoid(x, *popt)\n", + "plt.plot(xdata, ydata, 'ro', label='data')\n", + "plt.plot(x,y, linewidth=3.0, label='fit')\n", + "plt.legend(loc='best')\n", + "plt.ylabel('GDP')\n", + "plt.xlabel('Year')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ezbBxJd-R6xD" + }, + "source": [ + "# Práctica \n", + "¿Puedes calcular cuál es la precisión de nuestro modelo?" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "id": "uD6_a8quR6xD", + "outputId": "1406c296-88b3-4eb4-b1ba-4a9c3a9f5aeb" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Mean absolute error: 0.04\n", + "Residual sum of squares (MSE): 0.00\n", + "R2-score: 0.96\n" + ] + } + ], + "source": [ + "# write your code here\n", + "\n", + "# split data into train/test\n", + "msk = np.random.rand(len(df)) < 0.8\n", + "train_x = xdata[msk]\n", + "test_x = xdata[~msk]\n", + "train_y = ydata[msk]\n", + "test_y = ydata[~msk]\n", + "\n", + "# build the model using train set\n", + "popt, pcov = curve_fit(sigmoid, train_x, train_y)\n", + "\n", + "# predict using test set\n", + "y_hat = sigmoid(test_x, *popt)\n", + "\n", + "# evaluation\n", + "print(\"Mean absolute error: %.2f\" % np.mean(np.absolute(y_hat - test_y)))\n", + "print(\"Residual sum of squares (MSE): %.2f\" % np.mean((y_hat - test_y) ** 2))\n", + "from sklearn.metrics import r2_score\n", + "print(\"R2-score: %.2f\" % r2_score(y_hat , test_y) )" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "uwGKyZS9R6xI" + }, + "source": [ + "# Gracias " + ] + } + ], + "metadata": { + "colab": { + "include_colab_link": true, + "name": "Lab_09_Análisis_Regresión No Lineal.ipynb", + "provenance": [] + }, + "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.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} From 9b0f5c9d0b3ab7d4434f368dc22cc711002e1bf8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20Quispe?= <47084770+RubenMcCarty@users.noreply.github.com> Date: Sat, 28 Nov 2020 11:54:16 -0500 Subject: [PATCH 08/51] K-NN --- ...Nearest_Neighbors_Servicios_Clientes.ipynb | 806 ++++++++++++++++++ 1 file changed, 806 insertions(+) create mode 100644 Lab_06_K_Nearest_Neighbors_Servicios_Clientes.ipynb diff --git a/Lab_06_K_Nearest_Neighbors_Servicios_Clientes.ipynb b/Lab_06_K_Nearest_Neighbors_Servicios_Clientes.ipynb new file mode 100644 index 0000000..bd3287d --- /dev/null +++ b/Lab_06_K_Nearest_Neighbors_Servicios_Clientes.ipynb @@ -0,0 +1,806 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "view-in-github" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "5UluWz2hmTu4" + }, + "source": [ + "# K- Nearest Neighbors para Predecir Servicios de tipos de Clientes \n", + "## Creado por [M.Sc. Ruben Quispe](https://machinelearningmastery.com/tutorial-to-implement-k-nearest-neighbors-in-python-from-scratch/)\n", + "### Curso [Machine Learning](https://eie.pe/curso-machine-learning/)\n", + "En este laboratorio, cargará un conjunto de datos de un cliente, ajustará los datos y usará K-Vecinos más cercanos para predecir un punto de datos. Pero, ¿qué son los K-vecinos más cercanos?\n", + "\n", + "K-Neighbors Neighbors es un algoritmo de aprendizaje supervisado. Donde los datos están 'entrenados' con puntos de datos correspondientes a su clasificación. Una vez que se va a predecir un punto, tiene en cuenta los puntos 'K' más cercanos a él para determinar su clasificación.\n", + "\n", + "## Aquí hay una visualización del algoritmo K-Neighbors Neighbors.\n", + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "cJTaoeK4mTu7" + }, + "source": [ + "En este caso, tenemos puntos de datos de Clase A y B. Queremos predecir cuál es la estrella (punto de datos de prueba). Si consideramos un valor k=3 (3 puntos de datos más cercanos) obtendremos una predicción de Clase B. Sin embargo, si consideramos un valor k=6, obtendremos una predicción de Clase A.\n", + "\n", + "En este sentido, es importante considerar el valor de k. Pero, con suerte, a partir de este diagrama, debería tener una idea de lo que es el algoritmo K-Neighbors. Considera los'K'vecinos más cercanos (puntos) cuando predice la clasificación del punto de prueba.\n", + "\n", + "# Tabla de contenido\n", + "1. Sobre el dataset\n", + "2. Análisis y Visualización de Datos\n", + "3. Clasificación" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "A3GJl8jSmTu8" + }, + "source": [ + "# 1. Importando las librerías necesarias" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "id": "eyttO6VqmTu-" + }, + "outputs": [], + "source": [ + "import itertools\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "from matplotlib.ticker import NullFormatter\n", + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.ticker as ticker\n", + "from sklearn import preprocessing\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "OEPqvpblmTvE" + }, + "source": [ + "# 2. Sobre el conjunto de datos\n", + "Imagine que un proveedor de telecomunicaciones ha segmentado su base de clientes por patrones de uso del servicio, categorizando a los clientes en cuatro grupos. Si los datos demográficos se pueden utilizar para predecir la pertenencia a un grupo, la empresa puede personalizar ofertas para posibles clientes individuales. Es un problema de clasificación. Es decir, dado el conjunto de datos, con etiquetas predefinidas, necesitamos construir un modelo que se utilizará para predecir la clase de un caso nuevo o desconocido.\n", + "\n", + "El ejemplo se centra en el uso de datos demográficos, como región, edad y matrimonio, para predecir patrones de uso.\n", + "\n", + "El campo de destino, denominado custcat, tiene cuatro valores posibles que corresponden a los cuatro grupos de clientes, de la siguiente manera:\n", + "* 1- Servicio básico\n", + "* 2- Servicio electrónico\n", + "* 3- Servicio Plus\n", + "* 4- Servicio total\n", + "\n", + "Nuestro objetivo es construir un clasificador, para predecir la clase de casos desconocidos. Usaremos un tipo específico de clasificación llamado K vecino más cercano.\n", + "\n", + "# 3. Carga los datos desde un archivo csv" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "id": "RzrWu6mZmTvF", + "outputId": "a790a4f8-34cf-45ca-bd1c-84d45e218fb4" + }, + "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", + "
regiontenureagemaritaladdressincomeedemployretiregenderresidecustcat
0213441964.0450.0021
13113317136.0550.0064
236852124116.01290.0123
32333301233.0200.0111
4223301930.0120.0043
\n", + "
" + ], + "text/plain": [ + " region tenure age marital address income ed employ retire gender \\\n", + "0 2 13 44 1 9 64.0 4 5 0.0 0 \n", + "1 3 11 33 1 7 136.0 5 5 0.0 0 \n", + "2 3 68 52 1 24 116.0 1 29 0.0 1 \n", + "3 2 33 33 0 12 33.0 2 0 0.0 1 \n", + "4 2 23 30 1 9 30.0 1 2 0.0 0 \n", + "\n", + " reside custcat \n", + "0 2 1 \n", + "1 6 4 \n", + "2 2 3 \n", + "3 1 1 \n", + "4 4 3 " + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df = pd.read_csv(\"D:/TECHNOLOGY 2020/Data/teleCust1000t.csv\")\n", + "df.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "MPmpFLIFmTvL" + }, + "source": [ + "# 4. Análisis y visualización de Datos\n", + "Veamos cuántos de cada clase hay en nuestro conjunto de datos" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "id": "1b4KpAv8mTvM", + "outputId": "c7f31355-6683-444f-d8cd-0fa01edcfa8d" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "3 281\n", + "1 266\n", + "4 236\n", + "2 217\n", + "Name: custcat, dtype: int64" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df['custcat'].value_counts()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "7rrruiA-mTvR" + }, + "source": [ + "281 Plus Service, 266 Basic-service, 236 Total Service, and 217 E-Service customers\n", + "\n", + "Puede explorar fácilmente sus datos utilizando técnicas de visualización:" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "id": "aYxjx6Q7mTvT", + "outputId": "54af9ee5-8883-42c7-f607-153fbdae002d" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[]], dtype=object)" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "df.hist(column = 'income', bins = 50)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "t_2h05lRmTvZ" + }, + "source": [ + "# 5. Feature set\n", + "Definamos conjuntos de características, X:" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "id": "PpMdIKBumTvb", + "outputId": "06628707-488d-4047-ab1f-30cde4f27263" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['region', 'tenure', 'age', 'marital', 'address', 'income', 'ed',\n", + " 'employ', 'retire', 'gender', 'reside', 'custcat'],\n", + " dtype='object')" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.columns" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "m4gSLEShmTvh" + }, + "source": [ + "Para usar la biblioteca scikit-learn, tenemos que convertir el marco de datos de Pandas en una matriz Numpy:" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "id": "r9bd-DjPmTvi", + "outputId": "45f8a090-34ef-4f39-ecb0-867a72b8a822" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 2., 13., 44., 1., 9., 64., 4., 5., 0., 0., 2.],\n", + " [ 3., 11., 33., 1., 7., 136., 5., 5., 0., 0., 6.],\n", + " [ 3., 68., 52., 1., 24., 116., 1., 29., 0., 1., 2.],\n", + " [ 2., 33., 33., 0., 12., 33., 2., 0., 0., 1., 1.],\n", + " [ 2., 23., 30., 1., 9., 30., 1., 2., 0., 0., 4.]])" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X = df[['region', 'tenure','age', 'marital', 'address', 'income', 'ed', 'employ','retire', 'gender', 'reside']] .values #.astype(float)\n", + "X[0:5]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "tbqgJ9VrmTvn" + }, + "source": [ + "¿cuáles son nuestras etiquetas?" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "id": "ySnElQ5WmTvo", + "outputId": "a40ca53f-6114-4c3e-e173-9150e39296e1" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([1, 4, 3, 1, 3], dtype=int64)" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "y = df['custcat'].values\n", + "y[0:5]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "2y9BYkaQmTvu" + }, + "source": [ + "# 6. Normalize Data\n", + "La estandarización de datos da a los datos una media cero y una varianza unitaria, es una buena práctica, especialmente para algoritmos como KNN, que se basa en la distancia de los casos:" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "id": "GmylOeH-mTvv", + "outputId": "6e1959ec-fab1-47be-f6f4-4472f73a04b0" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[-0.02696767, -1.055125 , 0.18450456, 1.0100505 , -0.25303431,\n", + " -0.12650641, 1.0877526 , -0.5941226 , -0.22207644, -1.03459817,\n", + " -0.23065004],\n", + " [ 1.19883553, -1.14880563, -0.69181243, 1.0100505 , -0.4514148 ,\n", + " 0.54644972, 1.9062271 , -0.5941226 , -0.22207644, -1.03459817,\n", + " 2.55666158],\n", + " [ 1.19883553, 1.52109247, 0.82182601, 1.0100505 , 1.23481934,\n", + " 0.35951747, -1.36767088, 1.78752803, -0.22207644, 0.96655883,\n", + " -0.23065004],\n", + " [-0.02696767, -0.11831864, -0.69181243, -0.9900495 , 0.04453642,\n", + " -0.41625141, -0.54919639, -1.09029981, -0.22207644, 0.96655883,\n", + " -0.92747794],\n", + " [-0.02696767, -0.58672182, -0.93080797, 1.0100505 , -0.25303431,\n", + " -0.44429125, -1.36767088, -0.89182893, -0.22207644, -1.03459817,\n", + " 1.16300577]])" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X = preprocessing.StandardScaler().fit(X).transform(X.astype(float))\n", + "X[0:5]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "DJ_urZXTmTv0" + }, + "source": [ + "# 7. División de Train & Test\n", + "\n", + "Precisión fuera de muestra es el porcentaje de predicciones correctas que hace el modelo sobre los datos en los que NO se ha entrenado. Hacer un entrenamiento y una prueba en el mismo conjunto de datos probablemente tendrá una precisión baja fuera de la muestra, debido a la probabilidad de un ajuste excesivo.\n", + "\n", + "Es importante que nuestros modelos tengan una alta precisión fuera de la muestra, porque el propósito de cualquier modelo, por supuesto, es hacer predicciones correctas sobre datos desconocidos. Entonces, ¿cómo podemos mejorar la precisión fuera de la muestra? Una forma es utilizar un enfoque de evaluación llamado División de entrenamiento / prueba. La división de entrenamiento / prueba implica dividir el conjunto de datos en conjuntos de entrenamiento y prueba, respectivamente, que son mutuamente excluyentes. Después de lo cual, entrena con el conjunto de entrenamiento y prueba con el conjunto de prueba.\n", + "\n", + "Esto proporcionará una evaluación más precisa de la precisión fuera de la muestra porque el conjunto de datos de prueba no es parte del conjunto de datos que se ha utilizado para entrenar los datos. Es más realista para problemas del mundo real." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "id": "0wxAWtPSmTv1", + "outputId": "12194223-e9a8-44a5-bc98-02d19ab14633" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train set: (800, 11) (800,)\n", + "Test set: (200, 11) (200,)\n" + ] + } + ], + "source": [ + "from sklearn.model_selection import train_test_split\n", + "X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.2, random_state=4)\n", + "print ('Train set:', X_train.shape, y_train.shape)\n", + "print ('Test set:', X_test.shape, y_test.shape)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "DgrAdyH1mTv5" + }, + "source": [ + "# 8. Clasificación\n", + "### K Nearest neighbor (KNN)\n", + "## Importando la librería\n", + "Clasificador que implementa el voto de los k vecinos más cercanos" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "id": "n00hLZbdmTv7" + }, + "outputs": [], + "source": [ + "from sklearn.neighbors import KNeighborsClassifier" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "14ftMv2cmTv_" + }, + "source": [ + "# 9. Training\n", + "comencemos el algoritmo con K=4 por ahora" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "id": "0uPIh5_GmTwA", + "outputId": "caebc207-a8b6-4aba-f03c-22a84027956d" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "KNeighborsClassifier(n_neighbors=4)" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "k = 4\n", + "#Train Model and Predict \n", + "neigh = KNeighborsClassifier(n_neighbors = k).fit(X_train,y_train)\n", + "neigh" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "51Qy5agWmTwF" + }, + "source": [ + "# 10. Prediciendo\n", + "\n", + "podemos usar el modelo para predecir el conjunto de prueba:" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "id": "IqoKvCUOmTwG", + "outputId": "fe40fe11-ad73-4e3f-d302-bd43d4713adf" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([1, 1, 3, 2, 4], dtype=int64)" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "yhat = neigh.predict(X_test)\n", + "yhat[0:5]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "BgVRnYmXmTwL" + }, + "source": [ + "# 11. Practice\n", + "¿Puedes construir el modelo de nuevo, pero esta vez con k = 6?" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "id": "UnXIDWKHmTwN", + "outputId": "b70af5f4-3ddc-4b6e-87e0-0f51e96b26ac" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train set Accuracy: 0.51625\n", + "Test set Accuracy: 0.31\n" + ] + } + ], + "source": [ + "# Escribe tu codigo\n", + "import sklearn.metrics as metrics\n", + "k = 6\n", + "neigh6 = KNeighborsClassifier(n_neighbors = k).fit(X_train,y_train)\n", + "yhat6 = neigh6.predict(X_test)\n", + "print(\"Train set Accuracy: \", metrics.accuracy_score(y_train, neigh6.predict(X_train)))\n", + "print(\"Test set Accuracy: \", metrics.accuracy_score(y_test, yhat6))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "IXL3WRjsmTwR" + }, + "source": [ + "# ¿Qué pasa con otros K?\n", + "K en KNN, es el número de vecinos más cercanos a examinar. Se supone que lo especifica el usuario. Entonces, ¿cómo podemos elegir el valor correcto para K? La solución general es reservar una parte de sus datos para probar la precisión del modelo. Luego elija k = 1, use la parte de entrenamiento para modelar y calcule la precisión de la predicción usando todas las muestras en su conjunto de prueba. Repita este proceso, aumentando k, y vea cuál k es el mejor para su modelo.\n", + "\n", + "Podemos calcular la precisión de KNN para diferentes Ks." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "id": "YfeSpMVlmTwS", + "outputId": "6430cf19-08d7-44bb-fa61-da705ac4881f" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([0.3 , 0.29 , 0.315, 0.32 , 0.315, 0.31 , 0.335, 0.325, 0.34 ])" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Ks = 10\n", + "mean_acc = np.zeros((Ks-1))\n", + "std_acc = np.zeros((Ks-1))\n", + "ConfustionMx = [];\n", + "for n in range(1,Ks):\n", + " \n", + " #Train Model and Predict \n", + " neigh = KNeighborsClassifier(n_neighbors = n).fit(X_train,y_train)\n", + " yhat=neigh.predict(X_test)\n", + " mean_acc[n-1] = metrics.accuracy_score(y_test, yhat)\n", + "\n", + " \n", + " std_acc[n-1]=np.std(yhat==y_test)/np.sqrt(yhat.shape[0])\n", + "\n", + "mean_acc" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "f0fyE5u8mTwW" + }, + "source": [ + "Trazar la precisión del modelo para diferentes números de vecinos" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "id": "m7sGks7pmTwX", + "outputId": "2e22537f-203a-4dbd-c5c9-d43f9aeb6fb7" + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(range(1,Ks),mean_acc,'g')\n", + "plt.fill_between(range(1,Ks),mean_acc - 1 * std_acc,mean_acc + 1 * std_acc, alpha=0.10)\n", + "plt.legend(('Accuracy ', '+/- 3xstd'))\n", + "plt.ylabel('Accuracy ')\n", + "plt.xlabel('Number of Nabors (K)')\n", + "plt.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "id": "mutMdeCwmTwc", + "outputId": "92c07d3c-2adf-477b-b69b-616fd05daf5e" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The best accuracy was with 0.34 with k= 9\n" + ] + } + ], + "source": [ + "print( \"The best accuracy was with\", mean_acc.max(), \"with k=\", mean_acc.argmax()+1) " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "IU2Bc_wRmTwj" + }, + "source": [ + "# GRACIAS" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "qNa74uGRmTwk" + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "colab": { + "include_colab_link": true, + "name": "Lab_10_K_Nearest Neighbors.ipynb", + "provenance": [] + }, + "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.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} From a3ba5e825d3f14a9276beffd7c14a7f58abb9b10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20Quispe?= <47084770+RubenMcCarty@users.noreply.github.com> Date: Sat, 28 Nov 2020 11:55:02 -0500 Subject: [PATCH 09/51] Decision Trees para predecir la medicina correcta --- ...Trees_Predecir_la_Medicina_Correcta.ipynb" | 980 ++++++++++++++++++ 1 file changed, 980 insertions(+) create mode 100644 "Lab_07_Decisi\303\263n_Trees_Predecir_la_Medicina_Correcta.ipynb" diff --git "a/Lab_07_Decisi\303\263n_Trees_Predecir_la_Medicina_Correcta.ipynb" "b/Lab_07_Decisi\303\263n_Trees_Predecir_la_Medicina_Correcta.ipynb" new file mode 100644 index 0000000..9e1e802 --- /dev/null +++ "b/Lab_07_Decisi\303\263n_Trees_Predecir_la_Medicina_Correcta.ipynb" @@ -0,0 +1,980 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "name": "Lab_07_Decisión_Trees_Predecir la Medicina Correcta.ipynb", + "provenance": [] + }, + "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.8.5" + } + }, + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "view-in-github" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "AHM_fjnV8Ivs" + }, + "source": [ + "# Decision Trees para Predecir la Medicina Correcta\n", + "\n", + "## Creado por [M.Sc. Ruben Quispe](https://www.linkedin.com/in/msc-rub%C3%A9n-quispe-l/)\n", + "\n", + "## Curso: [Machine Leanrig con Python](https://eie.pe/curso-machine-learning/)\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "7xLcoCIT8Umf" + }, + "source": [ + "En este laboratorio, aprenderá un popular algoritmo de aprendizaje automático, el árbol de decisiones. Utilizará este algoritmo de clasificación para construir un modelo a partir de datos históricos de pacientes y su respuesta a diferentes medicamentos. Luego, utiliza el árbol de decisiones capacitado para predecir la clase de un paciente desconocido o para encontrar un medicamento adecuado para un nuevo paciente.\n", + "# Tabla de contenidos\n", + "1. Sobre el dataset\n", + "2. Descargar la data\n", + "3. Pre-procesamiento\n", + "4. Configurando para Decision tree\n", + "5. Modelado\n", + "6. Predicción\n", + "7. Evaluación\n", + "8. Visualización" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "0guMSka78Uky" + }, + "source": [ + "# 1. Importar las librerías Necesarias" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "KJBTl5aP8Oe3" + }, + "source": [ + "import numpy as np \n", + "import pandas as pd\n", + "from sklearn.tree import DecisionTreeClassifier" + ], + "execution_count": 3, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "1CxTBDD49F_g" + }, + "source": [ + "# Sobre el Dataset\n", + "Imagine que es un investigador médico que recopila datos para un estudio. Ha recopilado datos sobre un conjunto de pacientes, todos los cuales padecían la misma enfermedad. Durante el curso de su tratamiento, cada paciente respondió a uno de los 5 medicamentos, medicamento A, medicamento B, medicamento C, medicamento x e y.\n", + "\n", + "Parte de su trabajo consiste en crear un modelo para averiguar qué fármaco podría ser apropiado para un futuro paciente con la misma enfermedad. Los conjuntos de características de este conjunto de datos son la edad, el sexo, la presión arterial y el colesterol de los pacientes, y el objetivo es el fármaco al que respondió cada paciente.\n", + "\n", + "Es una muestra de clasificador binario, y puede usar la parte de entrenamiento del conjunto de datos para construir un árbol de decisiones y luego usarlo para predecir la clase de un paciente desconocido o prescribirlo a un nuevo paciente.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "CYKhTowS9puh" + }, + "source": [ + "# 2. Cargando o descargando la data" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "oG0ILrCM9DBc" + }, + "source": [ + "df = pd.read_csv(\"drug200.csv\")" + ], + "execution_count": 4, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 204 + }, + "id": "kQhlJfM2-Dnu", + "outputId": "b81a4606-25e3-49a8-d57d-1195b11da247" + }, + "source": [ + "df[0:5]" + ], + "execution_count": 5, + "outputs": [ + { + "output_type": "execute_result", + "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", + "
AgeSexBPCholesterolNa_to_KDrug
023FHIGHHIGH25.355drugY
147MLOWHIGH13.093drugC
247MLOWHIGH10.114drugC
328FNORMALHIGH7.798drugX
461FLOWHIGH18.043drugY
\n", + "
" + ], + "text/plain": [ + " Age Sex BP Cholesterol Na_to_K Drug\n", + "0 23 F HIGH HIGH 25.355 drugY\n", + "1 47 M LOW HIGH 13.093 drugC\n", + "2 47 M LOW HIGH 10.114 drugC\n", + "3 28 F NORMAL HIGH 7.798 drugX\n", + "4 61 F LOW HIGH 18.043 drugY" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 5 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "tjUl1Coy-LGD", + "outputId": "ccf496f0-4436-4509-ff11-589bac67caca" + }, + "source": [ + "df.size" + ], + "execution_count": 6, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "1200" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 6 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "TYHMzEWG-fDU", + "outputId": "0be51f43-6fa2-4366-9b66-61061e2d248e" + }, + "source": [ + "df.shape" + ], + "execution_count": 7, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "(200, 6)" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 7 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 297 + }, + "id": "EAK4HW5Dnuwz", + "outputId": "c3bbed25-9c44-4c3b-8853-b934caf1cde5" + }, + "source": [ + "df.describe()" + ], + "execution_count": 8, + "outputs": [ + { + "output_type": "execute_result", + "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", + "
AgeNa_to_K
count200.000000200.000000
mean44.31500016.084485
std16.5443157.223956
min15.0000006.269000
25%31.00000010.445500
50%45.00000013.936500
75%58.00000019.380000
max74.00000038.247000
\n", + "
" + ], + "text/plain": [ + " Age Na_to_K\n", + "count 200.000000 200.000000\n", + "mean 44.315000 16.084485\n", + "std 16.544315 7.223956\n", + "min 15.000000 6.269000\n", + "25% 31.000000 10.445500\n", + "50% 45.000000 13.936500\n", + "75% 58.000000 19.380000\n", + "max 74.000000 38.247000" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 8 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "CyyiBjW4-ym4" + }, + "source": [ + "# 3. Pre_procesamiento\n", + "Usando df como los datos de Drug.csv leídos por los pandas, declare las siguientes variables:\n", + "* X como la matriz de características (datos de df) \n", + "* y como vector de respuesta (objetivo)\n", + "\n", + "Elimine la columna que contiene el nombre del objetivo, ya que no contiene valores numéricos.\n", + "\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "LZd7sTGq-pWk", + "outputId": "0df464e4-0eab-4b42-c557-1e85213513c2" + }, + "source": [ + "X = df[['Age', 'Sex', 'BP', 'Cholesterol', 'Na_to_K']].values\n", + "X[0:5]" + ], + "execution_count": 9, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([[23, 'F', 'HIGH', 'HIGH', 25.355],\n", + " [47, 'M', 'LOW', 'HIGH', 13.093],\n", + " [47, 'M', 'LOW', 'HIGH', 10.113999999999999],\n", + " [28, 'F', 'NORMAL', 'HIGH', 7.797999999999999],\n", + " [61, 'F', 'LOW', 'HIGH', 18.043]], dtype=object)" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 9 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "oMzejD-WAECW" + }, + "source": [ + "Como puede ver, algunas características de este conjunto de datos son categóricas, como Sexo o BP. Desafortunadamente, los árboles de decisión de Sklearn no manejan variables categóricas. Pero aún podemos convertir estas características en valores numéricos. pandas.get_dummies () Convierte la variable categórica en variables ficticias / indicadoras." + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "561Nxx70_Q31", + "outputId": "243615c3-8735-4ff9-9fa6-ecc3ba46b74f" + }, + "source": [ + "from sklearn import preprocessing\n", + "le_sex = preprocessing.LabelEncoder()\n", + "le_sex.fit(['F','M'])\n", + "X[:,1] = le_sex.transform(X[:,1]) \n", + "\n", + "\n", + "le_BP = preprocessing.LabelEncoder()\n", + "le_BP.fit([ 'LOW', 'NORMAL', 'HIGH'])\n", + "X[:,2] = le_BP.transform(X[:,2])\n", + "\n", + "\n", + "le_Chol = preprocessing.LabelEncoder()\n", + "le_Chol.fit([ 'NORMAL', 'HIGH'])\n", + "X[:,3] = le_Chol.transform(X[:,3]) \n", + "\n", + "X[0:5]" + ], + "execution_count": 10, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([[23, 0, 0, 0, 25.355],\n", + " [47, 1, 1, 0, 13.093],\n", + " [47, 1, 1, 0, 10.113999999999999],\n", + " [28, 0, 2, 0, 7.797999999999999],\n", + " [61, 0, 1, 0, 18.043]], dtype=object)" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 10 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "i5_IASJnA2E9" + }, + "source": [ + "Ahora podemos completar la variable destino" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "gY7FKyMzA8oy", + "outputId": "929b9d6e-a2b3-4055-b747-1579d1426e3b" + }, + "source": [ + "y = df[\"Drug\"]\n", + "y[0:5]" + ], + "execution_count": 11, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "0 drugY\n", + "1 drugC\n", + "2 drugC\n", + "3 drugX\n", + "4 drugY\n", + "Name: Drug, dtype: object" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 11 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "U7hloe4QBKyq" + }, + "source": [ + "# 4. Configurar el árbol de decisiones\n", + "Usaremos la división de train/ test en nuestro árbol de decisiones. Vamos a importar train_test_split de sklearn.cross_validation." + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "8P79KgMGA8n3" + }, + "source": [ + "from sklearn.model_selection import train_test_split" + ], + "execution_count": 12, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "OuTYdvMbA2CP" + }, + "source": [ + "Ahora train_test_split devolverá 4 parámetros diferentes. Los nombraremos:\n", + "X_trainset, X_testset, y_trainset, y_testset\n", + "\n", + "El train_test_split necesitará los parámetros:\n", + "X, y, test_size = 0.3 y random_state = 3.\n", + "\n", + "X e y son las matrices requeridas antes de la división, test_size representa la proporción del conjunto de datos de prueba y random_state asegura que obtengamos las mismas divisiones." + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "teL6gEjpBizg" + }, + "source": [ + "X_trainset, X_testset, y_trainset, y_testset = train_test_split(X, y, test_size=0.3, random_state=3)" + ], + "execution_count": 13, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "f-Jnylko23G0" + }, + "source": [ + "# Práctica" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "FTfaOyenBnGh", + "outputId": "40957f48-2b2f-4f46-ab54-4af6a0f502cc" + }, + "source": [ + "# Tarea \n", + "# Imprima la forma de X_trainset y y_trainset. Asegúrese de que las dimensiones coincidan\n", + "print ('X_trainset')\n", + "print('y_trainset')\n" + ], + "execution_count": 14, + "outputs": [ + { + "output_type": "stream", + "text": [ + "X_trainset\n", + "y_trainset\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "4yBjtsQ_2fMM" + }, + "source": [ + "# Imprima la forma de X_testset y y_testset. Asegúrese de que las dimensiones coincidan\n" + ], + "execution_count": 15, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "PZQ5n33e28Wg" + }, + "source": [ + "# 5. Modelado\n", + "Primero crearemos una instancia de DecisionTreeClassifier llamada drugTree.\n", + "Dentro del clasificador, especifique criterion = \"entropy\" para que podamos ver la ganancia de información de cada nodo." + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "xRXVq9gg3Mt-", + "outputId": "834ca6bc-aa0c-480c-bced-9a3c097a9b95" + }, + "source": [ + "drugTree = DecisionTreeClassifier(criterion='entropy', max_depth= 4)\n", + "drugTree # mostrar los parametros predeterminados " + ], + "execution_count": 16, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "DecisionTreeClassifier(ccp_alpha=0.0, class_weight=None, criterion='entropy',\n", + " max_depth=4, max_features=None, max_leaf_nodes=None,\n", + " min_impurity_decrease=0.0, min_impurity_split=None,\n", + " min_samples_leaf=1, min_samples_split=2,\n", + " min_weight_fraction_leaf=0.0, presort='deprecated',\n", + " random_state=None, splitter='best')" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 16 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Mezl7jg55gVF" + }, + "source": [ + "A continuación, ajustaremos los datos con la matriz de funciones de entrenamiento X_trainset y el vector de respuesta de entrenamiento y_trainset" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "HmLpQJ96326R", + "outputId": "d88e1461-3fc7-49b6-d049-c5444a272832" + }, + "source": [ + "drugTree.fit(X_trainset, y_trainset)" + ], + "execution_count": 17, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "DecisionTreeClassifier(ccp_alpha=0.0, class_weight=None, criterion='entropy',\n", + " max_depth=4, max_features=None, max_leaf_nodes=None,\n", + " min_impurity_decrease=0.0, min_impurity_split=None,\n", + " min_samples_leaf=1, min_samples_split=2,\n", + " min_weight_fraction_leaf=0.0, presort='deprecated',\n", + " random_state=None, splitter='best')" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 17 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "lpo0KfMS51gM" + }, + "source": [ + "# 6. Predicción\n", + "Hagamos algunas prediciones en el dataset de testing y almacenamos en una variable llamada predTree\n", + "\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "UU1q8Ath50er" + }, + "source": [ + "predTree=drugTree.predict(X_testset)" + ], + "execution_count": 18, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "2pxCQL-C6k5v" + }, + "source": [ + "Puede imprimir predTree y y_testset si desea comparar visualmente la predicción con los valores reales" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "t08uQ3cQ61VN", + "outputId": "a3f128ca-54c1-4c41-d6e7-ded111024080" + }, + "source": [ + "print(predTree[0:5])\n", + "print(y_testset[0:5])" + ], + "execution_count": 19, + "outputs": [ + { + "output_type": "stream", + "text": [ + "['drugY' 'drugX' 'drugX' 'drugX' 'drugX']\n", + "40 drugY\n", + "51 drugX\n", + "139 drugX\n", + "197 drugX\n", + "170 drugX\n", + "Name: Drug, dtype: object\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "kPsahHgZ7QLH" + }, + "source": [ + "# 7. Evaluación\n", + "Acontinuación importemos métricas de sklearn y verificamos la precision (accuracy) de nuestro modelo " + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "4yLS6jj77Jox", + "outputId": "ae8c299e-c7fb-4e82-a891-33cb84fa5c88" + }, + "source": [ + "from sklearn import metrics\n", + "import matplotlib.pyplot as plt\n", + "print('DecisionTrees Accuracy: ', metrics.accuracy_score(y_testset, predTree))" + ], + "execution_count": 20, + "outputs": [ + { + "output_type": "stream", + "text": [ + "DecisionTrees Accuracy: 0.9833333333333333\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "NkDUJEX_84fq" + }, + "source": [ + "La puntuación de la clasificación de precisión calcula la precisión del subconjunto: el conjunto de etiquetas predichas para una muestra debe coincidir exactamente con el conjunto de etiquetas correspondiente en y_true.\n", + "\n", + "En la clasificación de etiquetas múltiples, la función devuelve la precisión del subconjunto. Si todo el conjunto de etiquetas predichas para una muestra coincide estrictamente con el conjunto verdadero de etiquetas, entonces la precisión del subconjunto es 1.0; de lo contrario, es 0.0." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "iDepo-cL84cB" + }, + "source": [ + "# Practice\n", + "¿Puede calcular el accuracy score sin sklearn?" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "fycKOP8B9xcg" + }, + "source": [ + "#Tu codigo" + ], + "execution_count": 21, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "BgPKUPml92Eu" + }, + "source": [ + "# 8. Visualization \n", + "visualizamos el árbol\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "g3ZmSytx9zwL", + "outputId": "8c6b22eb-2861-476e-8d84-2283d1166cc3" + }, + "source": [ + "# Aviso: es posible que deba descomentar e instalar las bibliotecas pydotplus y graphviz si no las ha instalado antes\n", + "!conda install -c conda-forge pydotplus -y\n", + "!conda install -c conda-forge python-graphviz -y" + ], + "execution_count": 22, + "outputs": [ + { + "output_type": "stream", + "text": [ + "/bin/bash: conda: command not found\n", + "/bin/bash: conda: command not found\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "4_u-xLUV-thf", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "1baa6be1-3bdf-44c1-a11f-16c08c35f60b" + }, + "source": [ + "from sklearn.externals.six import StringIO\n", + "import pydotplus\n", + "import matplotlib.image as mpimg\n", + "from sklearn import tree\n", + "%matplotlib inline " + ], + "execution_count": 23, + "outputs": [ + { + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.6/dist-packages/sklearn/externals/six.py:31: FutureWarning: The module is deprecated in version 0.21 and will be removed in version 0.23 since we've dropped support for Python 2.7. Please rely on the official version of six (https://pypi.org/project/six/).\n", + " \"(https://pypi.org/project/six/).\", FutureWarning)\n" + ], + "name": "stderr" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000 + }, + "id": "xNGnvwu6_R-v", + "outputId": "98754104-dd67-410f-ff49-0bce8e80d47a" + }, + "source": [ + "dot_data = StringIO()\n", + "filename = \"drugTree.png\"\n", + "featureNames = df.columns[0:5]\n", + "targetNames = df[\"Drug\"].unique().tolist()\n", + "out = tree.export_graphviz(drugTree, feature_names=featureNames, out_file = dot_data, class_names= np.unique(y_trainset), filled=True, special_characters = True, rotate=False ) \n", + "graph = pydotplus.graph_from_dot_data(dot_data.getvalue())\n", + "graph.write_png(filename)\n", + "img = mpimg.imread(filename)\n", + "plt.figure(figsize=(100,200))\n", + "plt.imshow(img,interpolation='nearest')" + ], + "execution_count": 24, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 24 + }, + { + "output_type": "display_data", + "data": { + "image/png": "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AEAGhb4AAAAAAAAAAAAAAAAAAAAAAAAAAACQQaEvAAAAAAAAAAAAAAAAAAAAAAAAAAAAZFDoCwAAAAAAAAAAAAAAAAAAAAAAAAAAABkU+gIAAAAAAAAAAAAAAAAAAAAAAAAAAEAGhb4AAAAAAAAAAAAAAAAAAAAAAAAAAACQQaEvAAAAAAAAAAAAAAAAAAAAAAAAAAAAZFDoCwAAAAAAAAAAAAAAAAAAAAAAAAAAABkU+gIAAAAAAAAAAAAAAAAAAAAAAAAAAEAGhb4AAAAAAAAAAAAAAAAAAAAAAAAAAACQQaEvAAAAAAAAAAAAAAAAAAAAAAAAAAAAZFDoCwAAAAAAAAAAAAAAAAAAAAAAAAAAABkU+gIAAAAAAAAAAAAAAAAAAAAAAAAAAEAGhb4AAAAAAAAAAAAAAAAAAAAAAAAAAACQQaEvAAAAAAAAAAAAAAAAAAAAAAAAAAAAZFDoCwAAAAAAAAAAAAAAAAAAAAAAAAAAABkU+gIAAAAAAAAAAAAAAAAAAAAAAAAAAEAGhb4AAAAAAAAAAAAAAAAAAAAAAAAAAACQQaEvAAAAAAAAAAAAAAAAAAAAAAAAAAAAZFDoCwAAAAAAAAAAAAAAAAAAAAAAAAAAABkU+gIAAAAAAAAAAAAAAAAAAAAAAAAAAEAGhb4AAAAAAAAAAAAAAAAAAAAAAAAAAACQQaEvAAAAAAAAAAAAAAAAAAAAAAAAAAAAZFDoCwAAAAAAAAAAAAAAAAAAAAAAAAAAABkU+gIAAAAAAAAAAAAAAAAAAAAAAAAAAEAGhb4AAAAAAAAAAAAAAAAAAAAAAAAAAACQQaEvAAAAAAAAAAAAAAAAAAAAAAAAAAAAZFDoCwAAAAAAAAAAAAAAAAAAAAAAAAAAABkU+gIAAAAAAAAAAAAAAAAAAAAAAAAAAEAGhb4AAAAAAAAAAAAAAAAAAAAAAAAAAACQQaEvAAAAAAAAAAAAAAAAAAAAAAAAAAAAZFDoCwAAAAAAAAAAAAAAAAAAAAAAAAAAABkU+gIAAAAAAAAAAAAAAAAAAAAAAAAAAEAGhb4AAAAAAAAAAAAAAAAAAAAAAAAAAACQQaEvAAAAAAAAAAAAAAAAAAAAAAAAAAAAZFDoCwAAAAAAAAAAAAAAAAAAAAAAAAAAABkU+gIAAAAAAAAAAAAAAAAAAAAAAAAAAEAGhb4AAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAkMCgLwAAAAAAAAAAAAAAAAAAAAAAAAAAACQw6AsAAAAAAAAAAAAAAAAAAAAAAAAAAAAJ6mUXAAAAAAAAAAAAAACAstRmfKfsCgAAAFAZPbXTyq4AAAAAAABQulrZBQAAAAAAAAAAAAAAAAAAAAAAAAAAAKAKDPoCAAAAAAAAAAAAAAAAAAAAAAAAAABAAoO+AAAAAAAAAAAAAAAAAAAAAAAAAAAAkMCgLwAAAAAAAAAAAAAAAAAAAAAAAAAAACQw6AsAAAAAAAAAAAAAAAAAAAAAAAAAAAAJDPoCAAAAAAAAAAAAAAAAAAAAAAAAAABAAoO+AAAAAAAAAAAAAAAAAAAAAAAAAAAAkMCgLwAAAAAAAAAAAAAAAAAAAAAAAAAAACQw6AsAAAAAAAAAAAAAAAAAAAAAAAAAAAAJDPoCAAAAAAAAAAAAAAAAAAAAAAAAAABAAoO+AAAAAAAAAAAAAAAAAAAAAAAAAAAAkMCgLwAAAAAAAAAAAAAAAAAAAAAAAAAAACQw6AsAAAAAAAAAAAAAAAAAAAAAAAAAAAAJDPoCAAAAAAAAAAAAAAAAAAAAAAAAAABAAoO+AAAAAAAAAAAAAAAAAAAAAAAAAAAAkMCgLwAAAAAAAAAAAAAAAAAAAAAAAAAAACQw6AsAAAAAAAAAAAAAAAAAAAAAAAAAAAAJDPoCAAAAAAAAAAAAAAAAAAAAAADPlOygAAAgAElEQVQAAABAAoO+AAAAAAAAAAAAAAAAAAAAAAAAAAAAkMCgLwAAAAAAAAAAAAAAAAAAAAAAAAAAACQw6AsAAAAAAAAAAAAAAAAAAAAAAAAAAAAJDPoCAAAAAAAAAAAAAAAAAAAAAAAAAABAAoO+AAAAAAAAAAAAAAAAAAAAAAAAAAAAkMCgLwAAAAAAAAAAAAAAAAAAAAAAAAAAACQw6AsAAAAAAAAAAAAAAAAAAAAAAAAAAAAJDPoCAAAAAAAAAAAAAAAAAAAAAAAAAABAAoO+AAAAAAAAAAAAAAAAAAAAAAAAAAAAkMCgLwAAAAAAAAAAAAAAAAAAAAAAAAAAACQw6AsAAAAAAAAAAAAAAAAAAAAAAAAAAAAJDPoCAAAAAAAAAAAAAAAAAAAAAAAAAABAAoO+AAAAAAAAAAAAAAAAAAAAAAAAAAAAkKBedgEAAAAA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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "gHyOguxpCpTW" + }, + "source": [ + "# Muchas gracias" + ] + } + ] +} \ No newline at end of file From 75fd246465a4af5b2e400464fdad4f92bd1bc0a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20Quispe?= <47084770+RubenMcCarty@users.noreply.github.com> Date: Sat, 28 Nov 2020 11:55:45 -0500 Subject: [PATCH 10/51] =?UTF-8?q?Regresi=C3=B3n=20Log=C3=ADstica=20para=20?= =?UTF-8?q?Predecir=20abandono?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\255stica_Predecir_Abandono_Cliente.ipynb" | 1180 +++++++++++++++++ 1 file changed, 1180 insertions(+) create mode 100644 "Lab_08_Regresi\303\263n_Log\303\255stica_Predecir_Abandono_Cliente.ipynb" diff --git "a/Lab_08_Regresi\303\263n_Log\303\255stica_Predecir_Abandono_Cliente.ipynb" "b/Lab_08_Regresi\303\263n_Log\303\255stica_Predecir_Abandono_Cliente.ipynb" new file mode 100644 index 0000000..e2e4a45 --- /dev/null +++ "b/Lab_08_Regresi\303\263n_Log\303\255stica_Predecir_Abandono_Cliente.ipynb" @@ -0,0 +1,1180 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "view-in-github" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "hMaEfqwaJklN" + }, + "source": [ + "# Logística Regresión con Python Para Predecir el Abandono de Clientes\n", + "## Creado por [M.Sc. Ruben Quispe](https://www.linkedin.com/in/msc-rub%C3%A9n-quispe-l/)\n", + "\n", + "## Curso: [Machine Learning con Python](https://eie.pe/curso-machine-learning/)\n", + "# Objetivos\n", + "Después de completar esta práctica de laboratorio, podrá:\n", + "\n", + "* Utilice scikit Logistic Regression para clasificar\n", + "* Entender la matriz de confusión.\n", + "\n", + "En este notebook, aprenderá Regresión logística y, luego, creará un modelo para una empresa de telecomunicaciones, para predecir cuándo sus clientes se irán a un competidor, para que puedan tomar alguna acción para retener a los clientes.\n", + "\n", + "# Tabla de contenidos\n", + "1. Sobre el dataset\n", + "2. Selección y Pre-procesamiento de Data\n", + "3. Modelado (Regresión Logística con scikit learn)\n", + "4. Evaluación\n", + "5. Práctica\n", + "\n", + "# ¿Cuál es la diferencia entre Regresió Lineal y Logística\n", + "Si bien la regresión lineal es adecuada para estimar valores continuos (por ejemplo, estimar el precio de la vivienda), no es la mejor herramienta para predecir la clase de un punto de datos observado. Para estimar la clase de un punto de datos, necesitamos algún tipo de orientación sobre cuál sería la clase más probable para ese punto de datos. Para ello utilizamos Regresión logística.\n", + "\n", + "# Recuerde la regresión lineal:\n", + "\n", + "Como sabe, la regresión lineal encuentra una función que relaciona una variable dependiente continua, y, con algunos predictores (variables independientes 𝑥1, 𝑥2, etc.). Por ejemplo, la regresión lineal simple asume una función de la forma:\n", + "$$ y= \\theta_0+ \\theta_1 x_1 + \\theta_2 x_2 + \\cdots $$\n", + "y encuentra los valores de los parámetros $ \\theta_0, \\theta_1, \\theta_2$\n", + " , etc., donde el término $\\theta_0$ es la \"intersección\". Generalmente se puede mostrar como: \n", + "$$ h_\\theta(x) = \\theta^TX $$\n", + "La regresión logística es una variación de la regresión lineal, útil cuando la variable dependiente observada, y, es categórica. Produce una fórmula que predice la probabilidad de la etiqueta de clase en función de las variables independientes.\n", + "\n", + "La regresión logística se ajusta a una curva especial en forma de s tomando la regresión lineal y transformando la estimación numérica en una probabilidad con la siguiente función, que se llama función sigmoidea 𝜎:\n", + "\n", + "$$ h_\\theta(x) = \\sigma({\\theta^TX}) = \\frac{e^{(\\theta_0 + \\theta_1 x_1 +\\theta_2 x_2 + ...)}}{1+e^{(\\theta_0 + \\theta_1 x_1 +\\theta_2 x_2 + \\cdots)}} $$ or:\n", + "$$\n", + "ProbabilityOfaClass_1 = P(Y=1|X) = \\sigma({\\theta^TX}) = \\frac{e^{\\theta^TX}}{1+e^{\\theta^TX}} \n", + "$$\n", + "En esta ecuación, ${\\theta^TX}$ es el resultado de la regresión (la suma de las variables ponderadas por los coeficientes), exp es la función exponencial y $\\sigma(\\theta^TX)$ es la [función sigmoidea o logística](https://en.wikipedia.org/wiki/Logistic_function?cm_mmc=Email_Newsletter-_-Developer_Ed%2BTech-_-WW_WW-_-SkillsNetwork-Courses-IBMDeveloperSkillsNetwork-ML0101EN-SkillsNetwork-20718538&cm_mmca1=000026UJ&cm_mmca2=10006555&cm_mmca3=M12345678&cvosrc=email.Newsletter.M12345678&cvo_campaign=000026UJ&cm_mmc=Email_Newsletter-_-Developer_Ed%2BTech-_-WW_WW-_-SkillsNetwork-Courses-IBMDeveloperSkillsNetwork-ML0101EN-SkillsNetwork-20718538&cm_mmca1=000026UJ&cm_mmca2=10006555&cm_mmca3=M12345678&cvosrc=email.Newsletter.M12345678&cvo_campaign=000026UJ&cm_mmc=Email_Newsletter-_-Developer_Ed%2BTech-_-WW_WW-_-SkillsNetwork-Courses-IBMDeveloperSkillsNetwork-ML0101EN-SkillsNetwork-20718538&cm_mmca1=000026UJ&cm_mmca2=10006555&cm_mmca3=M12345678&cvosrc=email.Newsletter.M12345678&cvo_campaign=000026UJ&cm_mmc=Email_Newsletter-_-Developer_Ed%2BTech-_-WW_WW-_-SkillsNetwork-Courses-IBMDeveloperSkillsNetwork-ML0101EN-SkillsNetwork-20718538&cm_mmca1=000026UJ&cm_mmca2=10006555&cm_mmca3=M12345678&cvosrc=email.Newsletter.M12345678&cvo_campaign=000026UJ), también llamada curva logística. Es una forma de \"S\" común (curva sigmoidea).\n", + "\n", + "Entonces, brevemente, la regresión logística pasa la entrada a través del logístico / sigmoide, pero luego trata el resultado como una probabilidad:\n", + "Entonces, brevemente, la regresión logística pasa la entrada a través del logístico / sigmoide, pero luego trata el resultado como una probabilidad:\n", + "\n", + "![](https://public.boxcloud.com/d/1/b1!1Ubvh33mbloPsU8cMZ9CAMd36coW_r1NH4RSIqy1PxTyzswDLgkxpY13A41JiMzhm4xZ9CZsnzozOIeIufQBDylL4Mt8xyJF7Cwb5HsFYF7CYbzCffyzLIYkt0LH82d792NgZpo3mHnV4bsVOef4z8OasulsFLJU70pvsppYeYs-Sbq8YmJejbT5i3DeFOu9PQEnYNQ93Ga_eArJwt0k2562P3JJLjQF5kItREp76piD2iOSKbejn4c_7t4rYXEEuVAt_pac8aQ1JNO93mczljonjJK98lW0hBWixfOl5yOhQYmFKUJu0_2VNQ3h_uSYbeuQRpn2L2oWJfjRGMcUX_4TaAxOXLN7YEMkBouJqdvacWe3KgkIPlPzeozJTAWiFo4WcO1C-_afUlozxUz8PWPuOe_9IRRyboTpxawgA49-p-vYv08wxA6bP3Zuhb22HoJLigpJQGdtqGy1hEYij9IDFdEpe_2IQrvaq7AVafLpZqWcikAFHx58jvG17PIjCVLxr-_V_D1x2s-qmU2Bo3SsdFQGeSFTh8HJj4HImWCXxr_x5Uf729zPxn-LWqWL4MZCV_yzipZorljiz-tfIeH-vdIWhdvQ_d7I4Zv6LYAJ4PT8IaNP3Yz2HLhxISQlLdqV-SknwyXk18RMWDqv2hDII8gZiRSC8Hn52YzFlR2PZvLyltiEr0HgFxt9V9T101y66RRsLOAMpybjZ6I9_6SFlYD0DAxsrDJoJYEF1jqsGF9w-92sRx78yIGxXUSCMN9gmQN2BAPnuoJjIrd3iEdwsFvZzKXyo8h9krnX1TkKH5mvk9VeolFXTPID8eaMyLod3FAB2O1xT77cGGJU6Mfq-A07HuueqFkIYqAMoIDgTFIPzYiYyAVnpV9WBrWHULYg8P5txEyF2AmEHrOt1vh9Lud4AeEFzxYTXGFuD9vQhJ_97L7QYLEEAgS_pvAUUbOi3aMLiVlnFDh3LY6Q5ZNER2CpcEpYYXP0t6eQC2GziqlNzrsT2Uh9C6hacv2PWqLtzot4X-O4ZOF8KeugNZzdNg66Seqz1FfwZ_hUOYwyKdTO2mqL-ulIbbhcPhKkzN5FK8Kk1ELKuo_q83WDfHkXC7qHpUFryL6a8LWkjnf2tJ8lpOTh0TSyvlxWg2lKfCuTwtt69X464AmmDxiSvzVRbn43zYOZqlxK7SrsGXBT5uNZU9rltacLGuZUuBwjY8x_e9OgsN847JL1zojnEiA32zoz35zrdGeIlaAjWHWV_1wXzHKhwezn1dpyb1gueKDPi9C8UiLlFFFG_RK0GQHgH_RlLmwYsl1Nkm4thuj2JXcr46I_AXDk08t8SMuqsbBSwseSjAz_YvPjHH6mhG3tv9_Fsku99RdSeAyrjLmVG456QgDSjMQavT_fY-fOo98QbmPqGYX7IaklMSAK_MCuZufFVFHM-qalK7ZxaQ2-_l9bqywKgpREdteMQGR09g../download)\n", + "\n", + "El objetivo del algoritmo de Regresión Logística, es encontrar los mejores parámetros θ, para ℎ𝜃 (𝑥) = 𝜎 (𝜃𝑇𝑋), de tal manera que el modelo prediga mejor la clase de cada caso.\n", + "\n", + "# Rotación de clientes con regresión logística\n", + "A una empresa de telecomunicaciones le preocupa la cantidad de clientes que abandonan su negocio de telefonía fija por competidores de cable. Necesitan entender quién se va. Imagine que es analista en esta empresa y tiene que averiguar quién se va y por qué.\n", + "\n", + "# 1. Primero importemos las bibliotecas necesarias:\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "id": "PoGAVJLVJrdr" + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import pylab as pl\n", + "import numpy as np\n", + "import scipy.optimize as opt\n", + "from sklearn import preprocessing\n", + "%matplotlib inline \n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "T-dtEC1aVsvW" + }, + "source": [ + "# Sobre el conjunto de datos\n", + "Usaremos un conjunto de datos de telecomunicaciones para predecir la pérdida de clientes. Este es un conjunto de datos de clientes históricos donde cada fila representa un cliente. Los datos son relativamente fáciles de entender y es posible que descubra información que puede utilizar de inmediato. Por lo general, es menos costoso mantener clientes que adquirir nuevos, por lo que el enfoque de este análisis es predecir los clientes que permanecerán en la empresa.\n", + "Este conjunto de datos proporciona información para ayudarlo a predecir qué comportamiento lo ayudará a retener clientes. Puede analizar todos los datos relevantes de los clientes y desarrollar programas de retención de clientes enfocados.\n", + "\n", + "El conjunto de datos incluye información sobre:\n", + "\n", + "* Clientes que se fueron en el último mes: la columna se llama Renuncia\n", + "* Servicios a los que cada cliente se ha suscrito: teléfono, varias líneas, Internet, seguridad en línea, respaldo en línea, protección de dispositivos, soporte técnico y transmisión de TV y películas.\n", + "* Información de la cuenta del cliente: cuánto tiempo ha sido cliente, contrato, método de pago, facturación electrónica, cargos mensuales y cargos totales\n", + "* Información demográfica sobre los clientes: sexo, rango de edad y si tienen socios y dependientes\n", + "# 2. Cargue los datos de Telco Churn\n", + "Telco Churn es un archivo de datos hipotéticos sobre los esfuerzos de una empresa de telecomunicaciones para reducir la rotación de su base de clientes. Cada caso corresponde a un cliente separado y registra diversa información demográfica y de uso del servicio. Antes de poder trabajar con los datos, debe usar la URL para obtener ChurnData.csv.\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 224 + }, + "id": "IYqsXlxRVjaz", + "outputId": "14ec67de-1cfe-43ab-c5a4-96065adea999" + }, + "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", + "
tenureageaddressincomeedemployequipcallcardwirelesslongmon...pagerinternetcallwaitconferebillloglonglogtolllninccustcatchurn
011.033.07.0136.05.05.00.01.01.04.40...1.00.01.01.00.01.4823.0334.9134.01.0
133.033.012.033.02.00.00.00.00.09.45...0.00.00.00.00.02.2463.2403.4971.01.0
223.030.09.030.01.02.00.00.00.06.30...0.00.00.01.00.01.8413.2403.4013.00.0
338.035.05.076.02.010.01.01.01.06.05...1.01.01.01.01.01.8003.8074.3314.00.0
47.035.014.080.02.015.00.01.00.07.10...0.00.01.01.00.01.9603.0914.3823.00.0
\n", + "

5 rows × 28 columns

\n", + "
" + ], + "text/plain": [ + " tenure age address income ed employ equip callcard wireless \\\n", + "0 11.0 33.0 7.0 136.0 5.0 5.0 0.0 1.0 1.0 \n", + "1 33.0 33.0 12.0 33.0 2.0 0.0 0.0 0.0 0.0 \n", + "2 23.0 30.0 9.0 30.0 1.0 2.0 0.0 0.0 0.0 \n", + "3 38.0 35.0 5.0 76.0 2.0 10.0 1.0 1.0 1.0 \n", + "4 7.0 35.0 14.0 80.0 2.0 15.0 0.0 1.0 0.0 \n", + "\n", + " longmon ... pager internet callwait confer ebill loglong logtoll \\\n", + "0 4.40 ... 1.0 0.0 1.0 1.0 0.0 1.482 3.033 \n", + "1 9.45 ... 0.0 0.0 0.0 0.0 0.0 2.246 3.240 \n", + "2 6.30 ... 0.0 0.0 0.0 1.0 0.0 1.841 3.240 \n", + "3 6.05 ... 1.0 1.0 1.0 1.0 1.0 1.800 3.807 \n", + "4 7.10 ... 0.0 0.0 1.0 1.0 0.0 1.960 3.091 \n", + "\n", + " lninc custcat churn \n", + "0 4.913 4.0 1.0 \n", + "1 3.497 1.0 1.0 \n", + "2 3.401 3.0 0.0 \n", + "3 4.331 4.0 0.0 \n", + "4 4.382 3.0 0.0 \n", + "\n", + "[5 rows x 28 columns]" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "churn_df = pd.read_csv(\"D:/TECHNOLOGY 2020/Data/ChurnData.csv\")\n", + "churn_df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "eu_7rCOKXZ9y", + "outputId": "c2d396a7-6d0b-4ef2-9a08-4656849c3fd3" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(200, 28)" + ] + }, + "execution_count": 3, + "metadata": { + "tags": [] + }, + "output_type": "execute_result" + } + ], + "source": [ + "churn_df.shape" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "V6fFc-0RXw-7" + }, + "source": [ + "# 3. Data Preprocesamiento y selección \n", + "Seleccionemos algunas características para el modelado. También cambiamos el tipo de datos de destino para que sea entero, ya que es un requisito del algoritmo skitlearn:" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 306 + }, + "id": "moglj6csYM4x", + "outputId": "d10845e1-6cf0-4488-e4ac-4d6dd670af25" + }, + "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", + "
tenureageaddressincomeedemployequipcallcardwirelesschurn
011.033.07.0136.05.05.00.01.01.01
133.033.012.033.02.00.00.00.00.01
223.030.09.030.01.02.00.00.00.00
338.035.05.076.02.010.01.01.01.00
47.035.014.080.02.015.00.01.00.00
\n", + "
" + ], + "text/plain": [ + " tenure age address income ed employ equip callcard wireless \\\n", + "0 11.0 33.0 7.0 136.0 5.0 5.0 0.0 1.0 1.0 \n", + "1 33.0 33.0 12.0 33.0 2.0 0.0 0.0 0.0 0.0 \n", + "2 23.0 30.0 9.0 30.0 1.0 2.0 0.0 0.0 0.0 \n", + "3 38.0 35.0 5.0 76.0 2.0 10.0 1.0 1.0 1.0 \n", + "4 7.0 35.0 14.0 80.0 2.0 15.0 0.0 1.0 0.0 \n", + "\n", + " churn \n", + "0 1 \n", + "1 1 \n", + "2 0 \n", + "3 0 \n", + "4 0 " + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "churn_df = churn_df[['tenure', 'age', 'address', 'income', 'ed', 'employ', 'equip', 'callcard', 'wireless','churn']]\n", + "churn_df['churn'] = churn_df['churn'].astype('int')\n", + "churn_df.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "_5swG4k_YlRt" + }, + "source": [ + "# Práctica\n", + "¿Cuántas filas y columnas hay en este conjunto de datos en total? ¿Cómo se llaman las columnas?" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "bXSh7L_kYxqB", + "outputId": "337cf4a0-1215-41e1-9449-aaca59d39b1b" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(200, 10)" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# write your code here\n", + "churn_df.shape" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "SvJUG2U4YlPl" + }, + "source": [ + "Definamos X e y para nuestro conjunto de datos:" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "rbPWbY-6Xcy5", + "outputId": "7737ceb5-0442-44dd-d44f-e2f3213cf8b7" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 11., 33., 7., 136., 5., 5., 0.],\n", + " [ 33., 33., 12., 33., 2., 0., 0.],\n", + " [ 23., 30., 9., 30., 1., 2., 0.],\n", + " [ 38., 35., 5., 76., 2., 10., 1.],\n", + " [ 7., 35., 14., 80., 2., 15., 0.]])" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X = np.asarray(churn_df[['tenure', 'age', 'address', 'income', 'ed', 'employ', 'equip']])\n", + "X[0:5]" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "ADaDCHHEXi3a", + "outputId": "b592e18d-a4ea-439e-8514-138c7e6b105e" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([1, 1, 0, 0, 0])" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "y = np.asarray(churn_df['churn'])\n", + "y [0:5]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "LjIK1v8rZjq1" + }, + "source": [ + "Además, normalizamos el conjunto de datos:" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "W0ebpSShZkPM", + "outputId": "0beea708-cab8-4822-9227-224c9a1b39ad" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[-1.13518441, -0.62595491, -0.4588971 , 0.4751423 , 1.6961288 ,\n", + " -0.58477841, -0.85972695],\n", + " [-0.11604313, -0.62595491, 0.03454064, -0.32886061, -0.6433592 ,\n", + " -1.14437497, -0.85972695],\n", + " [-0.57928917, -0.85594447, -0.261522 , -0.35227817, -1.42318853,\n", + " -0.92053635, -0.85972695],\n", + " [ 0.11557989, -0.47262854, -0.65627219, 0.00679109, -0.6433592 ,\n", + " -0.02518185, 1.16316 ],\n", + " [-1.32048283, -0.47262854, 0.23191574, 0.03801451, -0.6433592 ,\n", + " 0.53441472, -0.85972695]])" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from sklearn import preprocessing\n", + "X = preprocessing.StandardScaler().fit(X).transform(X)\n", + "X[0:5]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "b6E06JgxZsoT" + }, + "source": [ + "# 4. Train /Test dataset\n", + "Bien, dividimos nuestro conjunto de datos en tren y conjunto de prueba:" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "GCaMu5yUZ73v", + "outputId": "16b0d8a8-143c-4ab4-fb28-2272a780d023" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train set: (160, 7) (160,)\n", + "Test set: (40, 7) (40,)\n" + ] + } + ], + "source": [ + "from sklearn.model_selection import train_test_split\n", + "X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.2, random_state=4)\n", + "print ('Train set:', X_train.shape, y_train.shape)\n", + "print ('Test set:', X_test.shape, y_test.shape)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "HeQl5KivZ-Qv" + }, + "source": [ + "# 5. Modelado Regresión Logística con scikit-learn\n", + "\n", + "Construyamos nuestro modelo usando LogisticRegression del paquete Scikit-learn. Esta función implementa la regresión logística y puede usar diferentes optimizadores numéricos para encontrar parámetros, incluidos los solucionadores \"newton-cg\", \"lbfgs\", \"liblinear\", \"sag\" y \"saga\". Puede encontrar amplia información sobre los pros y los contras de estos optimizadores si lo busca en Internet.\n", + "\n", + "La versión de Regresión logística en Scikit-learn, admite regularización. La regularización es una técnica utilizada para resolver el problema de sobreajuste en modelos de aprendizaje automático. El parámetro C indica el inverso de la fuerza de regularización, que debe ser un valor flotante positivo. Los valores más pequeños especifican una regularización más fuerte. Ahora ajustemos nuestro modelo con juego de trenes:" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "EzMKmPXyaOu7", + "outputId": "e62fb37b-0491-4af5-cca9-5af54bdd8f53" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "LogisticRegression(C=0.01, solver='liblinear')" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from sklearn.linear_model import LogisticRegression\n", + "from sklearn.metrics import confusion_matrix\n", + "LR = LogisticRegression(C=0.01, solver='liblinear').fit(X_train,y_train)\n", + "LR" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "_us9NXPUaUDn" + }, + "source": [ + "Ahora podemos predecir usando nuestro conjunto de prueba:" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "5p9duWWQabwb", + "outputId": "cf14a85c-ed65-42e5-e41c-bfb3586b26bb" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0,\n", + " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0])" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "yhat = LR.predict(X_test)\n", + "yhat" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "sfKIGuWDaiwI" + }, + "source": [ + "predict_prob devuelve estimaciones para todas las clases, ordenadas por la etiqueta de clases. Entonces, la primera columna es la probabilidad de la clase 1, P (Y = 1 | X), y la segunda columna es la probabilidad de la clase 0, P (Y = 0 | X):" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "BGuaOB3Vahi2", + "outputId": "134c9294-db58-4dea-b982-f088a91cc4a5" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[0.54132919, 0.45867081],\n", + " [0.60593357, 0.39406643],\n", + " [0.56277713, 0.43722287],\n", + " [0.63432489, 0.36567511],\n", + " [0.56431839, 0.43568161],\n", + " [0.55386646, 0.44613354],\n", + " [0.52237207, 0.47762793],\n", + " [0.60514349, 0.39485651],\n", + " [0.41069572, 0.58930428],\n", + " [0.6333873 , 0.3666127 ],\n", + " [0.58068791, 0.41931209],\n", + " [0.62768628, 0.37231372],\n", + " [0.47559883, 0.52440117],\n", + " [0.4267593 , 0.5732407 ],\n", + " [0.66172417, 0.33827583],\n", + " [0.55092315, 0.44907685],\n", + " [0.51749946, 0.48250054],\n", + " [0.485743 , 0.514257 ],\n", + " [0.49011451, 0.50988549],\n", + " [0.52423349, 0.47576651],\n", + " [0.61619519, 0.38380481],\n", + " [0.52696302, 0.47303698],\n", + " [0.63957168, 0.36042832],\n", + " [0.52205164, 0.47794836],\n", + " [0.50572852, 0.49427148],\n", + " [0.70706202, 0.29293798],\n", + " [0.55266286, 0.44733714],\n", + " [0.52271594, 0.47728406],\n", + " [0.51638863, 0.48361137],\n", + " [0.71331391, 0.28668609],\n", + " [0.67862111, 0.32137889],\n", + " [0.50896403, 0.49103597],\n", + " [0.42348082, 0.57651918],\n", + " [0.71495838, 0.28504162],\n", + " [0.59711064, 0.40288936],\n", + " [0.63808839, 0.36191161],\n", + " [0.39957895, 0.60042105],\n", + " [0.52127638, 0.47872362],\n", + " [0.65975464, 0.34024536],\n", + " [0.5114172 , 0.4885828 ]])" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "yhat_prob = LR.predict_proba(X_test)\n", + "yhat_prob" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "SZx9lJQdarQe" + }, + "source": [ + "# 6. Evaluación \n", + "\n", + "# Indice de Jaccard\n", + "Probemos el índice jaccard para evaluar la precisión. podemos definir jaccard como el tamaño de la intersección dividido por el tamaño de la unión de dos conjuntos de etiquetas. Si todo el conjunto de etiquetas predichas para una muestra coincide estrictamente con el conjunto verdadero de etiquetas, entonces la precisión del subconjunto es 1.0; de lo contrario, es 0.0." + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "8ABqNfaeacX8", + "outputId": "019872f7-205c-4caf-c762-79f7930da993" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "0.375" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#colab\n", + "#from sklearn.metrics import jaccard_similarity_score\n", + "#jaccard_similarity_score(y_test, yhat)\n", + "#local\n", + "from sklearn.metrics import jaccard_score\n", + "jaccard_score(y_test, yhat)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "_8qtSCAZbOV-" + }, + "source": [ + "# 7. matriz de confusión \n", + "Otra forma de ver la precisión del clasificador es mirar la matriz de confusión." + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "1M5_Rt1cbj22", + "outputId": "4bd75034-8d66-47cd-cd54-a755426aadcc" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[ 6 9]\n", + " [ 1 24]]\n" + ] + } + ], + "source": [ + "from sklearn.metrics import classification_report, confusion_matrix\n", + "import itertools\n", + "def plot_confusion_matrix(cm, classes,\n", + " normalize=False,\n", + " title='Confusion matrix',\n", + " cmap=plt.cm.Blues):\n", + " \"\"\"\n", + " This function prints and plots the confusion matrix.\n", + " Normalization can be applied by setting `normalize=True`.\n", + " \"\"\"\n", + " if normalize:\n", + " cm = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis]\n", + " print(\"Normalized confusion matrix\")\n", + " else:\n", + " print('Confusion matrix, without normalization')\n", + "\n", + " print(cm)\n", + "\n", + " plt.imshow(cm, interpolation='nearest', cmap=cmap)\n", + " plt.title(title)\n", + " plt.colorbar()\n", + " tick_marks = np.arange(len(classes))\n", + " plt.xticks(tick_marks, classes, rotation=45)\n", + " plt.yticks(tick_marks, classes)\n", + "\n", + " fmt = '.2f' if normalize else 'd'\n", + " thresh = cm.max() / 2.\n", + " for i, j in itertools.product(range(cm.shape[0]), range(cm.shape[1])):\n", + " plt.text(j, i, format(cm[i, j], fmt),\n", + " horizontalalignment=\"center\",\n", + " color=\"white\" if cm[i, j] > thresh else \"black\")\n", + "\n", + " plt.tight_layout()\n", + " plt.ylabel('True label')\n", + " plt.xlabel('Predicted label')\n", + "print(confusion_matrix(y_test, yhat, labels=[1,0]))" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 362 + }, + "id": "yPEp0sUgbqim", + "outputId": "0a9d8f3c-7d36-4b21-f0ff-6737e6f58742" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Confusion matrix, without normalization\n", + "[[ 6 9]\n", + " [ 1 24]]\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# Compute confusion matrix\n", + "cnf_matrix = confusion_matrix(y_test, yhat, labels=[1,0])\n", + "np.set_printoptions(precision=2)\n", + "\n", + "\n", + "# Plot non-normalized confusion matrix\n", + "plt.figure()\n", + "plot_confusion_matrix(cnf_matrix, classes=['churn=1','churn=0'],normalize= False, title='Confusion matrix')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "vBO8Grz6cR_Y" + }, + "source": [ + "Mira la primera fila. La primera fila es para los clientes cuyo valor de abandono real en el conjunto de prueba es 1. Como puede calcular, de 40 clientes, el valor de abandono de 15 de ellos es 1. Y de estos 15, el clasificador predijo correctamente 6 de ellos como 1 y 9 de ellos como 0.\n", + "\n", + "Significa que, para 6 clientes, el valor de abandono real fue 1 en el conjunto de prueba, y el clasificador también predijo correctamente esos como 1. Sin embargo, mientras que la etiqueta real de 9 clientes fue 1, el clasificador predijo esos como 0, lo que no es muy bueno . Podemos considerarlo como un error del modelo de la primera fila.\n", + "\n", + "¿Qué pasa con los clientes con valor de deserción 0? Veamos la segunda fila. Parece que hubo 25 clientes cuyo valor de abandono fue 0.\n", + "\n", + "El clasificador predijo correctamente 24 de ellos como 0 y uno de ellos incorrectamente como 1. Por lo tanto, ha hecho un buen trabajo al predecir los clientes con un valor de rotación 0. Lo bueno de la matriz de confusión es que muestra la capacidad del modelo para predecir correctamente o separar las clases. En un caso específico de clasificador binario, como este ejemplo, podemos interpretar estos números como el recuento de verdaderos positivos, falsos positivos, verdaderos negativos y falsos negativos." + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "Otj2-nOybqgp", + "outputId": "5ad71485-8da4-49b7-926e-fc0aac9c64fa" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " precision recall f1-score support\n", + "\n", + " 0 0.73 0.96 0.83 25\n", + " 1 0.86 0.40 0.55 15\n", + "\n", + " accuracy 0.75 40\n", + " macro avg 0.79 0.68 0.69 40\n", + "weighted avg 0.78 0.75 0.72 40\n", + "\n" + ] + } + ], + "source": [ + "print (classification_report(y_test, yhat))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "yp8rJpxGccdi" + }, + "source": [ + "Basándonos en el recuento de cada sección, podemos calcular la precisión y la recuperación de cada etiqueta:\n", + "\n", + "* **PRECISION** es una medida de la precisión siempre que se haya predicho una etiqueta de clase. Está definido por: precisión = TP / (TP + FP)\n", + "\n", + "* **RECALL** es una verdadera tasa positiva. Se define como: Recuperación = TP / (TP + FN)\n", + "\n", + "Entonces, podemos calcular la precisión y la recuperación de cada clase.\n", + "\n", + "**F1 score**: ahora estamos en condiciones de calcular los puntajes F1 para cada etiqueta en función de la precisión y el recuerdo de esa etiqueta.\n", + "\n", + "La puntuación F1 es el promedio armónico de la precisión y la recuperación, donde una puntuación F1 alcanza su mejor valor en 1 (precisión y recuperación perfecta) y el peor en 0. Es una buena forma de demostrar que un clasificador tiene un buen valor para ambos recuerdo y precisión.\n", + "\n", + "Y finalmente, podemos decir que la precisión promedio para este clasificador es el promedio de la puntuación F1 para ambas etiquetas, que es 0,72 en nuestro caso.\n", + "\n", + "# Log loss\n", + "Ahora, intentemos la pérdida de registros para su evaluación. En la regresión logística, el resultado puede ser que la probabilidad de que el cliente abandone sea sí (o igual a 1). Esta probabilidad es un valor entre 0 y 1. La pérdida logarítmica (pérdida logarítmica) mide el rendimiento de un clasificador donde la salida prevista es un valor de probabilidad entre 0 y 1." + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "nBDW0Cjzcxzr", + "outputId": "050d0381-daf0-4547-9a02-0be9f91b8ce3" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "0.6017092478101187" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from sklearn.metrics import log_loss\n", + "log_loss(y_test, yhat_prob)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "9aNeG0iuc49O" + }, + "source": [ + "# Práctica\n", + "Intente volver a crear el modelo de regresión logística para el mismo conjunto de datos, pero esta vez, ¿usará diferentes valores de __solver__ y __regularization__? ¿Cuál es el nuevo valor de __logLoss__?" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": { + "id": "KCUmdQVmdRt3" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "LogLoss: : 0.61\n" + ] + } + ], + "source": [ + "# Escribi tu codigo\n", + "LR2 = LogisticRegression(C=0.01, solver='sag').fit(X_train,y_train)\n", + "yhat_prob2 = LR2.predict_proba(X_test)\n", + "print (\"LogLoss: : %.2f\" % log_loss(y_test, yhat_prob2))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "e8F5lBHqdWiC" + }, + "source": [ + "# Gracias por su atención" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "WpGh51FUdY9-" + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "colab": { + "authorship_tag": "ABX9TyNJ0lN01O0FnSjIpIHQ+3I9", + "include_colab_link": true, + "name": "Lab_12_Logística_Regresión.ipynb", + "provenance": [] + }, + "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.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} From 7b5f53f9230a752d0e7bf07f785479dc9c2cb023 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20Quispe?= <47084770+RubenMcCarty@users.noreply.github.com> Date: Sat, 28 Nov 2020 11:56:52 -0500 Subject: [PATCH 11/51] =?UTF-8?q?SVM=20para=20predecir=20c=C3=A1ncer=20mal?= =?UTF-8?q?igno=20vs=20benigna?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...or_c\303\251lulas_Malignas_Benignas.ipynb" | 865 ++++++++++++++++++ 1 file changed, 865 insertions(+) create mode 100644 "Lab_09_SVM_Clasificador_c\303\251lulas_Malignas_Benignas.ipynb" diff --git "a/Lab_09_SVM_Clasificador_c\303\251lulas_Malignas_Benignas.ipynb" "b/Lab_09_SVM_Clasificador_c\303\251lulas_Malignas_Benignas.ipynb" new file mode 100644 index 0000000..5a41777 --- /dev/null +++ "b/Lab_09_SVM_Clasificador_c\303\251lulas_Malignas_Benignas.ipynb" @@ -0,0 +1,865 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "view-in-github" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "fZ49fQb7p3UN" + }, + "source": [ + "# SVM (Support Vector Machines) Para predecir Células Malignas & Benignas\n", + "## Creado por [M.Sc. Ruben Quispe](https://www.linkedin.com/in/msc-rub%C3%A9n-quispe-l/)\n", + "\n", + "## Curso: [Machine Learning con Python](https://eie.pe/curso-machine-learning/)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "x5HHisUWp_Ok" + }, + "source": [ + "En este notebook, aprenderás a usar SVM para contruir y entrenatr un modelo usando reistros de células humanas y clasificar las cálulas según si las muestras son malignas o benignas.\n", + "\n", + "SVM funciona mapeando datos en un espacio de caractarísticas de alta dimensión para que los puntos de datos se puedan categorizar, incluso cuando los datos no sean linealmente separarbles. Se encuentra un separador entre las categorias, luego los datos se transforman de tal manera que el separador se podria dibujar como un hiperplano. Despues de esto, las características de los nuevos datos se puede utilizar para predecir el grupo al que debe pertenecer un nuevo registro.\n", + "\n", + "# Tabla de contenidos\n", + "\n", + "1. Cargar la dataset de cancer\n", + "2. Modelado\n", + "3. Evaluación\n", + "4. Práctica\n", + "# 1. Importar las librerías necesarias" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "id": "68h6h4nnpzhL" + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import pylab as pl\n", + "import numpy as np\n", + "import scipy.optimize as opt\n", + "from sklearn import preprocessing\n", + "from sklearn.model_selection import train_test_split\n", + "%matplotlib inline \n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "9AbCAmWKqNpT" + }, + "source": [ + "# 2. Cargar la dataset de cancer\n", + "El ejemplo se basa en un dataset que esta disponible publicamente en el repositorio de ML de la UCI [Asuncion and Newman, 2007](https://cml.ics.uci.edu/MLRepository.html). El dataset consta de varios cientos de registros de muestras de células humanas, cada, cada uno de los cuales contiene los valores de un conjunto de características celulares. Lo campos de registro son:\n", + "\n", + "|Field name|Description|\n", + "|--- |--- |\n", + "|ID|Clump thickness|\n", + "|Clump|Clump thickness|\n", + "|UnifSize|Uniformity of cell size|\n", + "|UnifShape|Uniformity of cell shape|\n", + "|MargAdh|Marginal adhesion|\n", + "|SingEpiSize|Single epithelial cell size|\n", + "|BareNuc|Bare nuclei|\n", + "|BlandChrom|Bland chromatin|\n", + "|NormNucl|Normal nucleoli|\n", + "|Mit|Mitoses|\n", + "|Class|Benign or malignant|" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "id": "FpSpYcG2qHmP" + }, + "outputs": [], + "source": [ + "cell_df = pd.read_csv(\"D:/TECHNOLOGY 2020/Data/cell_samples.csv\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "hEoAGeujq4Q8" + }, + "source": [ + "# 3. Explorar la data" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 204 + }, + "id": "FIJXdPfrqaSQ", + "outputId": "65ac8e90-a22e-4cdb-f5d4-ffcc0d9d57d0" + }, + "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", + "
IDClumpUnifSizeUnifShapeMargAdhSingEpiSizeBareNucBlandChromNormNuclMitClass
010000255111213112
1100294554457103212
210154253111223112
310162776881343712
410170234113213112
\n", + "
" + ], + "text/plain": [ + " ID Clump UnifSize UnifShape MargAdh SingEpiSize BareNuc \\\n", + "0 1000025 5 1 1 1 2 1 \n", + "1 1002945 5 4 4 5 7 10 \n", + "2 1015425 3 1 1 1 2 2 \n", + "3 1016277 6 8 8 1 3 4 \n", + "4 1017023 4 1 1 3 2 1 \n", + "\n", + " BlandChrom NormNucl Mit Class \n", + "0 3 1 1 2 \n", + "1 3 2 1 2 \n", + "2 3 1 1 2 \n", + "3 3 7 1 2 \n", + "4 3 1 1 2 " + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Leer el dataset\n", + "cell_df.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "vo9YccP-qgtb" + }, + "source": [ + "El campo ID contiene el identificador del paciente. Las características de las muestras de células de cada paciente estan contenidas en los campos de clump (agrupar) a Mit. Los valores se clasifican de 1 a 10, siendo 1 el más cercano a benigno.\n", + "\n", + "El campo Class contiene el diagnóstico, confirmado por procedimientos médicos separados, de si las muestras son benignas (valor=2) o malignas (valor =4).\n", + "\n", + "Veamosla distribución de las clases según al espesor del grupo y la uniformidad del tamaño de la celda." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 279 + }, + "id": "2cDG6JVJqcmt", + "outputId": "15d04e77-ce44-45eb-ba16-e367a048097f" + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "ax = cell_df[cell_df['Class'] == 4][0:50].plot(kind='scatter', x='Clump', y='UnifSize', color='DarkBlue', label='malignant');\n", + "cell_df[cell_df['Class'] == 2][0:50].plot(kind='scatter', x='Clump', y='UnifSize', color='Yellow', label='benign', ax=ax);\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "lwKR7QQwrDc-" + }, + "source": [ + "# 4. Pre-procesamiento y selección de Data \n", + "Veamos el tipo de las columnas\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "lODl2M2HqlpT", + "outputId": "e429e62c-5aca-4c31-96d2-44e7bd8f785e" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "ID int64\n", + "Clump int64\n", + "UnifSize int64\n", + "UnifShape int64\n", + "MargAdh int64\n", + "SingEpiSize int64\n", + "BareNuc object\n", + "BlandChrom int64\n", + "NormNucl int64\n", + "Mit int64\n", + "Class int64\n", + "dtype: object" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cell_df.dtypes" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "KqQdtFTTriZU" + }, + "source": [ + "Parece que la columna incluye algunos valores que no son numéricos.Podemos soltar(drop) esas filas" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "cGOS7QJZrawz", + "outputId": "3b334c30-5f49-4412-f91a-c532ea5d263c" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "ID int64\n", + "Clump int64\n", + "UnifSize int64\n", + "UnifShape int64\n", + "MargAdh int64\n", + "SingEpiSize int64\n", + "BareNuc int32\n", + "BlandChrom int64\n", + "NormNucl int64\n", + "Mit int64\n", + "Class int64\n", + "dtype: object" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cell_df = cell_df[pd.to_numeric(cell_df['BareNuc'], errors='coerce').notnull()]\n", + "cell_df['BareNuc']=cell_df['BareNuc'].astype('int')\n", + "cell_df.dtypes" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "J6X2hGYWsiED", + "outputId": "110e4fc0-d8b8-4e6a-d3ba-452eee49a2b8" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 5, 1, 1, 1, 2, 1, 3, 1, 1],\n", + " [ 5, 4, 4, 5, 7, 10, 3, 2, 1],\n", + " [ 3, 1, 1, 1, 2, 2, 3, 1, 1],\n", + " [ 6, 8, 8, 1, 3, 4, 3, 7, 1],\n", + " [ 4, 1, 1, 3, 2, 1, 3, 1, 1]], dtype=int64)" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "feature_df=cell_df[['Clump', 'UnifSize', 'UnifShape', 'MargAdh','SingEpiSize', 'BareNuc', 'BlandChrom', 'NormNucl', 'Mit']]\n", + "X= np.asanyarray(feature_df)\n", + "X[0:5]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "pzjeRpcgt69m" + }, + "source": [ + "Queremos que el modelo prediga el valor de clase (bening=2) o (malignant =4). Como este campo puede tener uno de los 2 valores posibles, necesitamos cambiar su nivel de medición para reflejarlo." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "DqzSwFKQts9x", + "outputId": "11326542-d41b-409f-9d39-45696ec5d10a" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([2, 2, 2, 2, 2])" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cell_df['Class']= cell_df['Class'].astype('int')\n", + "y = np.asanyarray(cell_df['Class'])\n", + "y[0:5]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "xeRs1uCFvFNm" + }, + "source": [ + "# 5. Train/Test Dataset\n", + "Bien dividimos nuestro data set en conjunto de train/test " + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "tUn8WqiWvDGy", + "outputId": "440c3dbd-e77b-433b-c720-fcbaf8ef1068" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train set: (546, 9) (546,)\n", + "Test set: (137, 9) (137,)\n" + ] + } + ], + "source": [ + "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=4)\n", + "print ('Train set:', X_train.shape, y_train.shape)\n", + "print('Test set: ', X_test.shape, y_test.shape)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "m7x0iG25wFGK" + }, + "source": [ + "# 6. Modelos de SVM\n", + "El algoritmo de SVM ofrece una variedad de funciones de kernel para realizar su procesamiento. Básicamente, el mapeo de datos en un espacio de mayor dimesión se llama kernelling. La función matemática utilizada para la transformación se conoce como función de Kernel o nucleo y puede ser de diferentes tipos como:\n", + "1. Lineal\n", + "2. Polinomial\n", + "3. Función de Base Radial\n", + "4. Sigmoide\n", + "\n", + "Cada una de estas funcionaes tiene sus características, pros y contras, y su ecuación, como no hay una manera fácil de saber qué función funciona mejor con un dataset dado, generalmente elegimos diferentes funciones a su vez y comparamos los resultados. Usalmos RBF predeterminada para este laboratorio. " + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "BU2BWkBKwCFs", + "outputId": "0cb1634c-10a6-4826-a329-1b9527bc6bfc" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "SVC()" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from sklearn import svm\n", + "clf = svm.SVC(kernel='rbf')\n", + "clf.fit(X_train, y_train) " + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "tDii3FlYyanH", + "outputId": "bfb533bb-29cc-4870-84dd-4f31a97ea914" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([2, 4, 2, 4, 2])" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Una vez ajustado, el modelo se puede utilizar para predecir nuevos valores \n", + "yhat=clf.predict(X_test)\n", + "yhat[0:5]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "o1ttOlVSzkjl" + }, + "source": [ + "# 7. Evaluación" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "id": "HyvTbzVfzgBB" + }, + "outputs": [], + "source": [ + "from sklearn.metrics import classification_report, confusion_matrix\n", + "import itertools" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "id": "HFp-zEsw4Hne" + }, + "outputs": [], + "source": [ + "def plot_confusion_matrix(cm, classes,\n", + " normalize=False,\n", + " title='Confusion matrix',\n", + " cmap=plt.cm.Blues):\n", + " \"\"\"\n", + " esta fucnión imprime y grafica la matriz de confusión \n", + " La Normaliza se puede aplicar configurando 'normalize=True'\n", + " \"\"\"\n", + " if normalize:\n", + " cm = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis]\n", + " print(\"Normalized confusion matrix\")\n", + " else:\n", + " print('Confusion matrix, without normalization')\n", + "\n", + " print(cm)\n", + "\n", + " plt.imshow(cm, interpolation='nearest', cmap=cmap)\n", + " plt.title(title)\n", + " plt.colorbar()\n", + " tick_marks = np.arange(len(classes))\n", + " plt.xticks(tick_marks, classes, rotation=45)\n", + " plt.yticks(tick_marks, classes)\n", + "\n", + " fmt = '.2f' if normalize else 'd'\n", + " thresh = cm.max() / 2.\n", + " for i, j in itertools.product(range(cm.shape[0]), range(cm.shape[1])):\n", + " plt.text(j, i, format(cm[i, j], fmt),\n", + " horizontalalignment=\"center\",\n", + " color=\"white\" if cm[i, j] > thresh else \"black\")\n", + "\n", + " plt.tight_layout()\n", + " plt.ylabel('True label')\n", + " plt.xlabel('Predicted label')" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 515 + }, + "id": "9bfVW3Rt5ChP", + "outputId": "f0903b24-e6e3-49a0-e785-0be318545b74" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " precision recall f1-score support\n", + "\n", + " 2 1.00 0.94 0.97 90\n", + " 4 0.90 1.00 0.95 47\n", + "\n", + " accuracy 0.96 137\n", + " macro avg 0.95 0.97 0.96 137\n", + "weighted avg 0.97 0.96 0.96 137\n", + "\n", + "Confusion matrix, without normalization\n", + "[[85 5]\n", + " [ 0 47]]\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light", + "tags": [] + }, + "output_type": "display_data" + } + ], + "source": [ + "# Calculo de la confusion de matrix\n", + "cnf_matrix= confusion_matrix(y_test, yhat, labels=[2,4])\n", + "np.set_printoptions(precision=2)\n", + "\n", + "print (classification_report(y_test, yhat))\n", + "\n", + "# grafica de no normalizado de confusion matrix\n", + "plt.figure()\n", + "plot_confusion_matrix(cnf_matrix,classes =['Bening(2)', 'Malignant(4)'], normalize=False, title ='Confusion matrix')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "8x-m7Olf6Ycx" + }, + "source": [ + "También se puede usar fácilmente f1_score de la librería de sklearn" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "1oz48Lbv6QtO", + "outputId": "655f1f0c-4d08-4d14-f381-929e65cfc5bf" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "0.9639038982104676" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from sklearn.metrics import f1_score\n", + "f1_score(y_test, yhat, average='weighted')\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "9NGDquSj66ys" + }, + "source": [ + "Probemos el **jaccard index** para mayor precisión" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "c_4zq8gA6xpv", + "outputId": "7966ccff-b65a-4b2d-8627-a238f7c795fb" + }, + "outputs": [ + { + "ename": "ValueError", + "evalue": "pos_label=1 is not a valid label: array([2, 4])", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[1;31m#local\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[0msklearn\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmetrics\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mjaccard_score\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 6\u001b[1;33m \u001b[0mjaccard_score\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my_test\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0myhat\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;32m~\\Anaconda3\\envs\\ambiente2\\lib\\site-packages\\sklearn\\utils\\validation.py\u001b[0m in \u001b[0;36minner_f\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m 70\u001b[0m FutureWarning)\n\u001b[0;32m 71\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mupdate\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m{\u001b[0m\u001b[0mk\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0marg\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mk\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0marg\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mzip\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msig\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mparameters\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0margs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m}\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 72\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mf\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 73\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0minner_f\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 74\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\Anaconda3\\envs\\ambiente2\\lib\\site-packages\\sklearn\\metrics\\_classification.py\u001b[0m in \u001b[0;36mjaccard_score\u001b[1;34m(y_true, y_pred, labels, pos_label, average, sample_weight)\u001b[0m\n\u001b[0;32m 733\u001b[0m \u001b[0marray\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m1.\u001b[0m \u001b[1;33m,\u001b[0m \u001b[1;36m0.\u001b[0m \u001b[1;33m,\u001b[0m \u001b[1;36m0.33\u001b[0m\u001b[1;33m...\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 734\u001b[0m \"\"\"\n\u001b[1;32m--> 735\u001b[1;33m labels = _check_set_wise_labels(y_true, y_pred, average, labels,\n\u001b[0m\u001b[0;32m 736\u001b[0m pos_label)\n\u001b[0;32m 737\u001b[0m \u001b[0msamplewise\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0maverage\u001b[0m \u001b[1;33m==\u001b[0m \u001b[1;34m'samples'\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\Anaconda3\\envs\\ambiente2\\lib\\site-packages\\sklearn\\metrics\\_classification.py\u001b[0m in \u001b[0;36m_check_set_wise_labels\u001b[1;34m(y_true, y_pred, average, labels, pos_label)\u001b[0m\n\u001b[0;32m 1254\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mpos_label\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mpresent_labels\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1255\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mpresent_labels\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m>=\u001b[0m \u001b[1;36m2\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1256\u001b[1;33m raise ValueError(\"pos_label=%r is not a valid label: \"\n\u001b[0m\u001b[0;32m 1257\u001b[0m \"%r\" % (pos_label, present_labels))\n\u001b[0;32m 1258\u001b[0m \u001b[0mlabels\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[0mpos_label\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mValueError\u001b[0m: pos_label=1 is not a valid label: array([2, 4])" + ] + } + ], + "source": [ + "\n", + "#colab\n", + "#from sklearn.metrics import jaccard_similarity_score\n", + "#jaccard_similarity_score(y_test, yhat)\n", + "#local\n", + "from sklearn.metrics import jaccard_score\n", + "jaccard_score(y_test, yhat)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "f9d1Qz747YKo" + }, + "source": [ + "# Práctica\n", + "¿Puede reconstruir el modelo, pero esta vez con un kernel __linear__? Puede usar la opción __kernel = 'linear' __, cuando defina el archivo svm. ¿Cómo cambia la precisión con la nueva función del kernel?" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "_LPvrQFT7Vs5", + "outputId": "41f16be8-29ce-4b83-c757-7f47aea7cfc6" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Avg F1-score: 0.9639\n" + ] + }, + { + "ename": "NameError", + "evalue": "name 'jaccard_similarity_score' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[0myhat2\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mclf2\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpredict\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mX_test\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"Avg F1-score: %.4f\"\u001b[0m \u001b[1;33m%\u001b[0m \u001b[0mf1_score\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my_test\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0myhat2\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0maverage\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m'weighted'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 6\u001b[1;33m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"Jaccard score: %.4f\"\u001b[0m \u001b[1;33m%\u001b[0m \u001b[0mjaccard_similarity_score\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my_test\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0myhat2\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;31mNameError\u001b[0m: name 'jaccard_similarity_score' is not defined" + ] + } + ], + "source": [ + "# tu codigo\n", + "clf2 = svm.SVC(kernel='linear')\n", + "clf2.fit(X_train, y_train) \n", + "yhat2 = clf2.predict(X_test)\n", + "print(\"Avg F1-score: %.4f\" % f1_score(y_test, yhat2, average='weighted'))\n", + "print(\"Jaccard score: %.4f\" % jaccard_similarity_score(y_test, yhat2))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "62wnjpn27sIn" + }, + "source": [ + "# Muchas gracias." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "P7xfl5Zh7p95" + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "colab": { + "authorship_tag": "ABX9TyPOFDC/AHWuZTO5RqDUoqkD", + "include_colab_link": true, + "name": "Lab_13_SVM_Clasificador células_Malignas_Benignas.ipynb", + "provenance": [] + }, + "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.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} From 18227ce6c6e195e7ff3879b973276830b55180c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20Quispe?= <47084770+RubenMcCarty@users.noreply.github.com> Date: Sat, 28 Nov 2020 11:57:35 -0500 Subject: [PATCH 12/51] =?UTF-8?q?K-means=20para=20Segmentaci=C3=B3n=20de?= =?UTF-8?q?=20clientes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ..._Means_Segmentaci\303\263n_Clientes.ipynb" | 1296 +++++++++++++++++ 1 file changed, 1296 insertions(+) create mode 100644 "Lab_10_K_Means_Segmentaci\303\263n_Clientes.ipynb" diff --git "a/Lab_10_K_Means_Segmentaci\303\263n_Clientes.ipynb" "b/Lab_10_K_Means_Segmentaci\303\263n_Clientes.ipynb" new file mode 100644 index 0000000..88b80fc --- /dev/null +++ "b/Lab_10_K_Means_Segmentaci\303\263n_Clientes.ipynb" @@ -0,0 +1,1296 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "view-in-github" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ZyI2YG8I3-it" + }, + "source": [ + "# K Means Clustering Para Segmentar Clientes\n", + "\n", + "## Creado por [M.Sc. Ruben Quispe](https://www.linkedin.com/in/msc-rub%C3%A9n-quispe-l/)\n", + "\n", + "## Curso: [Machine Learning con Python](https://eie.pe/curso-machine-learning/)\n", + "# Introduccón\n", + "Existen muchos modelos para la clustering. En este notebook les presentamos el modelo que se considera más simple entre ellos. A pesar de su simplicidad K-Means se utiliza ampliamente para la agrupación en clusteres en muchas aplicaciones de data science, lo que es especialmente util si necesitas descubrir rápidamente información a partir de datos sin etiquetar.En este notebook aprenderas a usar K_means para segmentación de clientes.\n", + "\n", + "Algunas aplicaciones de k-means en el mundo real\n", + "1. Custumer segmentation\n", + "2. Comprender lo que los visitantes a un sitio web intentan lograr\n", + "4. Patter recognition\n", + "5. Machine Learning\n", + "6. Data compression\n", + "\n", + "En este notebook practicamos el clustering K_Means con 2 ejemplos.\n", + "\n", + "* K-means en un dataset generados aleatoriamente \n", + "* Usando K-means para la segmentación de clientes \n", + "# Tabla de contenidos\n", + "\n", + "* K_Means en un dataset generado aleatoriamente\n", + "1. Configuración de k_means\n", + "2. Creación del gráfico para la visualización\n", + "* Segmentación de clientes con K_means\n", + "1. Pre-procesamiento\n", + "2. Modelado\n", + "3. Insights\n", + "\n", + "# 1. Importar las librerías necesarias" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "-N3kWyxU28Rt", + "outputId": "b2537385-38c4-4506-e96a-8d40d30ed2ed" + }, + "outputs": [], + "source": [ + "import random\n", + "import numpy as np\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "from sklearn.cluster import KMeans\n", + "from sklearn.datasets.samples_generator import make_blobs\n", + "%matplotlib inline\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "3GuRs42a9UM0" + }, + "source": [ + "# K_Means en un dataset generado aleatoriamente\n", + "Creamos nuestro propio dataset para este lab.\n", + "Primero necesitmos configurar una seed aleatoria. Usamos la función numpy random.seed(), donde seed se establecerá en 0 " + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "id": "VIHEu9x--mlW" + }, + "outputs": [], + "source": [ + "np.random.seed(0)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "2270UYqZ-wyP" + }, + "source": [ + "Acontenuación creamos grupos aleatorios de puntos utilizando la clase make_blobs. La clase make_blobs puede tomar muchas entradas pero usaremos estas especificas.\n", + "\n", + "__ Input__\n", + "* n_samples: El número total de puntos divididos equitativamente entre los grupos\n", + "
    * El valor será: 5000
\n", + "* Centros: El número de centros a generar o las ubicaciónes de los centros fijos.\n", + "
    * El valor será: [[4,4], [-2,-1],[2,-3],[1,1]]
\n", + "* cluster_std: La desviación estandar de cluster\n", + "
    * El valor será: 0.9
\n", + "\n", + "__Output__\n", + "* X: Array of shape[n_samples].(Feature Matrix)\n", + "
    * Las muetras generadas
\n", + "* y: Array of shape[n_samples].(Response vector)\n", + "