{"cells":[{"cell_type":"markdown","metadata":{"id":"9w55iu84dhSc"},"source":["# Práctica 1: Reconocimiento de dígitos manuscritos con extracción manual de características\n","\n","El nuevo banco \"First bank of Wiki\" desea implementar un sistema de reconocimiento automático de cheques como el siguiente:\n","\n","![texto alternativo](https://upload.wikimedia.org/wikipedia/commons/b/b9/CanadianChequeSample.png)\n","\n","\n","Actualmente, el banco cuenta con un sistema capaz de aislar los dígitos y convertirlos en imágenes de 8 x 8, pero no de reconocer de qué dígito se trata. Por esa razón, nos ha solicitado realizar un módulo capaz de reconocer dígitos manuscritos dada una imagen de 8 x 8 pixeles:\n","\n","\n","![image.png](data:image/png;base64,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)\n","\n"]},{"cell_type":"markdown","metadata":{"id":"JRXCJPO4i9As"},"source":["# Cargando los datos\n","\n","Primero vamos a cargar el dataset y visualizar algunos dígitos."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"idhJWfyXjI01"},"outputs":[],"source":["from sklearn.datasets import load_digits\n","from sklearn.model_selection import train_test_split\n","import matplotlib.pyplot as plt\n","import numpy as np\n","\n","digits = load_digits()\n","\n","for i in range(1,17):\n"," plt.subplot(4,4,i)\n"," plt.imshow(digits.images[i,:,:], cmap=plt.get_cmap('gray_r'))\n"]},{"cell_type":"markdown","metadata":{"id":"Sg0KTo54o_5-"},"source":["# Binarizando el problema\n","\n","Para comenzar con un problema más simple, sólo trabajaremos en el escenario de clasificación binaria para dígitos 0 y 1. Para eso, primero filtramos los datos y luego los particionamos en training y test folds."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"kGgaFFAeMfZ7"},"outputs":[],"source":["# Cargo los dígitos\n","#X, y = load_digits(return_X_y=True)\n","X, y = digits.images, digits.target\n","\n","# Filtro los que sean 0 o 1\n","indices = np.array(range(X.shape[0]))\n","bin_indices = indices[(y==0) | (y == 1)]\n","\n","X_bin = X[bin_indices,:,:]\n","y_bin = y[bin_indices]\n","\n","# Creo los splits para training y test\n","X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)\n","X_bin_train, X_bin_test, y_bin_train, y_bin_test = train_test_split(X_bin, y_bin, test_size=0.33, random_state=42)\n","\n","print(\"Total de datos para clasificación entre 10 dígitos: \" + str(y.shape[0]))\n","print(\"Total de datos para clasificación binaria: \" + str(y_bin.shape[0]))\n","print(\"Total de 1s para clasificación binaria: \" + str(y_bin_test.sum()))\n","print(\"Total de 0s para clasificación binaria: \" + str(y_bin_test.shape[0] - y_bin_test.sum()))\n"]},{"cell_type":"markdown","metadata":{"id":"TyUyLdAA6V9D"},"source":["Visualizamos ahora los dígitos del problema binario"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"wtL6E1nq6bpT"},"outputs":[],"source":["for i in range(1,17):\n"," plt.subplot(4,4,i)\n"," plt.imshow(X_bin[i,:,:], cmap=plt.get_cmap('gray_r'))"]},{"cell_type":"markdown","metadata":{"id":"SPuQbJ5r6j_K"},"source":["# Entrenando un perceptrón simple con extracción manual de características para clasificación binaria\n","\n","Ahora procederemos a entrenar un perceptrón usando la biblioteca Scikit Learn. Esta biblioteca de aprendizaje automático implementa muchísimos modelos listos para usar. En este caso, usaremos el perceptrón simple `sklearn.linear_model.Perceptron`\n","\n","Pero antes de definir el perceptrón, vamos a definir el método de extracción de características que transformará una imagen (`np.array`) de 8 x 8 en un vector unidimensional de 2 componentes. Para ello, podemos probar con dos estrategias diferentes (si se les ocurre alguna otra, adelante!):\n","\n","* **Estrategia 1:** vamos a considerar la feature 0 como la media de intensidades de la parte superior del dígito (filas 0 a 3) y y la feature 1 como la media de la parte inferior (filas 4 a 7) tal como indica la imagen:\n","\n","![image.png](data:image/png;base64,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P+b3IAABhNBf94h2diQwNnX2HgT7gQAQAAJAoOkJVLlPStObBhYAASAABIAAEHASAqCmTtJRYCYQAAJAAAg4MAFQUwfuHDANCAABIAAEnIQAqKmTdBSYCQSAABAAAg5MANTUgTsHTAMCQAAIAAEnIQBq6iQdBWYCASAABICAAxMANXXgzgHTgAAQAAJAwEkIgJo6SUeBmUAACAABIODABEBNHbhzwDQgAASAABBwEgKgpk7SUWAmEAACQAAIODABUFMH7hwwDQgAASAABJyEAKipk3QUmAkEgAAQAAIOTADU1IE7B0wDAkAACAABJyEAauokHQVmAgEgAASAgAMTADV14M4B04AAEAACQMBJCICaOklHgZlAAAgAASDgwARATR24c8A0IAAEgAAQcBICoKZO0lFgJhAAAkAACDgwAVBTB+4cMA0IAAEgAASchACoqZN0FJgJBIAAEAACDkwA1NSBOwdMAwJAAAgAASchAGrqJB0FZgIBIAAEgIADEwA1deDOAdOAABAAAkDASQiAmjpJR4GZQAAIAAEg4MAEQE0duHPANCAABIAAEHASAqCmTtJRYCYQAAJAAAg4MAFQUwfuHDANCAABIAAEnIQAqKmTdBSYCQSAABAAAg5MANTUgTsHTAMCQAAIAAEnIQBq6iQdBWYCASAABICAAxMANXXgzgHTgAAQAAJAwEkIgJo6SUeBmUAACAABIODABEBNHbhzwDQgAASAABBwEgKgpk7SUWAmEAACQAAIODABUFMH7hwwDQgAASAABJyEAKipk3QUmAkEgAAQAAIOTOD/AXI/CiaqhP+4AAAAAElFTkSuQmCC)\n","\n","* **Estrategia 2:** Como alternativa, vamos a considerar la feature 0 como la media de toda la imagen, y la feature 1 como el desvío estandar:\n","\n","![image.png](data:image/png;base64,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oiKJRNKhQ4cXXnihdevWVAa7yLVr106cOPHw4cO8vDyEkL+/f48ePRISEng8nm3OoqKi48ePp6en48SDBw/aTtB169YNPxJLS0u7f/++SCSq/AwSIZSbm3vu3DmEUL9+/WyfPp47dy43N1cmkw0cOBAh9Ndff+3duzc7O5sgiNmzZ7dt26TSj3EAACAASURBVJayRKVS7du3Ly0traioSCQStWnTZvjw4ZXX3eD8FCWqeC0jY8eOnTFjxtatW5cvX46fldayIGQDAkDAloAjKdq+fTtC6KmnnrK7PSUlJb3//vtULbutAX8cPXr01q1bqUurVq2aM2cOHjxRiXPmzBkxYsT69evlcjmViBB68ODBsGHD8BSWbTpeCrF69ep///vfVHpFRcWoUaOoj/iBFvXxq6++wlK0d+/e6dOnI4SKi4srS1F+fj6u5Oeff54wYQJVfNu2bXiurKKi4tNPP129ejW1XCcmJoaSos2bN3/88cf5+flUQYTQ119/3adPn19//dXf3982PTk5GX/s37+/bTqODxgwAEeOHDlSFylKTExct24dVf8Ka8AfKSYIIZPJ9Nlnn61evdpusv6TTz55//33ly5dandrPn369Pjx4+/du0fVjCPLli1r2bLlpk2bevbsSV26ceOGbddMnjyZuoQQ2r1797/+9S+E0Lp1637++efAwEA8l2ibByGUlpaGK0lLS7N9Crhs2bLff/+9bdu2KSkpEyZM2LNnD1Vw3LhxWIpIklxoDRqNhrqKEJo1a9a4cePWrVsnFott0+sSHzRo0IwZM7Ra7d69e8eNG1eXqqAsEPBkAtVKEUEQeKFXXFycHaDw8PCRI0eSJLlz506EULt27Tp27Ijz2A6JpkyZsmrVKoSQr6/vsGHDwsPDdTrd0aNHz507t2vXrvv37585c8Z2TVdJScnly5clEslzzz3XoUMHHx+foqKiW7duHT58uKSkZOzYsUKhcMSIEbghPp8/cuRIlUp17NgxvAogICCAshPrEPWRcWTmzJlr1qxp1qxZv379FArF/fv3qRHAokWLPv30U4SQl5fX8OHD27Ztazabz5w5k5ycfOzYse7du6elpdlOteFhlkwms9N1bFtISIiPj49KpcLZGBvcpUuXkSNHlpaW4gfpzzzzTHBwMK6NYmIymYYOHZqUlIQQCg0NHTx4cHBwcHFx8d69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)\n"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"KSeo0BVNVuhe"},"outputs":[],"source":["def extract_features_mean_std(x):\n"," x_out = np.zeros(shape=(1,2))\n"," x_out[0,0] = ....\n"," x_out[0,1] = ....\n","\n"," return x_out\n","\n","def extract_features_mean_top_bottom(x):\n"," x_out = np.zeros(shape=(1,2))\n","\n"," ......\n","\n"," return x_out\n","\n","def preprocess_features_mean_std(X):\n"," X_pp = np.zeros(shape=(X.shape[0], 2))\n","\n"," for i in range(X.shape[0]):\n"," X_pp[i,:] = extract_features_mean_std(X[i,:,:])\n","\n"," return X_pp\n"," \n","def preprocess_features_mean_top_bottom(X):\n"," X_pp = np.zeros(shape=(X.shape[0], 2))\n","\n"," for i in range(X.shape[0]):\n"," X_pp[i,:] = extract_features_mean_top_bottom(X[i,:,:])\n","\n"," return X_pp"]},{"cell_type":"markdown","metadata":{"id":"a8-ngXGZNJls"},"source":["Ahora implementamos el perceptrón usando la clase `sklearn.linear_model.Perceptron` y lo entrenamos usando las features elegidas (probar con ambas features y ver cuál da mejor accuracy)."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"rZTR7ucsM7i9"},"outputs":[],"source":["\n","# Definimos un pereceptrón\n","clasificador = ...........\n","\n","# Transformamos las features de los datos para el problema binario\n","X_bin_train_features = preprocess_.....( .... )\n","X_bin_test_features = preprocess_.....( ...... )\n","\n","# Entrenamos el clasificador\n","clasificador.......\n","\n","# Imprimir la accuracy en los datos de test.\n","print(\"Accuracy en test: \" + str(clasificador.score( ......... )))\n","\n","# Imprimir las predicciones realizadas para los datos de test\n","\n","print(\"Predictions: \" + str(clasificador.predict( ......... )))\n","\n"]},{"cell_type":"markdown","metadata":{"id":"D4_AbzSsRPnk"},"source":["# Visualizando las features\n","\n","Para entender el grado de discriminabilidad que presentan nuestras features, vamos a visualizarlas. Para hacerlo, colorear los items de cada clase con un color diferente."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"x6Se0EBpU2Du"},"outputs":[],"source":["plt.figure()\n","plt.scatter( ..... )"]},{"cell_type":"markdown","metadata":{"id":"CBE98daaMkyj"},"source":["# Complicando las cosas: \n","\n","\n","Ahora volvemos al caso de 10 dígitos y probamos la misma estrategia que estábamos usando anteriormente."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"rmEkarqVYTfa"},"outputs":[],"source":["# Definimos un pereceptrón\n","clasificador10 = ........\n","\n","X_train_features = preprocess.......(X_train)\n","X_test_features = preprocess........(X_test)\n","\n","clasificador10.......\n","\n","# Imprimir la accuracy en los datos de test.\n","print(\"Accuracy en test: \" + str(clasificador10.score( ......... )))\n","\n","# Imprimir las predicciones realizadas para los datos de test\n","\n","print(\"Predictions: \" + str(clasificador10.predict( ......... )))\n"]},{"cell_type":"markdown","metadata":{"id":"HB_GNJ5rbjrH"},"source":["Para intentar entender por qué disminuye tan drásticamente la performance, visualicen las features de las 10 clases coloreando cada punto en un color diferente como hicimos anteriormente."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"TARhDBtJbJfG"},"outputs":[],"source":["plt.figure()\n","plt.scatter( ....... )"]},{"cell_type":"markdown","metadata":{"id":"bq3syn9nantl"},"source":["# Entregable:\n","* Deberán entregar el Colab completo con el código funcionando. Además, deberán incluir (en el mismo Colab) un pequeño informe donde muestren las visualizaciones de las features, y responder a las siguientes preguntas:\n","\n","1. ¿Cuál fue la estrategia de extracción de características que mejor te funcionó? Visualizar las features generadas por los extractores implementados y utilizarlas para explicar por qué funcionó mejor esa estrategia.\n","\n","2. ¿Cuál sería la accuracy para un algoritmo que prediga aleatoriamente las clases en el caso del problema binario si los datos de test estuvieran balanceados? ¿Y en el caso del problema multiclase de 10 dígitos? \n","\n","3. El clasificador diseñado en cada caso (binario y multiclase), ¿Funcionó mejor que un clasificador aleatorio?\n","\n"]},{"cell_type":"markdown","metadata":{"id":"LILdOHhVPkdV"},"source":["# Respuesta:\n","\n"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"7TJUynJJPqsK"},"outputs":[],"source":[]}],"metadata":{"accelerator":"GPU","colab":{"authorship_tag":"ABX9TyOVQwrMIt6JYG/KorouqouK","name":"Practica 1 UTDT 2021 - Estudiantes","provenance":[{"file_id":"1qaxOuOyuO6WDLWSM73gV_xn0qYB1EKtW","timestamp":1581540422452}]},"kernelspec":{"display_name":"Python 3","name":"python3"}},"nbformat":4,"nbformat_minor":0}