  <?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
               xmlns:atom="http://www.w3.org/2005/Atom"
               xmlns:dc="http://purl.org/dc/elements/1.1/"
               xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
               xmlns:admin="http://webns.net/mvcb/"
               xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
               xmlns:content="http://purl.org/rss/1.0/modules/content/">
            <channel>
                <title>
                							Machine Learning - Comunidad aiutechallenge                                    </title>
                <link>https://aichallenge.utec.edu.uy/community/machine-learning/</link>
                <description>Comunidad de AI de UTEC</description>
                <language>es</language>
                <lastBuildDate>Thu, 25 Jun 2026 05:55:48 +0000</lastBuildDate>
                <generator>wpForo</generator>
                <ttl>60</ttl>
                					                    <item>
                        <title>Cómo elegir buenas variables categóricas</title>
                        <link>https://aichallenge.utec.edu.uy/community/machine-learning/como-elegir-buenas-variables-categoricas/</link>
                        <pubDate>Thu, 16 Sep 2021 19:29:37 +0000</pubDate>
                        <description><![CDATA[Introducción
En el anterior artículo (clickea aquí por si no lo leíste, ya que mencionaremos conceptos explicados en ese artículo) explicamos la importancia de elegir buenas variables al mo...]]></description>
                        <content:encoded><![CDATA[<p style="text-align: center"><strong>Introducción</strong></p>
<p><span style="font-weight: 400">En el anterior artículo (</span><a href="https://aichallenge.utec.edu.uy/community/machine-learning/eligiendo-buenas-variables-a-traves-de-coeficientes-de-correlacion/" target="true"><span style="font-weight: 400">clickea aquí </span></a><span style="font-weight: 400">por si no lo leíste, ya que mencionaremos conceptos explicados en ese artículo) explicamos la importancia de elegir buenas variables al momento de armar un modelo predictivo. Básicamente no importa que tan sofisticado sea el modelo que utilizamos si no lo alimentamos con buenos datos. Y una buena manera de distinguir buenos datos es calculando el coeficiente de correlación (o más precisamente, pidiéndole a python que lo calcule por nosotros). Por más de que el coeficiente de correlación sea muy útil, tiene limitaciones. Una de estas limitaciones es que no sirve para datos categóricos, por lo que es necesario recurrir a ciertas alternativas para trabajar con este tipo de datos.</span></p>
<p><span style="font-weight: 400">En este artículo utilizaremos código de la librería </span><a href="https://github.com/shakedzy/dython" target="true"><span style="font-weight: 400">Dython</span></a><span style="font-weight: 400"> para Python, creada por  </span><a href="https://github.com/shakedzy" target="true"><span style="font-weight: 400">Shaked Zychlinski</span></a><span style="font-weight: 400">. Si quieres instarla (muy recomendable), en </span><a href="https://github.com/shakedzy/dython" target="true"><span style="font-weight: 400">esta página</span></a><span style="font-weight: 400"> de github se explica como. Este artículo explica varios conceptos de forma simplificada al estar pensado para principiantes. Si quieres explorar estos conceptos de forma más detallada y explicados por el mismo Shaked Zychlinski puedes </span><a href="https://towardsdatascience.com/the-search-for-categorical-correlation-a1cf7f1888c9" target="true"><span style="font-weight: 400">clickear aquí</span></a><span style="font-weight: 400">. Además de eso, es importante destacar que explicamos el funcionamiento de distintas técnicas estadísticas sin adentrarnos en los conceptos matemáticos detrás de las mismas.</span></p>
<p style="text-align: center"><strong>Diferencias entre datos numéricos continuos y categóricos</strong></p>
<p><span style="font-weight: 400">En el área del Machine Learning es muy común dividir todos los datos en dos categorías: datos numéricos y datos categóricos. Los datos numéricos son todos aquellos que puedan ser representados con números, mientras que los datos categóricos son todos aquellos que no pueden ser representados numéricamente. Por ejemplo, en un dataset que tenga datos sobre personas puedo tener las siguientes variables numéricas: fecha de nacimiento, peso, altura, salario. Mientras que por otro lado puedo tener ciertas variables categóricas como: sexo, color de ojos, nacionalidad, ocupación, estado civil, etc. </span></p>
<p><span style="font-weight: 400">Los datos categóricos no tienen un orden matemático. Volviendo al ejemplo del dataset de personas, podemos ordenar el mismo de menor a mayor en relación a la edad de cada individuo. Sabemos que en ese caso una persona con 18 años aparecería antes en el dataset que una de 45. Pero si intentamos ordenar de menor a mayor en función de su color de ojos…¿Cuál iría primero? Los colores no tienen un valor matemático inherente que podamos usar para ordenarlos, es por este motivo que la gran herramienta de la correlación no es muy útil en estos casos. </span></p>
<p><span style="font-weight: 400">Una de las primeras ideas que puede surgir para intentar solucionar este problema podría ser reemplazar cada valor con un número. Podemos intentar entonces que cada color de ojos se corresponda con el número ¿Que podría salir mal?</span></p>
<p><span style="font-weight: 400">Supongamos entonces que le asignamos un número a cada color como muestra la tabla.</span></p>
<table>
<tbody>
<tr>
<td>
<p><strong>Color de ojos</strong></p>
</td>
<td>
<p><strong>Valor numerico</strong></p>
</td>
</tr>
<tr>
<td>
<p><span style="font-weight: 400">marrón</span></p>
</td>
<td>
<p><span style="font-weight: 400">1</span></p>
</td>
</tr>
<tr>
<td>
<p><span style="font-weight: 400">azul</span></p>
</td>
<td>
<p><span style="font-weight: 400">2</span></p>
</td>
</tr>
<tr>
<td>
<p><span style="font-weight: 400">verde</span></p>
</td>
<td>
<p><span style="font-weight: 400">3</span></p>
</td>
</tr>
<tr>
<td>
<p><span style="font-weight: 400">gris</span></p>
</td>
<td>
<p><span style="font-weight: 400">4</span></p>
</td>
</tr>
</tbody>
</table>
<p><span style="font-weight: 400">Tal vez no sea tan obvio a simple vista, pero de acuerdo a nuestra tabla el promedio entre marrón y verde es ahora igual a azul... Esto claramente es un problema, no solo porque no tiene sentido promediar colores, sino por el sencillo hecho de que si la tabla estuviera ordenada de otra manera el resultado de ese promedio podría ser completamente diferente. </span></p>
<p><span style="font-weight: 400">La moraleja de este ejemplo entonces es: </span><strong>los datos categóricos son diferentes a los datos numéricos, por lo que deberíamos tratarlos de forma diferente.</strong></p>
<p> </p>
<p style="text-align: center"><strong>Asociación entre variables categóricas</strong></p>
<p><span style="font-weight: 400">Supongamos que tenemos dos variables categóricas y queremos saber si tienen alguna relación entre sí. Sabemos que no podemos calcular su coeficiente de correlación, por lo que sería incorrecto decir que estamos intentando medir su “correlación”. Diremos entonces que queremos medir de alguna forma su “asociación”. </span></p>
<p><span style="font-weight: 400">Para este propósito existen herramientas como la V de Cramer y la U de Theil. Esta última (también conocida como coeficiente de incertidumbre) es la más apropiada para nuestro caso. </span></p>
<p> </p>
<p><span style="font-weight: 400">Veamos entonces cómo funciona el coeficiente de incertidumbre. Supongamos que tenemos una variable X y una variable Y. Para obtener el valor del coeficiente se sigue el siguiente razonamiento: dado un valor de X ¿Cuántos estados posibles tiene Y y con qué frecuencia se ocurren estos estados?. </span></p>
<p> </p>
<p><span style="font-weight: 400">Si estás interesado en entender el funcionamiento matemático detrás del coeficiente de incertidumbre, puedes </span><a href="https://en.wikipedia.org/wiki/Uncertainty_coefficient" target="true"><span style="font-weight: 400">hacer click aquí </span></a><span style="font-weight: 400">para leer más al respecto. Por ahora basta simplemente con entender los resultados de esta técnica, ya que Python se encargará de todos los cálculos matemáticos por nosotros. Usar la U de Theil no es tan distinto a usar la correlación de Pearson ya que nos devuelve un valor numérico entre 0 y 1. Entre más cercano a 1 sea el valor más fuerte es la asociación entre las variables y más recomendables es utilizarla en un modelo predictivo.</span></p>
<p> </p>
<p><span style="font-weight: 400">La librería Dython incluye una función para calcular automáticamente el valor de la U de Theil. Pero también puedes copiar y pegar el siguiente código para utilizar la función en tu código.</span><span style="font-weight: 400"></span></p>
<p><a title="Ver código" href="https://colab.research.google.com/drive/1vVX2eoe9TjLEc4WZY8lWRcs0QqORQcM0?usp=sharing" target="true">Ver código</a></p>
<p> </p>
<p style="text-align: center"><strong>Asociación entre variables categóricas y </strong><strong>numéricas</strong></p>
<p><span style="font-weight: 400">Ya sabemos que hacer para medir la asociación entre dos variables categóricas y entre dos variables numéricas. ¿Qué hacemos entonces si tenemos una variable numérica continua y una variable categórica? En ese caso podemos recurrir a la </span><strong>razón de correlación</strong><span style="font-weight: 400"> (no confundir con coeficiente de correlación). </span></p>
<p> </p>
<p><span style="font-weight: 400">Esta técnica también nos devuelve un valor entre 0 y 1, donde la asociación es más fuerte entre más cercano esté el valor a 1. Supongamos nuevamente que tenemos una variable X y una variable Y. Para obtener dicho valor se sigue el siguiente razonamiento: dado un valor numérico continuo. ¿Qué tan precisamente podemos predecir a qué categoría pertenece? </span></p>
<p> </p>
<p><span style="font-weight: 400">Como siempre, puedes </span><a href="https://es.wikipedia.org/wiki/Raz%C3%B3n_de_correlaci%C3%B3n" target="true"><span style="font-weight: 400">clickear aquí</span></a><span style="font-weight: 400"> para adentrarte en el funcionamiento matemático de esta técnica. Pero aún así te recordamos que un entendimiento tan profundo no es necesario para sacarle provecho, ya que como siempre Python se encarga de todos los cálculos por nosotros.</span></p>
<p> </p>
<p><span style="font-weight: 400">Una vez más, puedes recurrir a la librería Dython para acceder a una función para calcular la razón de correlación o puedes copiar y pegar el código a continuación.</span></p>
<p><a title="ejemplo 2" href="https://colab.research.google.com/drive/1NZtWfv_ijJ-b9pHpWQaFtfvnu8r-GKV8?usp=sharing" target="true">Ver código</a></p>
<p style="text-align: center"><strong>Resumen</strong></p>
<p><span style="font-weight: 400">¿No tienes ganas de leer? Te dejamos entonces una tabla indicando qué técnica usar en cada caso.</span></p>
<p> </p>
<table>
<tbody>
<tr>
<td>
<p><span style="font-weight: 400">Numérica continua</span></p>
</td>
<td>
<p><span style="font-weight: 400">Numérica continua</span></p>
</td>
<td>
<p><span style="font-weight: 400">Correlación (de Pearson o alguna otra)</span></p>
</td>
</tr>
<tr>
<td>
<p><span style="font-weight: 400">Categórica</span></p>
</td>
<td>
<p><span style="font-weight: 400">Categórica</span></p>
</td>
<td>
<p><span style="font-weight: 400">Coeficiente incertidumbre</span></p>
</td>
</tr>
<tr>
<td>
<p><span style="font-weight: 400">Categórica</span></p>
</td>
<td>
<p><span style="font-weight: 400">Numérica continua</span></p>
</td>
<td>
<p><span style="font-weight: 400">Razón de correlación</span></p>
</td>
</tr>
</tbody>
</table>]]></content:encoded>
                        <category domain="https://aichallenge.utec.edu.uy/community/machine-learning/">Machine Learning</category>                        <dc:creator>taa.admin</dc:creator>
                        <guid isPermaLink="true">https://aichallenge.utec.edu.uy/community/machine-learning/como-elegir-buenas-variables-categoricas/</guid>
                    </item>
                                        <item>
                        <title>Eligiendo buenas variables a través de coeficientes de correlación</title>
                        <link>https://aichallenge.utec.edu.uy/community/machine-learning/eligiendo-buenas-variables-a-traves-de-coeficientes-de-correlacion/</link>
                        <pubDate>Thu, 24 Jun 2021 15:17:15 +0000</pubDate>
                        <description><![CDATA[Introducción
Al momento de armar modelos de predicción podemos utilizar una gran variedad de técnicas, como redes neuronales, bosques aleatorios, regresiones, etc. Pero sin importar la técn...]]></description>
                        <content:encoded><![CDATA[<p style="text-align: center"><strong>Introducción</strong></p>
<p><span style="font-weight: 400">Al momento de armar modelos de predicción podemos utilizar una gran variedad de técnicas, como redes neuronales, bosques aleatorios, regresiones, etc. Pero sin importar la técnica que usemos, no será de gran utilidad si no usamos buenos datos para entrenar el modelo.</span></p>
<p><span style="font-weight: 400">Hay diversos factores que influyen en lo que podemos considerar “buenos datos”, en este artículo nos centraremos en uno de los aspectos más básicos: elegir las mejores variables.</span></p>
<p><span style="font-weight: 400">Explicaremos de una forma accesible los conceptos de correlación y mostraremos ejemplos prácticos.</span></p>
<p><span style="font-weight: 400">Un ejemplo de dataset (conjunto de datos) podría ser el siguiente, donde </span><span style="font-weight: 400">cada columna representa una variable</span><span style="font-weight: 400">.</span></p>
<p><span style="font-weight: 400">Podríamos intentar usarlo para hacer un modelo capaz de predecir el valor de distintos pasajes de avión a partir de las otras variables.</span></p>
<table>
<tbody>
<tr>
<td colspan="7">
<p><span style="font-weight: 400">Dataset de ejemplo sobre vuelos de avión de una empresa X</span></p>
</td>
</tr>
<tr>
<td>
<p><strong>Id</strong></p>
</td>
<td>
<p><strong>Origen</strong></p>
</td>
<td>
<p><strong>Destino</strong></p>
</td>
<td>
<p><strong>Cantidad de asientos</strong></p>
</td>
<td>
<p><strong>Fecha del vuelo</strong></p>
</td>
<td>
<p><strong>Distancia recorrida (km)</strong></p>
</td>
<td>
<p><strong>Precio</strong></p>
</td>
</tr>
<tr>
<td>
<p><span style="font-weight: 400">1</span></p>
</td>
<td>
<p><span style="font-weight: 400">Montevideo (UY)</span></p>
</td>
<td>
<p><span style="font-weight: 400">Santiago de Chile (CL)</span></p>
</td>
<td>
<p><span style="font-weight: 400">200</span></p>
</td>
<td>
<p><span style="font-weight: 400">23/12/21</span></p>
</td>
<td>
<p><span style="font-weight: 400">1.342,83</span></p>
</td>
<td>
<p><span style="font-weight: 400">750</span></p>
</td>
</tr>
<tr>
<td>
<p><span style="font-weight: 400">2</span></p>
</td>
<td>
<p><span style="font-weight: 400">Montevideo(UY)</span></p>
</td>
<td>
<p><span style="font-weight: 400">Barcelona (ESP)</span></p>
</td>
<td>
<p><span style="font-weight: 400">250</span></p>
</td>
<td>
<p><span style="font-weight: 400">30/12/21</span></p>
</td>
<td>
<p><span style="font-weight: 400">10.353,63 km</span></p>
</td>
<td>
<p><span style="font-weight: 400">3000</span></p>
</td>
</tr>
<tr>
<td>
<p><span style="font-weight: 400">3</span></p>
</td>
<td>
<p><span style="font-weight: 400">Montevideo(UY)</span></p>
</td>
<td>
<p><span style="font-weight: 400">Buenos Aires (ARG)</span></p>
</td>
<td>
<p><span style="font-weight: 400">100</span></p>
</td>
<td>
<p><span style="font-weight: 400">29/5/21</span></p>
</td>
<td>
<p><span style="font-weight: 400">220.68</span></p>
</td>
<td>
<p><span style="font-weight: 400">159</span></p>
</td>
</tr>
<tr>
<td>
<p><span style="font-weight: 400">4</span></p>
</td>
<td>
<p><span style="font-weight: 400">Montevideo(UY)</span></p>
</td>
<td>
<p><span style="font-weight: 400">São Paulo (BR)</span></p>
</td>
<td>
<p><span style="font-weight: 400">300</span></p>
</td>
<td>
<p><span style="font-weight: 400">15/521</span></p>
</td>
<td>
<p><span style="font-weight: 400">1567.83</span></p>
</td>
<td>
<p><span style="font-weight: 400">400</span></p>
</td>
</tr>
<tr>
<td>
<p><span style="font-weight: 400">5</span></p>
</td>
<td>
<p><span style="font-weight: 400">Montevideo(UY)</span></p>
</td>
<td>
<p><span style="font-weight: 400">Lima (PE)</span></p>
</td>
<td>
<p><span style="font-weight: 400">250</span></p>
</td>
<td>
<p><span style="font-weight: 400">10/6/21</span></p>
</td>
<td>
<p><span style="font-weight: 400">3,298</span></p>
</td>
<td>
<p><span style="font-weight: 400">412</span></p>
</td>
</tr>
</tbody>
</table>
<p><span style="font-weight: 400">Cuando usamos un dataset es poco probable que usemos todas las variables que vienen con el mismo, esto es porque algunas variables son más útiles que otras dependiendo de qué es lo que queremos predecir. Al punto de que la precisión del modelo puede bajar drásticamente si incluimos variables que no tengan una fuerte relación con la variable objetivo. Así que nuestro objetivo entonces es darle al modelo </span><span style="font-weight: 400">únicamente aquellas variables que mejoren su precisión</span><span style="font-weight: 400">. Por lo que surge entonces la pregunta: </span><strong>¿Cómo sabemos cuáles variables son “mejores”?</strong></p>
<p> </p>
<p style="text-align: center"><strong>Correlación</strong></p>
<p><span style="font-weight: 400">La correlación es una de las herramientas más útiles para poder elegir nuestras variables. La correlación es un concepto estadístico, lo cual implica matemática. Pero antes de entrar en pánico es importante saber que las herramientas de software se encargan de esta matemática por nosotros. Por lo que, con un entendimiento superficial es más que suficiente para comenzar a usar esta herramienta, aunque claramente el entendimiento matemático no le hace daño a nadie. Un aspecto importante a destacar es que por más que es muy útil, la correlación tiene limitaciones. Una de las más obvias es que al calcularse numéricamente, </span><span style="text-decoration: underline"><span style="font-weight: 400">es imposible obtener la correlación entre una variable numérica y otra no numérica</span></span><span style="font-weight: 400"> (un ejemplo de valor no numérico puede ser un color o una nacionalidad). Pero no te preocupes, en futuros artículos explicaremos cómo averiguar la relación entre estos tipos de variables.</span></p>
<p> </p>
<p><span style="font-weight: 400">La correlación se encarga de medir la relación entre dos variables, esto no implica necesariamente causalidad pero puede ser útil para predicciones. La correlación significa que dos variables tienen algún tipo de relación detectable, mientras que la causalidad implicaría que una variable influye directamente en la otra. Esto se entiende mejor con un ejemplo: Hace algunos años un estudio científico mostró que los niños menores de dos años que dormían con la luz encendida tenían mayores chances de sufrir de miopía. Estudios posteriores no encontraron ninguna relación entre luz nocturna y tendencia a sufrir de miopía, pero si demostraron que los padres que sufrían de miopía tenían una tendencia a dejar las luces encendidas durante la noche, además de eso, estudios previos también indicaban que existen predisposiciones genéticas a sufrir de miopía (es decir, es normal heredar). Con este ejemplo observamos que claramente hay una relación entre niños menores de 2 años durmiendo con la luz encendida y la miopía, pero esto no significa que la miopía sea </span><strong>causada</strong><span style="font-weight: 400"> por dormir con la luz encendida. </span></p>
<p> </p>
<p><span style="font-weight: 400">Hay varios tipos de correlación, la más utilizada es la de Pearson o lineal, seguida por la Spearman y Kendall. En este artículo explicaremos únicamente la primera.</span></p>
<p> </p>
<p style="text-align: center"><strong>Un rápido recordatorio</strong></p>
<p><span style="font-weight: 400">Si leíste el artículo sobre </span><a href="https://aichallenge.utec.edu.uy/community/machine-learning/introduccion-a-regresion-lineal/#post-115"><span style="font-weight: 400">regresión</span></a><span style="font-weight: 400">, recordarás que toda recta tiene una pendiente. Si la pendiente es positiva la recta “irá hacia arriba” mientras que si la pendiente es negativa la recta “irá hacia abajo”. La siguiente animación muestra los efectos de variar la pendiente m (normalmente se usa la letra </span><i><span style="font-weight: 400">m</span></i><span style="font-weight: 400"> para representar la pendiente).</span></p>
<p><img src="https://aichallenge.utec.edu.uy/wp-content/uploads/2021/01/1h9WjV_gSnNZ5aWlDF8ov36yyEnWbtFWdW39uWk0.gif" /></p>
<p> </p>
<p style="text-align: center"><strong>Coeficiente de correlación de Pearson</strong></p>
<p><span style="font-weight: 400">La correlación de Pearson es la más intuitiva y sencilla, debido a esto suele ser la primera opción al medir correlaciones. Calcular el coeficiente de correlación de Pearson nos da un número que puede ir del -1 al 1. El primer valor indica una correlación perfectamente negativa, mientras que el segundo indica una correlación perfectamente positiva. Un valor de 0 por otro lado indicaría una correlación nula.</span></p>
<p><span style="font-weight: 400">Si te interesa entender la matemática detrás del coeficiente de correlación puedes ir al siguiente </span><a href="https://es.wikipedia.org/wiki/Coeficiente_de_correlaci%C3%B3n_de_Pearson"><span style="font-weight: 400">enlace</span></a><span style="font-weight: 400">, pero este artículo se limitará a una explicación general, lo cual es más que suficiente para comenzar a armar tus propios modelos (e incluso para ganar desafíos en aiutechallenge).</span></p>
<p><span style="font-weight: 400">La explicación sencilla es: si graficamos una variable en función de otra, </span><strong>entre más cerca estén los puntos de formar una recta más fuerte será la correlación de Pearson. </strong><span style="font-weight: 400">Si esta recta imaginaria tiene una pendiente positiva, el coeficiente de correlación será positivo, mientras que si la pendiente es negativa el coeficiente de correlación será negativo.</span></p>
<p><span style="font-weight: 400">Por ejemplo, supongamos que vamos a comprar varias unidades de un </span><span style="text-decoration: underline"><span style="font-weight: 400">producto con un precio fijo</span></span><span style="font-weight: 400">. Si graficamos el precio en función de la cantidad comprada deberíamos obtener una correlación perfecta como muestra la siguiente gráfica, los puntos están perfectamente alineados en una recta por lo que obtenemos una correlación de 1 (algo que nunca va a pasar en la vida real).</span></p>
<p><img src="https://aichallenge.utec.edu.uy/wp-content/uploads/2021/06/1B8_eSwmsx0-ALvgpEKpayeG6WWgOpXn9n1Cyl3o.gif" /></p>
<p><span style="font-weight: 400">En el mundo real las cosas son un poco más complejas, generalmente comprar por mayor es más barato que comprar por menor, por lo que una gráfica más realista de precio en relación de cantidad sería la siguiente.</span></p>
<p><img src="https://aichallenge.utec.edu.uy/wp-content/uploads/2021/06/1vY8jmx1g_q_gjH4dHsHOBdmMe5sbN66OtsEpHo0.gif" /></p>
<p><span style="font-weight: 400">Vemos que ahora los puntos ya no encajan perfectamente en una recta, pero tampoco están tan alejados de la misma. Ahora entonces la correlación es alta pero menor a 1.</span></p>
<p><span style="font-weight: 400">Esta imagen muestra varios ejemplos de los distintos valores de correlación (el valor de correlación está representado por el símbolo </span><span style="font-weight: 400">) en distintas situaciones.</span></p>
<p><img src="https://aichallenge.utec.edu.uy/wp-content/uploads/2021/06/1AA6LOkTmJmevaLQ_L69aawfctGY1mFDJE17PXDg.png" /></p>
<p><span style="font-weight: 400">Vemos como para el ejemplo donde la correlación es cero, no hay ninguna recta. Este es el peor de los casos, donde no hay ningún tipo de correlación. Básicamente si sucede significa que la variable es inútil para realizar predicciones.</span></p>
<p><span style="font-weight: 400">Decimos entonces que entre más cerca esté del 1 o -1 el valor de correlación la relación entre esas dos variables es más fuerte, debilitándose al acercarse al 0.</span></p>
<table>
<tbody>
<tr>
<td>
<p><strong>Valor del coeficiente de correlación</strong></p>
</td>
<td>
<p><strong>Criterio</strong></p>
</td>
</tr>
<tr>
<td>
<p><span style="font-weight: 400">De 0,7 a 1,0</span></p>
</td>
<td style="background-color: #93c47d">
<p><span style="font-weight: 400">Correlación positiva fuerte</span></p>
</td>
</tr>
<tr>
<td>
<p><span style="font-weight: 400">De 0,5 a 0,7</span></p>
</td>
<td style="background-color: #e0dc4b">
<p><span style="font-weight: 400">Correlación positiva moderada</span></p>
</td>
</tr>
<tr>
<td>
<p><span style="font-weight: 400">De 0,2 a 0,5</span></p>
</td>
<td style="background-color: #f6b26b">
<p><span style="font-weight: 400">Correlación positiva baja</span></p>
</td>
</tr>
<tr>
<td>
<p><span style="font-weight: 400">De -0,2 a 0,2</span></p>
</td>
<td style="background-color: #e06666">
<p><span style="font-weight: 400">Correlación (positiva o negativa) débil o nula</span></p>
</td>
</tr>
<tr>
<td>
<p><span style="font-weight: 400">De -0,2 a -0,5</span></p>
</td>
<td style="background-color: #f6b26b">
<p><span style="font-weight: 400">Correlación negativa moderada</span></p>
</td>
</tr>
<tr>
<td>
<p><span style="font-weight: 400">De -0,5 a -0,7</span></p>
</td>
<td style="background-color: #e0dc4c">
<p><span style="font-weight: 400">Correlación negativa moderada</span></p>
</td>
</tr>
<tr>
<td>
<p><span style="font-weight: 400">De -0,7 a -1,0</span></p>
</td>
<td style="background-color: #93c47d">
<p><span style="font-weight: 400">Correlación negativa fuerte</span></p>
</td>
</tr>
</tbody>
</table>
<p><span style="font-weight: 400">Generalmente para un modelo de predicción es útil usar variables con correlaciones mayores a 0,7.</span></p>
<p> </p>
<p style="text-align: center"><strong>Una rápida demostración usando la librería de Pandas</strong></p>
<p><span style="font-weight: 400">A continuación daremos un ejemplo rápido de como usar la librería Pandas para ver la correlación entre variables. Si quieres probar ese código tú mismo (también muestra cómo armamos las dos primeras gráficas) puedes acceder a </span><a href="https://colab.research.google.com/drive/1iwgOv6uwZRk0bukRBFMzilbAYV0H-vul?usp=sharing"><span style="font-weight: 400">este Google Colab</span></a><span style="font-weight: 400"> y realizar una copia del mismo. ¿No sabés qué es Google Colab? </span><a href="https://aichallenge.utec.edu.uy/community/machine-learning/introduccion-a-google-colaboratory/"><span style="font-weight: 400">Clickea aquí para aprender en 5 minutos.</span></a></p>
<p><span style="font-weight: 400">La librería </span><a href="https://aprendeconalf.es/docencia/python/manual/pandas/"><span style="font-weight: 400">Pandas</span></a><span style="font-weight: 400"> es una librería de Python muy utilizada para el manejo y análisis de datos. Pandas trabaja con </span><i><span style="font-weight: 400">dataframes</span></i><span style="font-weight: 400">, una palabra elegante para referirse a tablas como esta.</span></p>
<p><img src="https://aichallenge.utec.edu.uy/wp-content/uploads/2021/06/1Hmwjt00cE65xblVeoJULZ3vACdbJR-Z70EDadMc.png" /></p>
<p><span style="font-weight: 400">Para este ejemplo tenemos dos dataframes con distintos precios y cantidades, tienen los creativos nombres de df1 y df2.</span></p>
<p> </p>
<p><img src="https://aichallenge.utec.edu.uy/wp-content/uploads/2021/06/1kHL8lKUt293TA2w5Vk1qukivLWU8YKm4F3_QWRU.png" /></p>
<p><span style="font-weight: 400">Pandas tiene la función </span><i><span style="font-weight: 400">corr()</span></i><span style="font-weight: 400"> para medir la correlación entre las variables de un dataframe. Esta función permite elegir entre las correlaciones de Pearson, Spearman y Kendall. Podemos especificar que tipo de coeficiente de correlación queremos calcular de esta forma</span></p>
<p> </p>
<pre><span style="font-weight: 400">mi_dataframe.corr(</span><span style="font-weight: 400;color: #008000">'tipo_de_correlacion'</span><span style="font-weight: 400">) </span></pre>
<p> </p>
<p><span style="font-weight: 400">Si no especificamos el tipo de correlación se usará por defecto la de Pearson.</span></p>
<p><span style="font-weight: 400">Por lo que esto:</span></p>
<p> </p>
<pre><span style="font-weight: 400">mi_dataframe.corr()</span></pre>
<p> </p>
<p><span style="font-weight: 400">Es lo mismo que esto:</span></p>
<p> </p>
<pre><span style="font-weight: 400">mi_dataframe.corr(</span><span style="font-weight: 400;color: #008000">'pearson'</span><span style="font-weight: 400">)<br /><br /></span></pre>
<p><img src="https://aichallenge.utec.edu.uy/wp-content/uploads/2021/06/1uxtmX8UPEj4dccca4wdQYq580FkMzmMAiBBvNgo.png" /></p>
<p><span style="font-weight: 400">Al graficar el contenido de df1 obtenemos esta gráfica que mostramos anteriormente.</span></p>
<p><span style="font-weight: 400">Por lo que, sabemos que al calcular la correlación deberíamos obtener un valor de 1, ya que los puntos encajan perfectamente en una recta de pendiente positiva. Cabe destacar que esto jamás sucederá en la vida real.</span><span style="font-weight: 400"><br /></span><span style="font-weight: 400">Calculamos entonces la correlación de esta manera:</span></p>
<pre><span style="font-weight: 400">df1.corr() </span></pre>
<p><span style="font-weight: 400">Y obtenemos la siguiente matriz que confirma la correlación perfecta. Vemos que la matriz también compara las variables con sí mismas, lo que siempre dará un valor de 1.0</span></p>
<p><img src="https://aichallenge.utec.edu.uy/wp-content/uploads/2021/06/1N_LnvPQMKfXD2CGvRBhHOk__M5yhdKHXZrdTskA.png" /></p>
<p><span style="font-weight: 400">Por otro lado tenemos df2, el cual al ser graficado da esta otra gráfica que ya mostramos anteriormente.</span></p>
<p><img src="https://aichallenge.utec.edu.uy/wp-content/uploads/2021/06/1uPLlsyaBPhyyjBkVD3vHdWC1rskmAn9vAdQS3iI.png" /></p>
<p><span style="font-weight: 400">Al ejecutar </span></p>
<pre><span style="font-weight: 400">df2.corr() </span></pre>
<p><span style="font-weight: 400">Se obtiene esta matriz, con un valor de correlación entre precio y cantidad menor a 1, pero aún así bastante alto.</span></p>
<p><img src="https://aichallenge.utec.edu.uy/wp-content/uploads/2021/06/1Rgp3FQr_PJaMkipJAtjv2ALMf4FVnup8f1ZbEmc.png" /></p>
<p><span style="font-weight: 400">En un caso real un valor tan alto como este sería probablemente muy útil para realizar predicciones.</span></p>
<p><span style="font-weight: 400">La función corr devuelve una matriz la cual compara las correlaciones de todas las variables entre sí. Esto es útil, pero generalmente nos interesa hacer predicciones de una única variable, por lo que solo nos interesaría la correlación de esa variable con las demás, es decir, solo nos interesaría una única columna de la matriz. Afortunadamente Pandas nos permite seleccionar columnas al momento de medir correlaciones. Veámoslo con un ejemplo, voy a usar </span><a href="https://www.kaggle.com/shivachandel/kc-house-data),el"><span style="font-weight: 400">este dataset</span></a><span style="font-weight: 400">, el cual guardaré en un dataframe de Pandas llamado </span><i><span style="font-weight: 400">df3</span></i><span style="font-weight: 400">.</span></p>
<p><span style="font-weight: 400">Hasta ahora usamos datasets con pocas variables, por lo que las matrices de correlaciones eran pequeñas y fáciles de mirar. Pero al usar un dataset real vemos que la matriz puede volverse enorme muy fácilmente.</span></p>
<p><span style="font-weight: 400">Vamos a ver la matriz de correlaciones de este dataset.</span></p>
<pre><span style="font-weight: 400">df3.corr() </span></pre>
<p><span style="font-weight: 400">Lo que nos da esta enorme matriz, la cual tiene demasiados números para mirar.</span></p>
<p><img src="https://aichallenge.utec.edu.uy/wp-content/uploads/2021/06/1yWYX4aXTeNpFq1CRr1WbJiQb_NTl_4GoZOBsBFU.png" /></p>
<p><span style="font-weight: 400">Como mirar tantos números es incómodo, una práctica común suele ser el usar “mapas de calor” al medir la correlación. Básicamente son matrices iguales a esta donde el color de cada cuadro varía según el valor del coeficiente de correlación, haciendo bastante más intuitivo el proceso de encontrar correlaciones fuertes. Los mapas de calor suelen verse así.</span></p>
<p><img src="https://aichallenge.utec.edu.uy/wp-content/uploads/2021/06/1bmxZtVEMW6hocCsC_BRb1YqorxSekkcN3FTxdBo.png" /></p>
<p><span style="font-weight: 400">Imagen tomada de </span><a href="https://medium.com/@szabo.bibor/how-to-create-a-seaborn-correlation-heatmap-in-python-834c0686b88e"><span style="font-weight: 400">este artículo de Medium</span></a></p>
<p><span style="font-weight: 400">Volviendo a nuestra matriz difícil de mirar y sin colores. Sería razonable usar el dataset para predecir el valor de la variable precio. En ese caso, podría ser perfectamente válido el que nos importara únicamente la primera columna de la matriz.</span></p>
<p><img src="https://aichallenge.utec.edu.uy/wp-content/uploads/2021/06/1G3F4EDQEefknTDNcJCpJtPhcH4wCJQR3P7fBRzg.png" /></p>
<p><span style="font-weight: 400">Así que para hacer nuestra vida más fácil podemos obtener únicamente esa columna siguiendo esta sintaxis.</span></p>
<pre><span style="font-weight: 400">mi_dataframe.corr() </span></pre>
<p><span style="font-weight: 400">En este caso entonces escribire esto</span></p>
<pre><span style="font-weight: 400">df3.corr()</span></pre>
<p><span style="font-weight: 400">Lo que nos da la siguiente columna mucho más fácil de mirar y entender.</span></p>
<p><img src="https://aichallenge.utec.edu.uy/wp-content/uploads/2021/06/1uFRaMZy1dqCVsRRP8Ad1e0DqDv3SA97n4AkqNSY.png" /></p>
<p><span style="font-weight: 400">Si queremos ir un paso más allá podemos utilizar tambien la funcion sort_values() para ordenar los resultados de menor a mayor. </span></p>
<pre><span style="font-weight: 400">df3.corr().sort_values()</span></pre>
<p><span style="font-weight: 400">Lo que nos devuelve lo mismo, pero ahora ordenado de menor a mayor.</span></p>
<p><img src="https://aichallenge.utec.edu.uy/wp-content/uploads/2021/06/10E_PsiB-DA4JvCVnxqkkZmSPOF3qwKk6d0GWoqY.png" /></p>
<p><span style="font-weight: 400">En la segunda parte del </span><a href="https://aichallenge.utec.edu.uy/community/machine-learning/introduccion-a-machine-learning-regresion-2-2/"><span style="font-weight: 400">artículo sobre regresión</span></a><span style="font-weight: 400">, usamos la librería matplotlib para mostrar las correlaciones en una gráfica.</span></p>]]></content:encoded>
                        <category domain="https://aichallenge.utec.edu.uy/community/machine-learning/">Machine Learning</category>                        <dc:creator>taa.admin</dc:creator>
                        <guid isPermaLink="true">https://aichallenge.utec.edu.uy/community/machine-learning/eligiendo-buenas-variables-a-traves-de-coeficientes-de-correlacion/</guid>
                    </item>
                                        <item>
                        <title>Visualización de datos simple con Python y Matplotlib</title>
                        <link>https://aichallenge.utec.edu.uy/community/machine-learning/visualizacion-de-datos-simple-con-python-y-matplotlib/</link>
                        <pubDate>Thu, 18 Mar 2021 20:10:47 +0000</pubDate>
                        <description><![CDATA[Python cuenta con una gran cantidad de librerías las cuales son útiles para trabajar con datos, ya sea para organizarlos, operar con ellos, o visualizarlos. 
 
Para trabajar con datos en f...]]></description>
                        <content:encoded><![CDATA[<p style="text-align: center"><span style="font-weight: 400">Python cuenta con una gran cantidad de librerías las cuales son útiles para trabajar con datos, ya sea para organizarlos, operar con ellos, o visualizarlos. </span></p>
<p style="text-align: center"> </p>
<p style="text-align: center"><span style="font-weight: 400">Para trabajar con datos en forma de tablas tenemos </span><a href="https://pandas.pydata.org/"><span style="font-weight: 400">Pandas</span></a><span style="font-weight: 400">, para trabajar matemáticamente con datos numéricamente siempre es recomendable </span><a href="https://numpy.org/"><span style="font-weight: 400">Numpy </span></a><span style="font-weight: 400">y para visualizar datos tenemos </span><a href="https://matplotlib.org"><span style="font-weight: 400">Matplotlib</span></a><span style="font-weight: 400">.</span></p>
<p style="text-align: center"> </p>
<h2 style="text-align: center"><span style="font-weight: 400">Ok ¿Pero que es una librería?</span></h2>
<p style="text-align: center"><span style="font-weight: 400">Un proverbio muy común en la programación es “no inventes la rueda”, básicamente refiriéndose a que no es recomendable perder el tiempo intentando inventar por nuestra cuenta una solución que ya fue implementada incontables veces por otras personas y probablemente de formas más eficientes. Muchos veteranos suelen alargar la popular frase diciendo algo similar a “no reinventes la rueda, a menos que quieras aprender más sobre ruedas”, representando una postura más balanceada en el tema. Básicamente significa que la gran mayoría de la</span><span style="font-weight: 400">s veces no es necesario el tener que resolver 100% por nuestra cuenta todos los retos de nuestro proyecto sin ayudarnos con aquello que ya existe, pero puede ser recomendable si queremos aprender más sobre un tema en específico.</span></p>
<p style="text-align: center"> </p>
<p style="text-align: center"><img style="width: 45%" src="https://aichallenge.utec.edu.uy/wp-content/uploads/2021/03/img54.jpg" /></p>
<p style="text-align: center"><em><span style="font-size: 8pt">Foto por <a href="http://&quot;/photographer/artritris-35562&quot;" target="true">César Pena</a></span></em></p>
<p style="text-align: center"><span style="font-weight: 400">Ahora sí, ¿Qué son las librerías?. Las librerías en palabras sencillas son un conjunto de funciones las cuales pueden ser fácilmente añadidas a nuestro proyecto y utilizadas con tan solo llamarlas. Son extremadamente útiles y es casi imposible hacer un proyecto (o al menos uno que no tome una eternidad) sin utilizar alguna librería. Las librerías entonces representan la versión corta del famoso proverbio, ya que claramente no somos los primeros en pensar que sería útil el utilizar código para representar datos, entonces ¿Para qué sufrir en lugar de sacar provecho a las herramientas que ya existen?</span></p>
<h2 style="text-align: center"><span style="font-weight: 400">¿Qué es matplotlib?</span></h2>
<p style="text-align: center"><span style="font-weight: 400">Matplotlib es una librería de python creada por </span><a href="https://en.wikipedia.org/wiki/John_D._Hunter"><span style="font-weight: 400">Jhon Hunter</span></a><span style="font-weight: 400"> la cual está especialmente diseñada para visualizar datos. Tomando inspiración de </span><a href="https://www.mathworks.com/products/matlab.html"><span style="font-weight: 400">MATLAB </span></a><span style="font-weight: 400">matplotlib trabaja con tres elementos principales: axis (“ejes”), figure (“figura”) y plot (“gráfico” o “cuadro”). Matplotlib tiene varios módulos especializados en distintas áreas como animación o proyección, nosotros trabajaremos con el módulo </span><a href="https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.html#module-matplotlib.pyplot"><span style="font-weight: 400">pyplot</span></a><span style="font-weight: 400">, el cual se especializa en el dibujado de gráficos relativamente simples y es aún más parecido a MATLAB que el resto de la librería.</span></p>
<p style="text-align: center"> </p>
<h3 style="text-align: center"><strong>A tener en cuenta</strong></h3>
<p style="text-align: center"><span style="font-weight: 400">Para ejecutar el código de muestra puedes utilizar </span><a href="http://colab.research.google.com/"><span style="font-weight: 400">Google Colab</span></a><span style="font-weight: 400">, si nunca lo utilizaste antes puedes leer </span><a href="https://aichallenge.utec.edu.uy/community/machine-learning/introduccion-a-google-colaboratory/"><span style="font-weight: 400">este artículo</span></a><span style="font-weight: 400"> donde te explicamos cómo funciona. </span></p>
<p style="text-align: center"> </p>
<p style="text-align: center"><strong>Consejo 1</strong><span style="font-weight: 400">: siempre puedes buscar algún ejemplo en internet y luego modificar el código para adaptarlo a tus necesidades. </span><strong>Todo el mundo lo hace</strong><span style="font-weight: 400">, ya que tomaría una gran cantidad de tiempo el verdaderamente dominar todas las herramientas que nos ofrece matplotlib.</span></p>
<p style="text-align: center"> </p>
<p style="text-align: center"><strong>Consejo 2</strong><span style="font-weight: 400">: Siempre es recomendable leer la documentación de una librería o herramienta, ya que suelen tener explicaciones a fondo de cómo operan las funciones, además de tutoriales y ejemplos. Matplotlib cumple con esto teniendo una sección de </span><a href="https://matplotlib.org/stable/gallery/index.html"><span style="font-weight: 400">ejemplos </span></a><span style="font-weight: 400">y otra de </span><a href="https://matplotlib.org/stable/tutorials/index.html#"><span style="font-weight: 400">tutoriales</span></a><span style="font-weight: 400">.</span></p>
<p style="text-align: center"> </p>
<p style="text-align: center"><strong>Consejo 3</strong><span style="font-weight: 400">: Incluso el mejor programador busca respuestas en internet, es imposible programar un proyecto sin tener que consultar dudas online. Además de eso, ni el mejor tutorial/artículo te enseñará todo lo necesario sobre un tema, por lo que buscar más sobre el tema en internet siempre será necesario.</span></p>
<p style="text-align: center"> </p>
<p style="text-align: center"><strong>Consejo 4</strong><span style="font-weight: 400">: este artículo contiene muchos enlaces a otros artículos y tutoriales como sugerencias para aprender más, todos ellos están en inglés. Pero si tienes dificultad con el idioma siempre puedes traducir la página, este enlace te muestra cómo hacerlo en </span><a href="https://support.google.com/chrome/answer/173424?co=GENIE.Platform%3DDesktop&amp;hl=es-419"><span style="font-weight: 400">Google Chrome</span></a><span style="font-weight: 400"> y </span><a href="https://support.mozilla.org/es/kb/como-anadir-traduccion-firefox"><span style="font-weight: 400">este otro</span></a><span style="font-weight: 400"> te muestra cómo hacerlo utilizando Firefox.</span></p>
<p style="text-align: center"> </p>
<p style="text-align: center"><strong>Consejo 5</strong><span style="font-weight: 400">: Si quieres aprender de una forma guiada y completa te recomendamos </span><a href="https://www.youtube.com/watch?v=3Xc3CA655Y4"><span style="font-weight: 400">este curso</span></a><span style="font-weight: 400"> gratuito de </span><a href="https://www.freecodecamp.org/"><span style="font-weight: 400">Freecodecamp.org</span></a></p>
<p style="text-align: center"><span style="font-weight: 400"><br /></span><strong>Recordatorio</strong><span style="font-weight: 400">: en matplotlib hay múltiples maneras de obtener el mismo resultado, los ejemplos de este artículo son los que consideramos más sencillos. Intencionalmente evitamos trabajar individualmente con ejes porque eso requiere más líneas de código y trabajo, pero es recomendable y necesario trabajar con ejes para poder hacer visualizaciones más avanzadas. De todas formas no te preocupes, ya que las visualizaciones simples suelen bastar la mayoría de las veces, ya que generalmente trabajamos con datasets simples y ordenados, no con un acelerador de partículas.</span></p>
<p style="text-align: center"><span style="font-weight: 400">El internet está lleno de tutoriales e información de todo tipo, tanta que en algunos momentos se puede hacer difícil de elegir. Por eso luego de cada ejemplo recomendamos algunos tutoriales y ejemplos, así puedes ahorrarte la indecisión. Aparte de todo eso, también recomendamos </span><a href="https://www.datacamp.com/community/tutorials/matplotlib-tutorial-python#anatomy"><span style="font-weight: 400">este tutorial</span></a><span style="font-weight: 400"> una vez hayas terminado de leer este artículo.</span></p>
<h2 style="text-align: center"><span style="font-weight: 400">Aprendiendo mediante ejemplos</span></h2>
<p style="text-align: center"> </p>
<h3 style="text-align: center"><span style="font-weight: 400">Empezando con la gráfica más fácil</span></h3>
<p style="text-align: center"><span style="font-weight: 400">El primer paso para todos estos ejemplos es importar lo necesario. Como ya vimos la librería es enorme, tiene una gran cantidad de módulos y aproximadamente 70.000 líneas de código. Pero nosotros estamos tan sólo interesados en el módulo pyplot. Por eso nuestra primera línea de código será la siguiente:</span></p>
<pre><span style="font-weight: 400;color: #ff00ff">import</span><span style="font-weight: 400"> <span style="color: #99cc00">matplotlib.pyplot</span> </span><span style="font-weight: 400;color: #ff00ff">as</span><span style="font-weight: 400"> plt</span></pre>
<p style="text-align: center"><span style="font-weight: 400"> </span></p>
<p style="text-align: center"><span style="font-weight: 400;color: #ff00ff">import </span><span style="font-weight: 400">sirve para importar cualquier librería, pero si escribiéramos tan solo</span></p>
<pre><span style="font-weight: 400"><span style="color: #ff00ff">import</span> matplotlib<br /><br /></span></pre>
<p style="text-align: center"><span style="font-weight: 400">Estaríamos importando toda la librería incluyendo los módulos que no nos interesan. Agregar el “</span><span style="font-weight: 400">.pyplot</span><span style="font-weight: 400">” nos asegura que solo se va a importar el módulo que queremos. Ahora tenemos todas las funciones del módulo pyplot. Pero para usar cada una de ellas necesitaríamos escribir</span><span style="font-weight: 400"></span></p>
<pre><span style="font-weight: 400">matplotlib.pyplot.NOMBRE_DE_LA_FUNCION()</span>
<span style="font-weight: 400"> </span></pre>
<p style="text-align: center"><span style="font-weight: 400">Lo cual claramente no sería muy cómodo de hacer múltiples veces. Por eso es tan útil agregar </span><span style="font-weight: 400">as</span><span style="font-weight: 400"> plt</span><span style="font-weight: 400"> al final de la línea. El comando </span><span style="font-weight: 400">as</span> <span style="font-weight: 400">nos deja asignarle un “alias” al módulo que importamos. Por lo que ahora para cada función basta con escribir:</span></p>
<pre><span style="font-weight: 400"> </span>
<span style="font-weight: 400">plt.NOMBRE_DE_LA_FUNCION()</span>
<span style="font-weight: 400"> </span></pre>
<p style="text-align: center"><span style="font-weight: 400">La primera función que vamos a utilizar es la función plot, esta función sirve para graficar líneas continuas y es de las más sencillas de utilizar. La función plot sigue la siguiente sintaxis</span></p>
<pre><span style="font-weight: 400"> </span>
<span style="font-weight: 400">plt.plot(ARGUMENTOS) </span><span style="font-weight: 400;color: #99cc00"># Los argumentos se separan por comas</span>
<span style="font-weight: 400"> </span></pre>
<p style="text-align: center"><span style="font-weight: 400">Por lo que vamos a definir dos arrays, cada uno conteniendo un conjunto diferente de números. Estos arrays los pasaremos como argumento a la función plot y eso nos devolverá un gráfica con una línea la cual une todos los puntos, tomando los elementos del conjunto como las coordenadas x e y de los distintos puntos.</span></p>
<pre><span style="font-weight: 400"> </span>
<span style="font-weight: 400;color: #99cc00"># Importamos pyplot como plt</span>
<span style="font-weight: 400;color: #ff00ff">import</span><span style="font-weight: 400"> matplotlib.pyplot </span><span style="font-weight: 400;color: #ff00ff">as</span><span style="font-weight: 400"> plt</span>
<span style="font-weight: 400;color: #99cc00"># creamos dos arrays con distintos conjuntos de datos</span><br /><br /><span style="font-weight: 400">conjunto1 =  </span><span style="font-weight: 400;color: #99cc00"># estos numeros son enteros, por lo que serían elementos int</span><br /><br /><span style="font-weight: 400">conjunto2 =  </span><span style="font-weight: 400;color: #99cc00"># estos numeros tienen decimales, por lo que serian float</span><br /><br /><br /><br /><span style="font-weight: 400;color: #99cc00"># usamos la función plot para generar una linea de acuerdo a los puntos</span><br /><br /><span style="font-weight: 400">plt.plot(conjunto1, conjunto2)</span><br /><br /><br /><br /><span style="font-weight: 400;color: #99cc00"># la función show no es necesaria si estamos usando por ejemplo Google Colab,<br /># pero si puede ser necesaria al usar otros entornos, por lo cual siempre es recomendable escribirla.</span><br /><br /><span style="font-weight: 400;color: #99cc00"># Esta función se asegura de que se muestre nuestra figura</span><br /><br /><span style="font-weight: 400">plt.show()</span></pre>
<p style="text-align: center"> </p>
<p style="text-align: center"><span style="font-weight: 400">Si ejecutas el código anterior deberías obtener la siguiente figura. </span></p>
<p style="text-align: center"><img style="width: 45%" src="https://aichallenge.utec.edu.uy/wp-content/uploads/2021/03/img8.jpg" /></p>
<p style="text-align: center"><span style="font-weight: 400">Previamente mencionamos que matplotlib trabajaba principalmente con tres elementos en sus gráficos. Estos eran axis (“ejes”), figure (“figura”) y plot (“gráfico” o “cuadro”). En nuestra anterior figura podemos identificar los 3.</span></p>
<p style="text-align: center"> </p>
<p style="text-align: center"><img style="width: 45%" src="https://aichallenge.utec.edu.uy/wp-content/uploads/2021/03/Elementos-de-la-gráfica.gif" /></p>
<p style="text-align: center"><span style="font-weight: 400">Excelente, ahora veamos qué otras cosas podemos hacer con esta sencilla gráfica.</span></p>
<p style="text-align: center"><img style="width: 45%" src="https://aichallenge.utec.edu.uy/wp-content/uploads/2021/03/anatomy.jpeg" /></p>
<p style="text-align: center"><span style="font-weight: 400">Esta imagen del sitio oficial de matplotlib nos muestra la anatomía de una figura, vemos que hay una gran cantidad de elementos los cuales podemos personalizar según nuestras necesidades.</span></p>
<p style="text-align: center"><span style="font-weight: 400">Primero que nada vamos a usar nuevamente la función plot para agregar una recta a la figura.</span></p>
<pre><span style="font-weight: 400;color: #99cc00"># usamos la función plot para generar una linea de acuerdo a los puntos</span><br /><br /><span style="font-weight: 400">plt.plot(conjunto1, conjunto2)</span><br /><br /><span style="font-weight: 400">plt.plot(, ) <br /></span><span style="font-weight: 400;color: #99cc00"># Agregamos un segundo ploteo, va a formar una recta entre los puntos (0,0) y (64,3)</span></pre>
<p style="text-align: center"><span style="font-weight: 400">Esto debería resultar en la siguiente figura, donde las dos líneas coinciden en su primeros y últimos puntos.</span></p>
<p style="text-align: center"> </p>
<p style="text-align: center"><img style="width: 45%" src="https://aichallenge.utec.edu.uy/wp-content/uploads/2021/03/img15.jpg" /></p>
<p style="text-align: center"><span style="font-weight: 400">Ahora vamos a asignarle un nombre a los ejes, un título a la figura y vamos a hacer que sea cuadriculada.</span></p>
<p style="text-align: center"> </p>
<pre><span style="font-weight: 400">plt.title(</span><span style="font-weight: 400;color: #800000">'Gráfica de muestra'</span><span style="font-weight: 400">) </span><span style="font-weight: 400;color: #99cc00"># Agrego un titulo</span><br /><br /><span style="font-weight: 400">plt.ylabel(</span><span style="font-weight: 400;color: #800000">'Nombre del eje Y'</span><span style="font-weight: 400">) </span><span style="font-weight: 400;color: #99cc00"># asigno un nombre al eje y</span><br /><br /><span style="font-weight: 400">plt.xlabel(</span><span style="font-weight: 400;color: #800000">'Nombre del eje X'</span><span style="font-weight: 400">) </span><span style="font-weight: 400;color: #99cc00"># asigno un nombre al eje y</span><br /><br /><span style="font-weight: 400">plt.grid(</span><span style="font-weight: 400;color: #0000ff">True</span><span style="font-weight: 400">)  </span><span style="font-weight: 400;color: #99cc00"># Esto se encarga de que sea cuadriculada la figura</span></pre>
<p style="text-align: center"><span style="font-weight: 400">La figura hasta el momento debería verse así.</span></p>
<p style="text-align: center"><img style="width: 45%" src="https://aichallenge.utec.edu.uy/wp-content/uploads/2021/03/img16.jpg" /></p>
<p style="text-align: center"><span style="font-weight: 400">Pero todavía podemos seguir personalizando esta figura, vamos a cambiar el color de las líneas, el estilo de las mismas, agregar una leyenda. Para esto será necesario agregar algunas cosas a nuestras funciones de plot. Vamos a agregar el argumento label a cada una de las funciones plot, también vamos a agregar el argumento color para cambiar el color de cada línea y además el argumento linestyle para cambiar el estilo de la línea.</span></p>
<pre><span style="font-weight: 400">plt.plot(conjunto1,conjunto2,label=</span><span style="font-weight: 400;color: #800000">'Caso 1'</span><span style="font-weight: 400">,linestyle=</span><span style="font-weight: 400;color: #800000">'dotted'</span><span style="font-weight: 400">,color=</span><span style="font-weight: 400;color: #800000">'green'</span><span style="font-weight: 400">) <br /></span><span style="font-weight: 400;color: #99cc00"># dotted nos da una linea punteada</span><br /><br /><br /><br /><br /><span style="font-weight: 400">plt.plot(,,label=</span><span style="font-weight: 400;color: #800000">'Caso 2'</span><span style="font-weight: 400">,linestyle=</span><span style="font-weight: 400;color: #800000">'dashed'</span><span style="font-weight: 400">,color=</span><span style="font-weight: 400;color: #800000">'red'</span><span style="font-weight: 400">)<br /></span><span style="font-weight: 400;color: #99cc00"># dashed nos da una linea hecha de lineas mas pequeñas</span><br /><br /><br /><span style="font-weight: 400">plt.legend() <br /></span><span style="font-weight: 400;color: #99cc00"># la funcion legend se encarga de mostrar la leyenda en la figura, <br />#esto lo hace leyendo los atributos label de cada plot<br /><br /></span></pre>
<p style="text-align: center"><span style="font-weight: 400">También vamos a definir el tamaño de la figura en general así como el tamaño de la fuente en los ejes. Para eso usaremos la función figure con el argumento figsize.</span></p>
<pre><span style="font-weight: 400">plt.figure(figsize=(</span><span style="font-weight: 400">5</span><span style="font-weight: 400">,</span><span style="font-weight: 400">5</span><span style="font-weight: 400">)) </span><span style="font-weight: 400;color: #99cc00">#Definimos un tamaño para la gráfica<br /><br /></span></pre>
<p style="text-align: center"><span style="font-weight: 400">Y agregamos el atributo fontsize a xlabel y ylabel</span></p>
<pre><span style="font-weight: 400">plt.ylabel(</span><span style="font-weight: 400;color: #800000">'Nombre del eje Y'</span><span style="font-weight: 400">, fontsize=</span><span style="font-weight: 400">12</span><span style="font-weight: 400">) </span><span style="font-weight: 400;color: #99cc00"># asigno un nombre al eje y</span><br /><br /><span style="font-weight: 400">plt.xlabel(</span><span style="font-weight: 400;color: #800000">'Nombre del eje X'</span><span style="font-weight: 400">, fontsize=</span><span style="font-weight: 400">12</span><span style="font-weight: 400">) </span><span style="font-weight: 400;color: #99cc00"># asigno un nombre al eje y<br /></span></pre>
<p style="text-align: center"> </p>
<p style="text-align: center"><span style="font-weight: 400">Nuestro código final debería ser el siguiente:</span></p>
<pre><span style="font-weight: 400;color: #99cc00"><br /></span><br /><br /><span style="font-weight: 400;color: #99cc00"># Importamos pyplot como plt</span><br /><br /><span style="font-weight: 400;color: #ff00ff">import</span><span style="font-weight: 400"> matplotlib.pyplot </span><span style="font-weight: 400;color: #ff00ff">as</span><span style="font-weight: 400"> plt</span><br /><br /><br /><span style="font-weight: 400;color: #99cc00"># creamos dos arrays con distintos conjuntos de datos</span><br /><br /><span style="font-weight: 400">conjunto1 =  </span><span style="font-weight: 400;color: #99cc00"># estos numeros son enteros, por lo que serían elementos int</span><br /><br /><span style="font-weight: 400">conjunto2 =  </span><span style="font-weight: 400"># estos numeros tienen decimales, por lo que serian float</span><br /><br /><span style="font-weight: 400">plt.figure(figsize=(</span><span style="font-weight: 400">5</span><span style="font-weight: 400">,</span><span style="font-weight: 400">5</span><span style="font-weight: 400">)) </span><span style="font-weight: 400">#Definimos un tamaño para la gráfica</span><br /><br /><br /><span style="font-weight: 400;color: #99cc00"># usamos la función plot para generar una linea de acuerdo a los puntos</span><br /><br /><span style="font-weight: 400">plt.plot(conjunto1, conjunto2, label=</span><span style="font-weight: 400;color: #800000">'Caso 1'</span><span style="font-weight: 400">, linestyle=</span><span style="font-weight: 400;color: #800000">'dotted'</span><span style="font-weight: 400">, color=</span><span style="font-weight: 400;color: #800000">'green'</span><span style="font-weight: 400">) </span><span style="font-weight: 400;color: #99cc00"># dotted nos da una linea punteada</span><br /><br /><span style="font-weight: 400">plt.plot(, , label=</span><span style="font-weight: 400;color: #800000">'Caso 2'</span><span style="font-weight: 400">, linestyle=</span><span style="font-weight: 400;color: #800000">'dashed'</span><span style="font-weight: 400">, color=</span><span style="font-weight: 400;color: #800000">'red'</span><span style="font-weight: 400">) </span><span style="font-weight: 400;color: #99cc00"># dashed nos da una linea hecha de lineas mas pequeñas</span><br /><br /><span style="font-weight: 400">plt.legend() </span><span style="font-weight: 400;color: #99cc00"># la funcion legend se encarga de mostrar la leyenda en la figura, esto lo hace leyendo los atributos label de cada plot</span><br /><br /><span style="font-weight: 400">plt.title(</span><span style="font-weight: 400;color: #800000">'Gráfica de muestra'</span><span style="font-weight: 400">) </span><span style="font-weight: 400;color: #99cc00"># Agrego un titulo</span><br /><br /><span style="font-weight: 400">plt.ylabel(</span><span style="font-weight: 400;color: #800000">'Nombre del eje Y'</span><span style="font-weight: 400">, fontsize=</span><span style="font-weight: 400">12</span><span style="font-weight: 400">) </span><span style="font-weight: 400;color: #99cc00"># asigno un nombre al eje y</span><br /><br /><span style="font-weight: 400">plt.xlabel(</span><span style="font-weight: 400;color: #800000">'Nombre del eje X'</span><span style="font-weight: 400">, fontsize=</span><span style="font-weight: 400">12</span><span style="font-weight: 400">) </span><span style="font-weight: 400;color: #99cc00"># asigno un nombre al eje X</span><br /><br /><span style="font-weight: 400">plt.grid(</span><span style="font-weight: 400;color: #0000ff">True</span><span style="font-weight: 400">)  </span><span style="font-weight: 400;color: #99cc00"># Esto se encarga de que sea cuadriculada la figura</span><br /><br /><span style="font-weight: 400;color: #99cc00"># la función show no es necesaria si estamos usando por ejemplo Google Colab, pero si puede ser necesaria al usar otros entornos, por lo cual siempre es recomendable escribirla.</span><br /><br /><span style="font-weight: 400;color: #99cc00"># Esta función se asegura de que se muestre nuestra figura</span><br /><br /><span style="font-weight: 400">plt.show()</span><br /><br /><span style="font-weight: 400;color: #99cc00"><br /></span></pre>
<p style="text-align: center"><span style="font-weight: 400">Y la figura debería verse así.</span></p>
<p style="text-align: center"><img style="width: 45%" src="https://aichallenge.utec.edu.uy/wp-content/uploads/2021/03/img21.jpg" /></p>
<p style="text-align: center"><span style="font-weight: 400">Es importante recordar que con matplotlib hay muchas maneras de obtener el mismo resultado, la idea de este artículo es presentar la forma que nos parece más sencilla para un principiante. Por ejemplo, estas dos líneas de código consiguen el mismo resultado:</span></p>
<p style="text-align: center"> </p>
<pre><span style="font-weight: 400">plt.plot(conjunto1, conjunto2, linestyle=</span><span style="font-weight: 400;color: #800000">'dashed'</span><span style="font-weight: 400">, color=</span><span style="font-weight: 400;color: #800000">'green'</span><span style="font-weight: 400">)</span><br /><br /><span style="font-weight: 400">plt.plot(conjunto1, conjunto2, </span><span style="font-weight: 400;color: #800000">'g--'</span><span style="font-weight: 400">) </span><span style="font-weight: 400;color: #99cc00"># g indica que el color es green, mientras ‘--’ indica que la línea estilo dashed</span><br /><br /></pre>
<p style="text-align: center"><span style="font-weight: 400">Pero para un principiante probablemente la primera sea más fácil de entender. Lo importante es entender los principios básicos para luego poder construir encima de esa base. </span></p>
<p style="text-align: center"><span style="font-weight: 400">Para ver más sobre gráficas de líneas te recomendamos </span><a href="https://pythonspot.com/matplotlib-line-chart/"><span style="font-weight: 400">este tutorial</span></a><span style="font-weight: 400"> o </span><a href="https://www.tutorialspoint.com/matplotlib/matplotlib_simple_plot.htm"><span style="font-weight: 400">este otro</span></a><span style="font-weight: 400">, además de los </span><a href="https://matplotlib.org/stable/tutorials/introductory/pyplot.html#sphx-glr-tutorials-introductory-pyplot-py"><span style="font-weight: 400">ejemplos de matplotlib.org.</span></a></p>
<h3> </h3>
<h3 style="text-align: center"><span style="font-weight: 400;font-size: 14pt">Ejemplo de gráfico de dispersión simple</span></h3>
<pre><span style="font-weight: 400">La función scatter nos permite graficar nubes de puntos.</span><br /><br /><span style="font-weight: 400;color: #99cc00"># Importamos pyplot como plt</span><br /><span style="font-weight: 400;color: #ff00ff">import</span><span style="font-weight: 400"> matplotlib.pyplot </span><span style="font-weight: 400;color: #ff00ff">as</span><span style="font-weight: 400"> plt</span><br /><span style="font-weight: 400;color: #ff00ff">import</span><span style="font-weight: 400"> numpy </span><span style="font-weight: 400;color: #ff00ff">as</span><span style="font-weight: 400"> np </span><span style="font-weight: 400;color: #99cc00"># Importamos numpy para poder generar numeros aleatorios</span><br /><br /><span style="font-weight: 400;color: #99cc00">#Vamos a generar 100 puntos</span><br /><span style="font-weight: 400">N = </span><span style="font-weight: 400;color: #008000">100</span><br /><br /><span style="font-weight: 400;color: #99cc00"># Generamos 100 coordenadas de X</span><br /><span style="font-weight: 400">x = np.random.rand(N)</span><br /><br /><span style="font-weight: 400;color: #99cc00"># Generamos 100 coordenadas de y</span><br /><span style="font-weight: 400">y = np.random.rand(N)</span><br /><br /><span style="font-weight: 400;color: #99cc00"># Repetimos lo mismo con otras variables</span><br /><span style="font-weight: 400">x1 = np.random.rand(N)</span><br /><span style="font-weight: 400">y1 = np.random.rand(N)</span><br /><br /><span style="font-weight: 400;color: #99cc00"># Graficamos x e y como nube de puntos</span><br /><span style="font-weight: 400">plt.scatter(x,y, color=</span><span style="font-weight: 400;color: #800000">'orange'</span><span style="font-weight: 400">, alpha=</span><span style="font-weight: 400;color: #008000">0.5</span><span style="font-weight: 400">, label = </span><span style="font-weight: 400;color: #800000">'puntos naranjas'</span><span style="font-weight: 400">) </span><br /><br /><span style="font-weight: 400;color: #99cc00"># alpha = 0.5 hace que los puntos sean 50% transparentes</span><br /><br /><br /><span style="font-weight: 400">plt.scatter(x1,y1, color=</span><span style="font-weight: 400;color: #800000">'blue'</span><span style="font-weight: 400">, alpha=</span><span style="font-weight: 400;color: #008000">0.5</span><span style="font-weight: 400">, label = </span><span style="font-weight: 400;color: #800000">'puntos azules'</span><span style="font-weight: 400">)</span><br /><span style="font-weight: 400">plt.legend()</span><br /><span style="font-weight: 400">plt.show() </span><span style="font-weight: 400;color: #99cc00">#siempre recomendable la funcion show</span><br /><br /></pre>
<p style="text-align: center"><span style="font-weight: 400">Resultado<br /><br /></span></p>
<p style="text-align: center"> </p>
<p style="text-align: center"><img style="width: 45%" src="https://aichallenge.utec.edu.uy/wp-content/uploads/2021/03/img26.jpg" /></p>
<p style="text-align: center"><span style="font-weight: 400">Para ver más sobre gráficas de dispersión te recomendamos </span><a href="https://pythonspot.com/matplotlib-scatterplot/"><span style="font-weight: 400">este tutorial</span></a><span style="font-weight: 400"> o </span><a href="https://www.tutorialspoint.com/matplotlib/matplotlib_scatter_plot.htm"><span style="font-weight: 400">este otro</span></a><span style="font-weight: 400">, además de los </span><a href="https://matplotlib.org/stable/gallery/misc/hyperlinks_sgskip.html#sphx-glr-gallery-misc-hyperlinks-sgskip-py"><span style="font-weight: 400">ejemplos de matplotlib.org</span></a><span style="font-weight: 400">. </span></p>
<h3> </h3>
<h3 style="text-align: center"><span style="font-weight: 400;font-size: 14pt">Ejemplo de Histograma</span></h3>
<p style="text-align: center"><span style="font-weight: 400">Un histograma nos permite ver la frecuencia de repetición de un elemento en un conjunto. Son vitales para la visualización y análisis de datos.</span></p>
<p style="text-align: center"> </p>
<pre><span style="font-weight: 400;color: #99cc00"># Importamos pyplot como plt</span><br /><br /><span style="font-weight: 400">import</span><span style="font-weight: 400"> matplotlib.pyplot </span><span style="font-weight: 400">as</span><span style="font-weight: 400"> plt</span><br /><br /><span style="font-weight: 400">import</span><span style="font-weight: 400"> numpy </span><span style="font-weight: 400">as</span><span style="font-weight: 400"> np </span><span style="font-weight: 400;color: #99cc00"># Importamos numpy para operar con numeros</span><br /><br /><br /><span style="font-weight: 400;color: #99cc00">#Vamos a generar 100 numeros aleatorios</span><br /><br /><span style="font-weight: 400">N = </span><span style="font-weight: 400">100</span><br /><br /><br /><span style="font-weight: 400;color: #99cc00"># Guardamos en x los numeros</span><br /><br /><span style="font-weight: 400">x = np.random.rand(N)*</span><span style="font-weight: 400;color: #008080">10</span><br /><br /><span style="font-weight: 400">plt.figure(figsize=(</span><span style="font-weight: 400;color: #008080">10</span><span style="font-weight: 400">,</span><span style="font-weight: 400;color: #008080">5</span><span style="font-weight: 400">)) </span><span style="font-weight: 400;color: #99cc00">#le damos un buen tamano a la figura</span><br /><br /><span style="font-weight: 400">x_ticks = np.arange(</span><span style="font-weight: 400;color: #008080">0</span><span style="font-weight: 400">, </span><span style="font-weight: 400;color: #008080">10</span><span style="font-weight: 400">, </span><span style="font-weight: 400;color: #008080">1</span><span style="font-weight: 400">) </span><span style="font-weight: 400;color: #99cc00">#  la funcion arange de numpy devuelve una lista de numeros</span><br /><br /><span style="font-weight: 400;color: #99cc00"># arange funciona asi arange(numero_inicial, numero_final, numero_pasos), por lo que (0,10,1) devuelve 0,1,2,3,4,5,6,7,8,9,10</span><br /><br /><span style="font-weight: 400;color: #99cc00"># Ingresar (0,10,2) devolveria 0,2,4,6,8,10, mientras que (0,15,5) devolveria 0,5,10,15</span><br /><br /><br /><span style="font-weight: 400">plt.xticks(x_ticks) </span><span style="font-weight: 400;color: #99cc00"># defino que numeros quiero en mi eje x</span><br /><br /><span style="font-weight: 400">plt.hist(x) </span><span style="font-weight: 400;color: #99cc00"># Uso la funcion de histograma para ver cual es el numero que mas se repite en el array X, es decir, su frecuencia</span><br /><br /><br /><span style="font-weight: 400">plt.xlabel(</span><span style="font-weight: 400;color: #800000">'Numero'</span><span style="font-weight: 400">)</span><br /><br /><span style="font-weight: 400">plt.ylabel(</span><span style="font-weight: 400;color: #800000">'Frecuencia'</span><span style="font-weight: 400">)</span><br /><br /><span style="font-weight: 400">plt.title(</span><span style="font-weight: 400;color: #800000">'Ejemplo de histograma'</span><span style="font-weight: 400">)</span><br /><br /><span style="font-weight: 400">plt.show()</span></pre>
<p style="text-align: center"> </p>
<p style="text-align: center"><img style="width: 45%" src="https://aichallenge.utec.edu.uy/wp-content/uploads/2021/03/img31.jpg" /></p>
<p style="text-align: center"><span style="font-weight: 400">Para ver más sobre histogramas te recomendamos </span><a href="https://pythonspot.com/matplotlib-histogram/"><span style="font-weight: 400">este tutorial</span></a><span style="font-weight: 400"> o </span><a href="https://stackabuse.com/matplotlib-histogram-plot-tutorial-and-examples/"><span style="font-weight: 400">este otro</span></a><span style="font-weight: 400">, además de los </span><a href="https://matplotlib.org/stable/gallery/statistics/hist.html"><span style="font-weight: 400">ejemplos de matplotlib.org</span></a><span style="font-weight: 400">.</span></p>
<p style="text-align: center"> </p>
<h3 style="text-align: center"><span style="font-weight: 400;font-size: 14pt">Ejemplo de gráfico de barras</span></h3>
<p style="text-align: center"> </p>
<p style="text-align: center"><span style="font-weight: 400">Los gráficos de barras son otro de los más populares y utilizados en la visualización de datos.</span></p>
<p style="text-align: center"> </p>
<pre><span style="font-weight: 400;color: #ff00ff">import</span><span style="font-weight: 400"> matplotlib.pyplot </span><span style="font-weight: 400;color: #ff00ff">as</span><span style="font-weight: 400"> plt</span><br /><br /><span style="font-weight: 400">meses = </span><br /><br /><span style="font-weight: 400">ganancias = </span><br /><br /><span style="font-weight: 400">plt.bar(meses,ganancias)</span><br /><br /><span style="font-weight: 400">plt.title(</span><span style="font-weight: 400;color: #800000">'Ganancias en el 2020'</span><span style="font-weight: 400">)</span><br /><br /><span style="font-weight: 400">plt.xlabel(</span><span style="font-weight: 400;color: #800000">'Mes del 2020'</span><span style="font-weight: 400">)</span><br /><br /><span style="font-weight: 400">plt.ylabel(</span><span style="font-weight: 400;color: #800000">'Ganancias (en miles de pesos)'</span><span style="font-weight: 400">)</span><br /><br /><span style="font-weight: 400">plt.show()</span></pre>
<p style="text-align: center"><img style="width: 45%" src="https://aichallenge.utec.edu.uy/wp-content/uploads/2021/03/img34.jpg" /></p>
<p style="text-align: center"><span style="font-weight: 400">Si necesitas gráficos de barras más avanzados te sugerimos </span><a href="https://pythonspot.com/matplotlib-bar-chart/"><span style="font-weight: 400">este tutorial</span></a><span style="font-weight: 400">, para otros aún más avanzados todavía sugerimos </span><a href="https://www.tutorialspoint.com/matplotlib/matplotlib_bar_plot.htm"><span style="font-weight: 400">este tutorial</span></a><span style="font-weight: 400"> y siempre puedes utilizar alguno de estos </span><a href="https://matplotlib.org/stable/gallery/index.html"><span style="font-weight: 400">ejemplos </span></a><span style="font-weight: 400">(los primeros tres son ejemplos de gráficos de barras).</span></p>
<p style="text-align: center"> </p>
<h3 style="text-align: center"><span style="font-weight: 400;font-size: 14pt">Gráfico circular o de pastel</span></h3>
<p style="text-align: center"><span style="font-weight: 400">El diagrama circular o de pastel es otro que no puede faltar, para eso vamos a recurrir a la función pie (en ingles pie = pastel)</span></p>
<pre><br /><br /><br /><span style="font-weight: 400;color: #ff00ff">import</span><span style="font-weight: 400"> matplotlib.pyplot </span><span style="font-weight: 400;color: #ff00ff">as</span><span style="font-weight: 400"> plt </span><span style="font-weight: 400;color: #99cc00"># Importamos matplotlib</span><br /><br /><span style="font-weight: 400">y = </span><span style="font-weight: 400;color: #99cc00"># Defino las cantidades a representar en el diagrama</span><br /><br /><span style="font-weight: 400">mylabels =  </span><span style="font-weight: 400;color: #99cc00"># Defino que etiqueta va con cada color o seccion</span><br /><br /><span style="font-weight: 400">plt.figure(figsize=(</span><span style="font-weight: 400;color: #008080">10</span><span style="font-weight: 400">,</span><span style="font-weight: 400;color: #008080">10</span><span style="font-weight: 400">)) </span><span style="font-weight: 400;color: #99cc00"># Definimos un buen tamaño</span><br /><br /><span style="font-weight: 400">plt.title(</span><span style="font-weight: 400;color: #800000">'Venta de helados por porcentaje'</span><span style="font-weight: 400">)</span><br /><br /><span style="font-weight: 400">plt.pie(y, labels = mylabels) </span><span style="font-weight: 400;color: #99cc00"># uso la funcion pie para generar el diagrama circular o de pastel (en ingles pie = pastel)</span><br /><br /><span style="font-weight: 400">plt.show() </span><span style="font-weight: 400;color: #99cc00"># Siempre recomendable agregar la funcion show al final</span></pre>
<p style="text-align: center"> </p>
<p style="text-align: center"><span style="font-weight: 400">Este sería el resultado, una gráfica de pastel muy sencilla.</span></p>
<p style="text-align: center"><img style="width: 45%" src="https://aichallenge.utec.edu.uy/wp-content/uploads/2021/03/img37.jpg" /></p>
<p style="text-align: center"><span style="font-weight: 400">Un ejemplo un poco mas avanzado es el siguiente</span></p>
<p style="text-align: center"> </p>
<pre><span style="font-weight: 400">import</span><span style="font-weight: 400"> matplotlib.pyplot </span><span style="font-weight: 400">as</span><span style="font-weight: 400"> plt </span><span style="font-weight: 400;color: #99cc00"># Importamos matplotlib</span><br /><br /><span style="font-weight: 400">y = </span><span style="font-weight: 400;color: #99cc00"># Defino las cantidades a representar en el diagrama</span><br /><br /><span style="font-weight: 400">mylabels =  </span><span style="font-weight: 400;color: #99cc00"># Definimos un array de colores</span><br /><br /><span style="font-weight: 400">mycolors = </span><br /><br /><span style="font-weight: 400">myexplode =  </span><span style="font-weight: 400;color: #99cc00"># Explode nos permite hacer que una seccion del pastel se separe del resto</span><br /><br /><span style="font-weight: 400;color: #99cc00"># myexplode es un array con 4 valores ya que tenemos solo 4 secciones en el pastel</span><br /><br /><span style="font-weight: 400;color: #99cc00"># El primer elemento es mayor a cero mientras que todos los demas son cero, por eso solo el primer elemento se separa del paste.</span><br /><br /><span style="font-weight: 400">plt.figure(figsize=(</span><span style="font-weight: 400;color: #008080">10</span><span style="font-weight: 400">,</span><span style="font-weight: 400;color: #008080">10</span><span style="font-weight: 400">)) </span><span style="font-weight: 400;color: #99cc00"># Definimos un buen tamaño</span><br /><br /><span style="font-weight: 400">plt.title(</span><span style="font-weight: 400;color: #800000">'Venta de helados por porcentaje'</span><span style="font-weight: 400">)</span><br /><br /><span style="font-weight: 400">plt.pie(y, labels = mylabels, startangle = </span><span style="font-weight: 400;color: #008080">120</span><span style="font-weight: 400">, explode = myexplode, colors = mycolors, shadow = </span><span style="font-weight: 400;color: #0000ff">True</span><span style="font-weight: 400">) </span><br /><br /><span style="font-weight: 400;color: #99cc00"># startangle nos permite rotal el pastel, mientras que shadow nos permite agregar una sombra</span><br /><br /><span style="font-weight: 400;color: #99cc00"># colors nos permite definir nuestros propios colores, mientra que explode ya fue explicado</span><br /><br /><span style="font-weight: 400">plt.show() </span></pre>
<p style="text-align: center"> </p>
<p style="text-align: center"><span style="font-weight: 400">Siendo este el resultado</span></p>
<p style="text-align: center"><img style="width: 45%" src="https://aichallenge.utec.edu.uy/wp-content/uploads/2021/03/img40.jpg" /></p>
<p style="text-align: center"><span style="font-weight: 400">Para ver más te recomendamos este </span><a href="https://www.w3schools.com/python/matplotlib_pie_charts.asp"><span style="font-weight: 400">tutorial sencillo</span></a><span style="font-weight: 400">, también </span><a href="https://pythonspot.com/matplotlib-pie-chart/"><span style="font-weight: 400">este tutorial un poco más avanzado</span></a><span style="font-weight: 400"> y como siempre los </span><a href="https://matplotlib.org/stable/gallery/pie_and_polar_charts/pie_features.html"><span style="font-weight: 400">ejemplos del sitio de matplotlib</span></a><span style="font-weight: 400">.</span></p>
<p style="text-align: center"> </p>
<p style="text-align: center"> </p>
<p style="text-align: center"> </p>]]></content:encoded>
                        <category domain="https://aichallenge.utec.edu.uy/community/machine-learning/">Machine Learning</category>                        <dc:creator>taa.admin</dc:creator>
                        <guid isPermaLink="true">https://aichallenge.utec.edu.uy/community/machine-learning/visualizacion-de-datos-simple-con-python-y-matplotlib/</guid>
                    </item>
                                        <item>
                        <title>Introducción a Google Colaboratory</title>
                        <link>https://aichallenge.utec.edu.uy/community/machine-learning/introduccion-a-google-colaboratory/</link>
                        <pubDate>Fri, 19 Feb 2021 19:18:01 +0000</pubDate>
                        <description><![CDATA[¿Qué es?
Google Colaboratory o “Colab” es un servicio de google Drive el cual permite a usuarios de todo el mundo escribir y ejecutar código Python sin necesidad de descargar o instalar alg...]]></description>
                        <content:encoded><![CDATA[<p style="text-align: center"><strong>¿Qué es?</strong></p>
<p><a href="https://colab.research.google.com/notebooks/welcome.ipynb?hl=es"><span style="font-weight: 400">Google Colaboratory</span></a><span style="font-weight: 400"> o “Colab” es un servicio de google Drive el cual permite a usuarios de todo el mundo escribir y ejecutar código Python sin necesidad de descargar o instalar alguna aplicación. </span></p>
<p style="text-align: center"><img style="margin: 0 auto;width: 50%" src="https://aichallenge.utec.edu.uy/wp-content/uploads/2021/02/1P01jcoaGwO4-Bj5qlCSjPf2sc3wxn9i_SiOFjVw.png" /></p>
<p><span style="font-weight: 400">Este código queda guardado en tu cuenta de Google Drive (o sea, en la nube), y es ejecutado en computadoras de Google (por lo cual no importa que computadora estés usando), esto implica ciertas ventajas como el poder acceder a los archivos desde cualquier lugar o el poder trabajar en un mismo archivo de forma colaborativa (por eso el nombre “Colaboratory”). </span></p>
<p> </p>
<p><span style="font-weight: 400">También hay algunas limitaciones, como por ejemplo, dos usuarios no pueden modificar el mismo archivo a la vez (como si sucede Google Docs) y la capacidad de procesamiento disponible varía dependiendo de la disponibilidad de computadoras que tenga Google. La única gran desventaja es que es </span><strong>necesario tener una conexión a internet</strong><span style="font-weight: 400"> estable para poder guardar y ejecutar nuestro código. Más allá de esta última, las demás limitaciones son bastante leves, ya que Google probablemente no se va a quedar sin computadoras disponibles antes que nosotros e incluso con las limitaciones de colaboración, sigue siendo mucho más fácil trabajar en equipo con Google Colab que con cualquier otra alternativa. Por estos motivos, </span><strong>Google Colab es una plataforma ideal para principiantes</strong><span style="font-weight: 400"> que quieren ingresar al mundo de la inteligencia artificial y el análisis de datos.</span></p>
<p><span style="font-weight: 400">Colab tiene un </span><a href="https://colab.research.google.com/notebooks/welcome.ipynb?hl=es"><span style="font-weight: 400">documento de bienvenida</span></a><span style="font-weight: 400"> el cual actúa de forma similar a una visita guiada, mostrando ejemplos y dando enlaces de interés como </span><a href="https://www.youtube.com/watch?reload=9&amp;v=inN8seMm7UI"><span style="font-weight: 400">este video</span></a><span style="font-weight: 400"> el cual explica brevemente cómo usar Google Colaboratory.</span></p>
<p style="text-align: center"><strong>¿Cómo usarlo?</strong></p>
<p><span style="font-weight: 400">Google Colab está basado en el </span><a href="https://es.wikipedia.org/wiki/Proyecto_Jupyter"><span style="font-weight: 400">proyecto Jupyter</span></a><span style="font-weight: 400"> lo cual básicamente significa que funciona mediante bloques. Un documento de Colab vacío no se ve tan distinto a un documento de Doc o Word vacío. Para llenar el documento podemos crear dos tipos de bloques: bloques de código y bloques de texto. </span></p>
<p style="text-align: center"><img class="aligncenter" style="margin: 0 auto;width: 80%" src="https://aichallenge.utec.edu.uy/wp-content/uploads/2021/02/1JKsHzOyYS9NUNrio_r5MFgoYGAsIe5nG0PCBARU.gif" /></p>
<p> </p>
<p><span style="font-weight: 400">Los bloques de código obviamente son en donde vamos a escribir nuestro código. Cada uno de estos bloques trae un botón con el clásico símbolo de “play” el cual nos permite ejecutar nuestro código. Una vez lo ejecutemos se desplegará una consola debajo del bloque mostrando nuestros resultados (si es que hay resultados que mostrar). Es importante tener en cuenta el orden de los bloques al momento de ejecutarlos, ya que ejecutarlos en desorden podría traer confusiones y complicaciones. </span></p>
<p> </p>
<p style="text-align: center"><img class="aligncenter" style="margin: 0 auto;width: 80%" src="https://aichallenge.utec.edu.uy/wp-content/uploads/2021/02/1l9zWnHtpADJQM7uYqVpQRaXDWPXY9QGri9LSarA.gif" /></p>
<p><span style="font-weight: 400">El formato de código en bloques también puede ser útil para aislar y encontrar errores en nuestro código. Ya que los bloques funcionan o fallan de forma individual.</span></p>
<p> </p>
<p style="text-align: center"><img class="aligncenter" style="margin: 0 auto;width: 80%" src="https://aichallenge.utec.edu.uy/wp-content/uploads/2021/02/1fUn8fmns2DXAUgmXc3Vd5vehPUZCdOrnXhJPPQ0.gif" /></p>
<p><span style="font-weight: 400">Los bloques de texto por otro lado no se ejecutan, ya que son solo eso, texto. Aún así son bastante versátiles, permitiendo hacer varios tipos de encabezados, usar imágenes, escribir ecuaciones matemáticas, e incluso el definir títulos y secciones para luego hacer un índice del documento. Estos bloques son especialmente útiles para trabajar en equipo, ya que permiten que aquel que escribe el código pueda comunicar instrucciones, explicaciones o guías que ayuden a comprender el resto del documento, las tareas pendientes o cualquier otro tipo de mensaje. La gran ventaja es que estas instrucciones pueden ser leídas de forma cómoda y secuencial ya que al funcionar mediante bloques un documento de Colab puede tener bloques que expliquen cierta parte del código y a continuación el código al cual se hace referencia. Esto es es muy conveniente para explicar conceptos paso a paso.</span></p>
<p style="text-align: center"><img class="aligncenter" style="margin: 0 auto;width: 80%" src="https://aichallenge.utec.edu.uy/wp-content/uploads/2021/02/1lCxkB6_RNROUMgP1u4gy1uaJqkDt5irw_cDD9XU-1.gif" /></p>
<p style="text-align: center"><strong>Infinitas posibilidades</strong></p>
<p><span style="font-weight: 400">Colab permite únicamente trabajar con Python, pero esto no significa que otorgue pocas posibilidades. Ya que Python tiene una gran cantidad de librerías que son especialmente útiles para el desarrollo de modelos de inteligencia artificial y análisis de datos.</span></p>
<p><span style="font-weight: 400">Importando ciertas librerías y con unas pocas línea </span> <span style="font-weight: 400">de código es posible programar un bloque que devuelva una representación gráfica de datos.</span></p>
<p style="text-align: center"><img class="aligncenter" style="margin: 0 auto;width: 80%" src="https://aichallenge.utec.edu.uy/wp-content/uploads/2021/02/13jpCkmz2KbzsEWodbUr4WtJQWlFSTRJ-6YPBQHk.gif" /></p>
<p><span style="font-weight: 400">También es posible visualizar un conjunto de datos en formato de tabla al estilo excel.</span></p>
<p style="text-align: center"><img class="aligncenter" style="margin: 0 auto;width: 80%" src="https://aichallenge.utec.edu.uy/wp-content/uploads/2021/02/1ZIskMVZRau0e_E1gN8HI8F5oOtCcWAYoHHB0J6w.gif" /></p>
<p><span style="font-weight: 400">Y como siempre podemos imprimir todo tipo de información en la consola. Estas consolas también nos muestran mensajes de error, los cuales siempre son un punto de partida para poder solucionar problemas con nuestro código.</span></p>
<p style="text-align: center"><img class="aligncenter" style="margin: 0 auto;width: 80%" src="https://aichallenge.utec.edu.uy/wp-content/uploads/2021/02/1ZMtSqqQbE0DEceno_awXSSlV0LXd9CCFJFYcIcs.gif" /></p>]]></content:encoded>
                        <category domain="https://aichallenge.utec.edu.uy/community/machine-learning/">Machine Learning</category>                        <dc:creator>taa.admin</dc:creator>
                        <guid isPermaLink="true">https://aichallenge.utec.edu.uy/community/machine-learning/introduccion-a-google-colaboratory/</guid>
                    </item>
                                        <item>
                        <title>Introducción a Machine Learning - Regresión (2/2)</title>
                        <link>https://aichallenge.utec.edu.uy/community/machine-learning/introduccion-a-machine-learning-regresion-2-2/</link>
                        <pubDate>Thu, 11 Feb 2021 21:23:19 +0000</pubDate>
                        <description><![CDATA[IMPORTANTE: Este artículo es la continuación de este artículo anterior , es recomendable empezar desde el principio para entender bien los conceptos y poder seguir los ejercicios.
 
¡Armá ...]]></description>
                        <content:encoded><![CDATA[<p><span style="color: #ff0000"><strong>IMPORTANTE: </strong></span><span style="font-weight: 400">Este artículo es la continuación de <a href="https://aichallenge.utec.edu.uy/community/machine-learning/introduccion-a-regresion-lineal/" target="_blank" rel="noopener">este artículo anterior</a> , es recomendable empezar desde el principio para entender bien los conceptos y poder seguir los ejercicios.</span></p>
<p> </p>
<p><span style="font-weight: 400">¡Armá tu primer modelo de Machine Learning! En esta segunda parte (primera parte <a href="https://aichallenge.utec.edu.uy/community/machine-learning/introduccion-a-regresion-lineal/#post-115" target="true">acá</a>)explicaremos de forma sencilla y accesible los conceptos teóricos básicos y haremos una demostración práctica (explicada paso a paso) sobre cómo armar un modelo simple de Machine Learning, el cual a través de regresión polinomial es capaz de predecir valores de casas en Estados Unidos simplemente conociendo algunos de sus datos. </span></p>
<p><span style="font-weight: 400">Vamos explorar los conceptos de polinomios (no hay que temer a la matemática, ya que Python se encargará de calcular) y regresión múltiple, además de la importancia y utilidad de separar el conjunto de datos inicial en conjuntos de entrenamiento y validación para poder evaluar la utilidad del mismo.</span></p>
<p> </p>
<p style="text-align: center"><strong>Polinomios y sus grados</strong></p>
<p><span style="font-weight: 400">Sin adentrarnos en demasiada matemática vamos a dar una pequeña explicación sobre los polinomios.</span></p>
<p><span style="font-weight: 400">Un monomio es una combinación (expresión algebraica) de números y letras (variables) que consta de variables, coeficiente, y grado, estos distintos elementos se combinan </span><strong>exclusivamente </strong><span style="font-weight: 400">a través de</span> <strong>multiplicaciones</strong><span style="font-weight: 400">. Esto puede sonar complicado pero es mucho más fácil entenderlo con un ejemplo. </span></p>
<p>                                                                                                       <img src="https://aichallenge.utec.edu.uy/wp-content/uploads/2021/02/Ejemplo-polinomio-1.jpg" /></p>
<p style="text-align: center"><span style="font-weight: 400">Es correcto afirmar que el monomio</span><span style="font-weight: 400">4</span><span style="font-weight: 400">x</span><span style="font-weight: 400">3</span><span style="font-weight: 400">tiene:</span></p>
<ul style="text-align: center">
<li style="font-weight: 400"><span style="font-weight: 400">Un </span><span style="color: #ff0000"><strong>coeficiente </strong></span><span style="font-weight: 400">igual a 4</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">Una </span><span style="color: #ff9900"><strong>variable </strong></span><span style="font-weight: 400">x              <br /></span></li>
<li style="font-weight: 400"><span style="font-weight: 400">Un </span><span style="color: #00ff00"><strong>grado </strong></span><span style="font-weight: 400">3                  <br /></span></li>
</ul>
<p style="text-align: center"> </p>
<p><span style="font-weight: 400">Un polinomio entonces, tal y como lo indica la palabra (“poli” significa “muchos”) es un conjunto de monomios.</span></p>
<p style="text-align: center"><span style="font-weight: 400">Un ejemplo de un polinomio puede ser: <br /></span></p>
<p>                                                     <img src="https://aichallenge.utec.edu.uy/wp-content/uploads/2021/02/Ejemplo-ecuacion-polinomio-junto-con-lista.jpg" /></p>
<p> </p>
<p><span style="font-weight: 400">Podemos decir que el ese polinomio entonces está compuesto por 5 monomios distintos. Es importante notar que lo que separa un polinomio de otro son los signos de suma o resta. </span></p>
<p> </p>
<p><span style="font-weight: 400">Para nosotros lo más importante de un polinomio es su grado. </span><span style="font-weight: 400">En el artículo anterior vimos que podemos representar cualquier recta con la ecuación:</span></p>
<blockquote>
<p style="text-align: center"><span style="font-weight: 400;font-size: 14pt">y = mx + b</span></p>
</blockquote>
<p><span style="font-weight: 400">Según lo que acabamos de ver, mx + b es un polinomio de primer grado (ya que x elevado a grado 1 es igual a x)</span><span style="font-weight: 400">. Igualando una variable y a polinomios de primer grado entonces podemos obtener rectas. Lo único que tenemos que variar es m y b, que si nos ponemos a pensar son </span><span style="text-decoration: underline"><strong>coeficientes</strong></span><span style="font-weight: 400">. </span></p>
<p>                               <img src="https://aichallenge.utec.edu.uy/wp-content/uploads/2021/02/gif-y-mx-b.gif" /></p>
<p style="text-align: center"><span style="font-weight: 400">Variando los coeficientes de una expresión de segundo grado podemos ver algunas de las parábolas que podemos obtener.</span></p>
<p>                                             <img src="https://aichallenge.utec.edu.uy/wp-content/uploads/2021/02/polinomio-grado-2.gif" /></p>
<p style="text-align: center"><span style="font-weight: 400">¿Qué pasa si trabajamos con un polinomio de tercer grado?</span></p>
<p>                                       <img src="https://aichallenge.utec.edu.uy/wp-content/uploads/2021/02/polinomio-grado-3.gif" /></p>
<p style="text-align: center"><span style="font-weight: 400">¿Y de cuarto grado?</span></p>
<p>                                     <img src="https://aichallenge.utec.edu.uy/wp-content/uploads/2021/02/polinomio-grado-5.gif" /></p>
<p><span style="font-weight: 400">Podemos observar que a medida que aumentamos el grado del polinomio este puede “dibujar” cada vez más figuras.</span></p>
<p><span style="font-weight: 400">En el anterior artículo mostramos cómo hacer una regresión lineal, la cual básicamente intentaba resumir lo mejor posible una nube de puntos en una línea recta. En este artículo vamos a mostrar como obtener mejores resultados a través de una regresión polinomial, la cual según acabamos de ver puede “dibujar” figuras más complejas con curvas, dando un mejor resultado.</span></p>
<p> </p>
<p style="text-align: center"><strong>Regresión múltiple</strong></p>
<p> </p>
<p><span style="font-weight: 400">En el anterior ejercicio concluimos que una sola variable no era suficiente para predecir el valor de una casa. Algo que sabemos de forma intuitiva en la vida diaria, todos sabemos que por ejemplo una casa en la playa suele ser más cara que una casa del mismo tamaño en otro lugar. </span></p>
<p><span style="font-weight: 400">Es necesario entonces recurrir a una regresión lineal pero con múltiples variables para evaluar si así conseguiremos mejores resultados. </span></p>
<p><span style="font-weight: 400">Un detalle que puede llegar a ser intimidante es el hecho de que al trabajar con más dos variables ya no es posible graficar nuestra regresión en dos dimensiones. En el ejercicio sencillamente nos guiaremos únicamente con el valor de R2 sin necesidad de graficar, ya que estas son exclusivamente para poder explicar de forma visual que está haciendo nuestro modelo, no son necesarias para el funcionamiento del mismo. </span></p>
<p> </p>
<p><strong>La importancia de separar conjuntos de datos en validación y entrenamiento</strong></p>
<p> </p>
<p><span style="font-weight: 400">En el artículo anterior mostramos cómo realizar una regresión lineal utilizando python, nuestra regresión lineal permite simplificar una nube de datos compleja en una sencilla recta. Es posible que hayas tenido que realizar ejercicios similares de forma manual en alguna tarea relacionada a física o química de forma de poder obtener el valor de una variable. La diferencia para este caso es que nosotros estamos interesados en crear una regresión la cual nos permita predecir valores, por lo que hay que tener en cuenta que el propósito de nuestro modelo es poder presentarle valores desconocidos fuera del dataset y que nos de resultados útiles. Por este motivo es importante no sólo utilizar métricas de error, sino que también mostrarle al modelo datos los cuales nunca ha visto. De esta forma, si las métricas de error nos dan buenos resultados con datos nunca antes vistos podemos asegurarnos de que el modelo verdaderamente está “aprendiendo” en lugar de solo “memorizando” y dará buenos resultados en el futuro. </span></p>
<p><span style="font-weight: 400">La separación de datos en conjuntos de entrenamiento y validación es siempre recomendable, pero es importante tener suficientes datos, ya que si nuestro dataset es muy pequeño, podría ser perjudicial el no estar aprovechando cada dato posible para entrenar al modelo. Como en el anterior ejercicio vimos que el dataset contiene miles de filas (o sea, datos sobre miles de casas), podemos entonces separarlo en dos conjuntos más pequeños. Normalmente se sugiere dejar el 80% de los datos de nuestro dataset para entrenar al modelo y el restante 20% para evaluarlo, llegando en algunos casos a dejar 70% del dataset para entrenamiento y 30% para validación en caso de que el dataset sea pequeño. </span></p>
<p>                                        <img src="https://aichallenge.utec.edu.uy/wp-content/uploads/2021/02/Polinomio-grafica.jpg" /></p>
<p><span style="font-weight: 400">En resumen entonces lo que vamos a hacer en este ejercicio es separar nuestro dataset que contiene información sobre casas para obtener dos datasets más pequeños. Uno de estos datasets lo usaremos para entrenar al modelo mientras que otro lo usaremos para evaluar al mismo, similar a como un profesor plantea pruebas para sus estudiantes para evaluar su aprendizaje. Mediremos el R2 obtenido  con cada uno de los conjuntos de datos, obteniendo R2 en entrenamiento y R2 en validación. Siendo el R2 de validación con el que nos guiaremos para juzgar qué tan bueno es el modelo.</span></p>
<p>                                                                        <img src="https://aichallenge.utec.edu.uy/wp-content/uploads/2021/02/Testeo-validacion-e1613078043614.jpg" /></p>
<p><span style="font-weight: 400">Te invitamos entonces a que vayas a </span><a href="https://colab.research.google.com/drive/1p9RiVSKmCg8eQYQ9xZmb0eGOEpVs0Cuo?usp=sharing" target="true"><span style="font-weight: 400">este enlace de Google Colaboratory</span></a><span style="font-weight: 400"> para ver de forma interactiva el ejercicio. Pondremos en práctica estos conocimientos obteniendo al final del ejercicio una regresión polinomial la cual toma en cuenta múltiples variables y evaluaremos sus resultados en los conjuntos de entrenamiento y validación. </span></p>
<p>             <img src="https://aichallenge.utec.edu.uy/wp-content/uploads/2021/01/1M5YuE4NuCtAZ3LszbF-2aIZG27V5XRUcjdwv1Bk.gif" /></p>
<p> </p>
<p style="text-align: center"><strong>¿Qué es Google Colaboratory?</strong></p>
<p><span style="font-weight: 400"><a href="https://colab.research.google.com/notebooks/intro.ipynb" target="true">Google Colaboratory</a> (Google Colab para los amigos) es una herramienta que permite escribir y ejecutar código de forma colaborativa entre múltiples participantes, no requiere instalar ninguna aplicación ya que es 100% en línea y permite también ejecutar bloques individuales de código, con lo cual te mostraremos paso a paso cómo crear tu modelo.</span></p>]]></content:encoded>
                        <category domain="https://aichallenge.utec.edu.uy/community/machine-learning/">Machine Learning</category>                        <dc:creator>taa.admin</dc:creator>
                        <guid isPermaLink="true">https://aichallenge.utec.edu.uy/community/machine-learning/introduccion-a-machine-learning-regresion-2-2/</guid>
                    </item>
                                        <item>
                        <title>Introducción a Machine Learning - Regresión (1/2)</title>
                        <link>https://aichallenge.utec.edu.uy/community/machine-learning/introduccion-a-regresion-lineal/</link>
                        <pubDate>Fri, 29 Jan 2021 18:11:15 +0000</pubDate>
                        <description><![CDATA[La regresión es utilizada en todo tipo de industrias alrededor del mundo, es útil para predecir el valor de una propiedad inmobiliaria tal y como es útil para predecir el valor de un boleto ...]]></description>
                        <content:encoded><![CDATA[<p><span style="font-weight: 400">La regresión es utilizada en todo tipo de industrias alrededor del mundo, es útil para predecir el valor de una propiedad inmobiliaria tal y como es útil para predecir el valor de un boleto de avión, las aplicaciones son infinitas. Casualmente también es la forma más sencilla y recomendad de entrar al mundo del Machine Learning, por este motivo es importante tener un entendimiento al menos básico de la misma. </span><strong>Para el final de esta publicación tendrás todo lo necesario para realizar tu primer modelo de predicción lineal con Python y sklearn (¡Incluyendo el código!).</strong></p>
<p><span style="font-weight: 400">En estadística la regresión lineal simple es un método matemático el cual estudia la relación lineal existente entre dos variables (de ser más variables sería regresión múltiple). Es importante destacar que la relación entre estas variables siempre será una relación estadística, es decir, no será “perfecta” o totalmente exacta, pero sí puede ser suficientemente cercana a la verdad como para ser útil.</span></p>
<p><span style="font-weight: 400">La manera más sencilla de entender la regresión lineal es visualmente.</span></p>
<p> </p>
<p><img class="aligncenter" style="max-width: 400px" src="https://aichallenge.utec.edu.uy/wp-content/uploads/2021/01/15phg9QJBZ22XnPgNoV9PeR6X40MWNCMitzV44jA.jpg" /></p>
<p><span style="font-weight: 400">La anterior imagen muestra una serie de datos u observaciones representados como puntos en la gráfica. Es imposible encontrar una recta la cual pase por todos los puntos, pero si es posible encontrar la recta más representativa de todos esos puntos. Al encontrarla podría decirse que se está simplificando esta compleja nube de puntos en una sencilla recta.</span></p>
<p><span style="font-weight: 400">Este artículo no detallará los métodos matemáticos necesarios para encontrar esta recta, ya que de eso se encargará Python, pero si se explicarán algunos conceptos básicos.</span></p>
<p> </p>
<p><strong>Rectas en pocas palabras</strong></p>
<p><span style="font-weight: 400">Una recta es una línea formada por una cantidad infinita de puntos a lo largo de una misma dirección (ocupando una sola dimensión). Toda recta puede ser representada mediante la siguiente ecuación:</span></p>
<blockquote>
<p style="text-align: center"><span style="font-weight: 400">y = mx + b</span></p>
</blockquote>
<p style="text-align: center"><span style="font-weight: 400">Además de las variables </span><i><span style="font-weight: 400">x </span></i><span style="font-weight: 400">e </span><i><span style="font-weight: 400">y </span></i><span style="font-weight: 400">tenemos la pendiente </span><i><span style="font-weight: 400">m </span></i><span style="font-weight: 400">y el término independiente </span><i><span style="font-weight: 400">b</span></i><span style="font-weight: 400">. La pendiente m determina la inclinación de la recta, si la inclinación es positiva podría decirse que la recta “va hacia arriba” mientras que si la inclinación es negativa “va hacia abajo”, lo cual no sería matemáticamente correcto pero si tiene sentido visualmente ya que leemos de izquierda a derecha.</span></p>
<p> </p>
<p><span style="font-weight: 400">Esta animación muestra el efecto de variar el valor m en la recta.</span></p>
<p><img style="max-width: 500px" src="https://aichallenge.utec.edu.uy/wp-content/uploads/2021/01/1h9WjV_gSnNZ5aWlDF8ov36yyEnWbtFWdW39uWk0.gif" /></p>
<p> </p>
<p><span style="font-weight: 400">Esta animación muestra el efecto de variar el valor b en la recta</span></p>
<p><img style="max-width: 500px" src="https://aichallenge.utec.edu.uy/wp-content/uploads/2021/01/1XzFfXfmcUxPIkGQbqw4z4tQgA23_Y517zft6GUM.gif" /></p>
<p> </p>
<p><strong>Métrica de error y R2</strong></p>
<p><span style="font-weight: 400">Como se mencionó anteriormente, las rectas obtenidas nunca serán perfectas, pero sí pueden ser útiles. Para juzgar su utilidad es necesario entonces calcular su error, es decir, que tan inexactas son. Para esto una de las herramientas más utilizadas es el coeficiente de determinación también conocido como </span><span style="font-weight: 400">R</span><span style="font-weight: 400">2</span><span style="font-weight: 400">score</span><span style="font-weight: 400"> (en inglés) y comúnmente llamado sencillamente R2.</span></p>
<p> <span style="font-weight: 400">El valor de R2 toma en cuenta la distancia de cada de los puntos a la recta, como se muestra en la siguiente imagen.</span></p>
<p><img style="max-width: 500px" src="https://aichallenge.utec.edu.uy/wp-content/uploads/2021/01/1wNxcNkg5qPkVS0BAkFTkUU-rvPkVCzO-azvGWWc.png" /></p>
<p><span style="font-weight: 400">Si utilizamos entonces una regresión lineal para predecir un valor, el valor de r2 nos dice que tan confiable es esa predicción.</span></p>
<p><span style="font-weight: 400">Significado de los valores de R2 en pocas palabras:</span></p>
<ul>
<li style="font-weight: 400"><span style="font-weight: 400">1 es el valor máximo posible, un resultado de 1 significa que la recta se ajusta perfectamente a los puntos. Esto es imposible en el mundo real y suele indicar que hay algún error en el modelo, se suele decir que este valor es “demasiado bueno para ser real”</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">Un valor mayor a 0,7 significa que el modelo es bueno y útil la mayoría de los casos del mundo real.</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">Un valor entre 0,5 y 0 es un modelo debido, probablemente no sea de mucha utilidad en el mundo real</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">Un valor negativo da resultados pésimos.</span></li>
</ul>
<p> </p>
<p><img src="https://aichallenge.utec.edu.uy/wp-content/uploads/2021/01/1r1p6nfFmjmfeGJwPJIRq6HXei212MctEb8gUDlI.png" /></p>
<p> </p>
<p><strong>Creando tu primer modelo</strong></p>
<p><span style="font-weight: 400">Ahora que sabes lo básico es hora d2e crear tu primer modelo. Por eso te invitamos a que abras </span><a href="https://colab.research.google.com/drive/1bXVcEbROkqzHVmPJ5vKJtyifTA9Y-K-B?usp=sharing" target="true"><span style="font-weight: 400">este enlace de Google Colab</span></a><span style="font-weight: 400">, donde te mostraremos de forma interactiva cómo crear tu propia regresión lineal.</span></p>
<p><img style="max-width: 700px" src="https://aichallenge.utec.edu.uy/wp-content/uploads/2021/01/1M5YuE4NuCtAZ3LszbF-2aIZG27V5XRUcjdwv1Bk.gif" /></p>
<p><span style="font-weight: 400">Google Colab es una herramienta que permite escribir y ejecutar código de forma colaborativa entre múltiples participantes, no requiere instalar ninguna aplicación ya que es 100% en línea y permite también ejecutar bloques individuales de código, con lo cual te mostraremos paso a paso cómo crear tu modelo.</span></p>]]></content:encoded>
                        <category domain="https://aichallenge.utec.edu.uy/community/machine-learning/">Machine Learning</category>                        <dc:creator>taa.admin</dc:creator>
                        <guid isPermaLink="true">https://aichallenge.utec.edu.uy/community/machine-learning/introduccion-a-regresion-lineal/</guid>
                    </item>
                                        <item>
                        <title>Tensorflow, errores en código</title>
                        <link>https://aichallenge.utec.edu.uy/community/machine-learning/tensorflow-errores-en-codigo/</link>
                        <pubDate>Wed, 16 Dec 2020 01:43:36 +0000</pubDate>
                        <description><![CDATA[Hola, perdón consulto porque he estado intentando solucionar el siguiente error pero no he podido: al utilizar model.train(input_fn= funcion_entrada, steps=8000) da error estuve intentando s...]]></description>
                        <content:encoded><![CDATA[<p>Hola, perdón consulto porque he estado intentando solucionar el siguiente error pero no he podido: al utilizar model.train(input_fn= funcion_entrada, steps=8000) da error estuve intentando solucionarlo y creo es porque en migración de la versión v1 a la v2 de tensorflow dejó de funcionar algunas pude solucionarlas agregando compat.v1 pero no he podido con: model.train(input_fn= funcion_entrada, steps=8000)</p>
<p>Me da el siguiente error:</p>
<p>ValueError                                Traceback (most recent call last)<a href="https://localhost:8080/" data-href="&lt;ipython-input-92-fe147f8aff12&gt;">&lt;ipython-input-92-fe147f8aff12&gt;</a> in &lt;module&gt;()----&gt; 1 modelo.train(input_fn=funcion_entrada, steps=8000) </p>
<p><span>6 frames</span></p>
<p><a href="https://localhost:8080/" data-href="/usr/local/lib/python3.6/dist-packages/tensorflow_estimator/python/estimator/canned/optimizers.py">/usr/local/lib/python3.6/dist-packages/tensorflow_estimator/python/estimator/canned/optimizers.py</a> in get_optimizer_instance_v2(opt, learning_rate)<strong>    143</strong>     raise ValueError(<strong>    144</strong>         'The given object is not a tf.keras.optimizers.Optimizer instance.'--&gt; 145         ' Given: {}'.format(opt))<strong>    146</strong>   return opt ValueError: The given object is not a tf.keras.optimizers.Optimizer instance. Given: &lt;tensorflow.python.training.proximal_adagrad.ProximalAdagradOptimizer object at 0x7fee53292160&gt;</p>
<p>Muchas gracias!</p>
<p>Saludos, </p>
<p>Mauro.</p>]]></content:encoded>
                        <category domain="https://aichallenge.utec.edu.uy/community/machine-learning/">Machine Learning</category>                        <dc:creator>giani.carlevaro</dc:creator>
                        <guid isPermaLink="true">https://aichallenge.utec.edu.uy/community/machine-learning/tensorflow-errores-en-codigo/</guid>
                    </item>
                                        <item>
                        <title>Aprendizaje supervisado</title>
                        <link>https://aichallenge.utec.edu.uy/community/machine-learning/aprendizaje-supervisado/</link>
                        <pubDate>Thu, 03 Dec 2020 18:26:32 +0000</pubDate>
                        <description><![CDATA[Una introducción
El objetivo de la inteligencia artificial es el permitirle a las computadoras desarrollar habilidades que típicamente requieren inteligencia humana.
El Machine learning o ...]]></description>
                        <content:encoded><![CDATA[<p></p>
<h2 style="text-align: center"><span style="font-weight: 400;color: #800080">Una introducción</span></h2>
<p><span style="font-weight: 400">El objetivo de la inteligencia artificial es el permitirle a las computadoras desarrollar habilidades que típicamente requieren inteligencia humana.</span></p>
<p><span style="font-weight: 400">El Machine learning o aprendizaje automático es una sub-rama de la inteligencia artificial, podría decirse que el Machine Learning es el estudio y aplicación de cierto tipo de técnicas con las cuales es posible desarrollar inteligencia artificial. La razón por la cual se le dice aprendizaje automático es porque este tipo de aplicación permite que las computadoras aprendan sin necesidad de intervención humana. </span></p>
<p><span style="font-weight: 400">Esta sub-rama contiene otras sub-ramas como el aprendizaje reforzado, el aprendizaje no supervisado, el aprendizaje semi-supervisado, y el aprendizaje supervisado. Sobre este último tratará este artículo.</span></p>
<h2 style="text-align: center"><span style="font-weight: 400;color: #800080">¿Qué es?</span></h2>
<p><span style="font-weight: 400">El aprendizaje supervisado es una modalidad del Machine Learning donde la computadora aprende a reconocer patrones partir de los datos ingresados, etiquetados y clasificados por un ser humano. Para entregar algún tipo de resultado específico deseado. Este tipo de aprendizaje es el más sencillo y más adoptado en todo el mundo. </span></p>
<h2 style="text-align: center"><span style="font-weight: 400;color: #800080">¿Para qué se utiliza?</span></h2>
<p><span style="font-weight: 400">El aprendizaje supervisado es utilizado por bancos de todo el mundo para la detección de transacciones fraudulentas.</span></p>
<p><span style="font-weight: 400">También es utilizado en el ámbito de la medicina para detectar cáncer de piel y otro tipo de enfermedades.</span></p>
<p><span style="font-weight: 400">El año 2019, en el primer challenge de la plataforma AiUteChallenge se utilizó para predecir la probabilidad de abandono de distintos estudiantes de UTEC.</span></p>
<p><span style="font-weight: 400"> </span></p>
<h2 style="text-align: center"><span style="font-weight: 400;color: #800080">¿Cómo funciona?</span></h2>
<p><span style="font-weight: 400">El aprendizaje supervisado funciona a través de ejemplos, se le entrega a la máquina un conjunto de datos etiquetados para que aprenda a reconocer patrones, de forma de detectarlos al ver datos nuevos sin etiquetar. El concepto de etiquetar se explicará más adelante.</span></p>
<p><span style="font-weight: 400">El aprendizaje supervisado tiene dos modalidades principales para ser utilizado, estas son la regresión y clasificación.</span></p>
<h2 style="text-align: center"><span style="font-weight: 400;color: #800080">Regresión</span></h2>
<p style="text-align: left"><span style="font-weight: 400">La regresión es una de las modalidades más simples de Machine Learning, lo que significa que también es una de las más rápidas, consume pocos recursos y su funcionamiento es mucho más transparente y fácil de entender, por lo cual es una de las modalidades más accesibles para principiantes.</span></p>
<p style="text-align: center"><img src="https://aichallenge.utec.edu.uy/wp-content/uploads/2020/12/197eQJ024hihU2zVq-vg2vrdwHgqcxkoWUZ7XryWcFUy5GaRw.png" /></p>
<p style="text-align: left"><span style="font-weight: 400">La regresión consiste en darle datos a una máquina para que esta intente comprender la relación entre distintas variables, de esta forma es posible predecir, pronosticar y encontrar resultados. Un buen ejemplo sería predecir la calificación que obtendrá un estudiante en un examen a partir de sus horas de estudio y su asistencia a clases.</span></p>
<p style="text-align: left"><span style="font-weight: 400">Los ejemplos de la vida real pueden ser una buena manera de aprender conceptos, para lo cual tenemos la siguiente gráfica.</span></p>
<p style="text-align: center"><img src="https://aichallenge.utec.edu.uy/wp-content/uploads/2020/12/17WQD3Lf3jfk1oAaxoo2h69Cwhlmcmj4CAOakLVA.png" /></p>
<p style="text-align: left"><span style="font-weight: 400">La anterior gráfica obtenida  a través de </span><a href="https://trends.google.es/trends/?geo=ES"><span style="font-weight: 400">Google Trends</span></a><span style="font-weight: 400"> muestra las búsquedas relacionadas a la canción </span><i><span style="font-weight: 400">“All I Want For Christmas is You” (“Todo lo que quiero para navidad eres tú” </span></i><span style="font-weight: 400">en español) de Mariah Carey, una de las canciones navideñas más famosas de Estados Unidos.</span></p>
<p><span style="font-weight: 400">Cada pico de interés corresponde al mes de diciembre de cada año, la gráfica llega hasta el día 2 de diciembre del 2020. Si alguien pidiera que dibujaras la continuación de esa gráfica ¿Qué harías? Lo más probable es que dibujaras otro pico en el mes de diciembre que bajara tan rápido como subió ¿Por qué es tan obvia esta conclusión? Porque </span><strong>lo mismo sucede todos los años</strong><span style="font-weight: 400">.</span></p>
<p><span style="font-weight: 400">Este tipo de razonamiento sencillo es bastante similar a como funciona una regresión, el cerebro humano instintivamente es capaz de encontrar la relación entre las variables de tiempo y la popularidad de esta canción. </span></p>
<p><span style="font-weight: 400">La regresión consiste en otorgarle a una computadora estas mismas capacidades de relacionar variables a través de matemática, evitando así los posibles sesgos y errores humanos. Sin mencionar el hecho de que una máquina puede manejar una mayor cantidad de variables y datos.</span></p>
<p><span style="font-weight: 400">Para lograr esto hay una gran variedad de técnicas de regresión, estas son algunas de ellas:</span></p>
<ul>
<li style="font-weight: 400"><span style="font-weight: 400">Regresión Lineal (Linear Regression)</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">Regresión Logística (Logistic Regression)</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">Regresión de Ridge (Ridge Regression)</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">Regresión de Lasso (Lasso Regression)</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">Regresión polinómica (Polynomial Regression)</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">Regresión Lineal Bayesiana (Bayesian Linear Regression)</span></li>
</ul>
<h2 style="text-align: center"><span style="font-weight: 400;color: #800080">Clasificación</span></h2>
<p style="text-align: center"><img class="aligncenter" src="https://aichallenge.utec.edu.uy/wp-content/uploads/2020/12/1lZGUsDUcrYPDl8wPMUmkZnRTz9AX-Q1ZiUbuTp8JveI8TwjF.png" /></p>
<p> </p>
<p style="text-align: left"><span style="font-weight: 400">Para explicar cómo funciona la clasificación usaremos como ejemplo el desafío de 2019 del aiutechallenge.</span></p>
<p style="text-align: left"><span style="font-weight: 400">Este desafío constaba de predecir la probabilidad de que un estudiante abandonara sus estudios en UTEC a partir de varios tipos de datos, usaremos una versión simplificada de ejemplo.</span></p>
<p><span style="font-weight: 400">Supongamos que tenemos una  planilla de datos anónimos de distintos estudiantes. Esta planilla vamos a dividirla en dos secciones, una sección para entrenar a la computadora, la cual estará etiquetada y otra sección para evaluarla, la cual no tendrá etiquetas. Similar a como en una clase un docente le entrega a los estudiantes las soluciones de los ejercicios de práctica pero entrega estas durante un examen.</span></p>
<p><span style="font-weight: 400">La siguiente tabla sería la sección de entrenamiento de la planilla, decimos que está etiquetada. Las etiquetas se encuentran en la última columna, la cual especifica si el estudiante abandonó o no, la etiqueta de cada fila entonces es este valor binario (ya que solo puede  tener dos valores: “si” o “no”). Las columnas de datos que no corresponden a la etiqueta son conocidas como preguntas.</span></p>
<table>
<tbody>
<tr>
<td>
<p><span style="font-weight: 400">Nº</span></p>
</td>
<td>
<p><span style="font-weight: 400">Edad</span></p>
</td>
<td>
<p><span style="font-weight: 400">Carrera</span></p>
</td>
<td>
<p><span style="font-weight: 400">Trabaja</span></p>
<p><span style="font-weight: 400">(Si/no)</span></p>
</td>
<td>
<p><span style="font-weight: 400">Horas de trabajo semanales</span></p>
</td>
<td>
<p><span style="font-weight: 400">Promedio de notas</span></p>
</td>
<td>
<p><span style="font-weight: 400">Semestres cursados</span></p>
</td>
<td>
<p><span style="font-weight: 400">¿Abandonó?</span></p>
<p><span style="font-weight: 400">(Si/no)</span></p>
</td>
</tr>
<tr>
<td>
<p><span style="font-weight: 400">1</span></p>
</td>
<td>
<p><span style="font-weight: 400">24</span></p>
</td>
<td>
<p><span style="font-weight: 400">ILOG</span></p>
</td>
<td>
<p><span style="font-weight: 400">Si</span></p>
</td>
<td>
<p><span style="font-weight: 400">20</span></p>
</td>
<td>
<p><span style="font-weight: 400">4,60</span></p>
</td>
<td>
<p><span style="font-weight: 400">5</span></p>
</td>
<td>
<p><span style="font-weight: 400">No</span></p>
</td>
</tr>
<tr>
<td>
<p><span style="font-weight: 400">2</span></p>
</td>
<td>
<p><span style="font-weight: 400">20</span></p>
</td>
<td>
<p><span style="font-weight: 400">IMEC</span></p>
</td>
<td>
<p><span style="font-weight: 400">No</span></p>
</td>
<td>
<p><span style="font-weight: 400">0</span></p>
</td>
<td>
<p><span style="font-weight: 400">3,05</span></p>
</td>
<td>
<p><span style="font-weight: 400">3</span></p>
</td>
<td>
<p><span style="font-weight: 400">No</span></p>
</td>
</tr>
<tr>
<td>
<p><span style="font-weight: 400">3</span></p>
</td>
<td>
<p><span style="font-weight: 400">19</span></p>
</td>
<td>
<p><span style="font-weight: 400">IEE</span></p>
</td>
<td>
<p><span style="font-weight: 400">No</span></p>
</td>
<td>
<p><span style="font-weight: 400">0</span></p>
</td>
<td>
<p><span style="font-weight: 400">2,79</span></p>
</td>
<td>
<p><span style="font-weight: 400">2</span></p>
</td>
<td>
<p><span style="font-weight: 400">Si</span></p>
</td>
</tr>
<tr>
<td>
<p><span style="font-weight: 400">4</span></p>
</td>
<td>
<p><span style="font-weight: 400">33</span></p>
</td>
<td>
<p><span style="font-weight: 400">TJMC</span></p>
</td>
<td>
<p><span style="font-weight: 400">Si</span></p>
</td>
<td>
<p><span style="font-weight: 400">60</span></p>
</td>
<td>
<p><span style="font-weight: 400">2,10</span></p>
</td>
<td>
<p><span style="font-weight: 400">1</span></p>
</td>
<td>
<p><span style="font-weight: 400">Si</span></p>
</td>
</tr>
<tr>
<td>
<p><span style="font-weight: 400">…</span></p>
</td>
<td>
<p><span style="font-weight: 400">…</span></p>
</td>
<td>
<p><span style="font-weight: 400">…</span></p>
</td>
<td>
<p><span style="font-weight: 400">…</span></p>
</td>
<td>
<p><span style="font-weight: 400">…</span></p>
</td>
<td>
<p><span style="font-weight: 400">…</span></p>
</td>
<td>
<p><span style="font-weight: 400">…</span></p>
</td>
<td>
<p><span style="font-weight: 400">…</span></p>
</td>
</tr>
<tr>
<td>
<p><span style="font-weight: 400">800</span></p>
</td>
<td>
<p><span style="font-weight: 400">36</span></p>
</td>
<td>
<p><span style="font-weight: 400">TMSPL</span></p>
</td>
<td>
<p><span style="font-weight: 400">Si</span></p>
</td>
<td>
<p><span style="font-weight: 400">30</span></p>
</td>
<td>
<p><span style="font-weight: 400">3,36</span></p>
</td>
<td>
<p><span style="font-weight: 400">6</span></p>
</td>
<td>
<p><span style="font-weight: 400">No</span></p>
</td>
</tr>
</tbody>
</table>
<p><span style="font-weight: 400">Esto es entonces un problema de clasificación donde tenemos dos conjuntos, por un lado tenemos el conjunto de aquellos que abandonan y por otro tenemos el conjunto de aquellos que no abandonan su carrera. La idea es que luego de que la máquina haya sido entrenada podamos mostrarle los datos de evaluación los cuales no están etiquetados y que esta nos devuelva resultados precisos la mayoría de las veces. </span></p>
<p><span style="font-weight: 400">Se dice que en el aprendizaje supervisado las salidas de datos son conocidas o esperadas, esto implica que sabemos qué tipo de respuesta podemos obtener de la inteligencia artificial. En este caso sabemos que obtendremos un número, una probabilidad entre 0% y 100% de que ese estudiante pertenezca a un conjunto o a otro.</span></p>
<p><span style="font-weight: 400">La idea entonces es que una vez le demos los resultados sin etiquetar a la máquina, esta nos devuelva un resultado similar a este:</span></p>
<table>
<tbody>
<tr>
<td>
<p><span style="font-weight: 400">Nº</span></p>
</td>
<td>
<p><span style="font-weight: 400">Edad</span></p>
</td>
<td>
<p><span style="font-weight: 400">Carrera</span></p>
</td>
<td>
<p><span style="font-weight: 400">Trabaja</span></p>
<p><span style="font-weight: 400">(Si/no)</span></p>
</td>
<td>
<p><span style="font-weight: 400">Horas de trabajo semanales</span></p>
</td>
<td>
<p><span style="font-weight: 400">Promedio de notas</span></p>
</td>
<td>
<p><span style="font-weight: 400">Semestres cursados</span></p>
</td>
<td>
<p><span style="font-weight: 400">Probabilidad de abandono</span></p>
</td>
</tr>
<tr>
<td>
<p><span style="font-weight: 400">1</span></p>
</td>
<td>
<p><span style="font-weight: 400">36</span></p>
</td>
<td>
<p><span style="font-weight: 400">ILOG</span></p>
</td>
<td>
<p><span style="font-weight: 400">Si</span></p>
</td>
<td>
<p><span style="font-weight: 400">20</span></p>
</td>
<td>
<p><span style="font-weight: 400">4,67</span></p>
</td>
<td>
<p><span style="font-weight: 400">7</span></p>
</td>
<td>
<p><span style="font-weight: 400">15,34%</span></p>
</td>
</tr>
<tr>
<td>
<p><span style="font-weight: 400">2</span></p>
</td>
<td>
<p><span style="font-weight: 400">20</span></p>
</td>
<td>
<p><span style="font-weight: 400">IMEC</span></p>
</td>
<td>
<p><span style="font-weight: 400">No</span></p>
</td>
<td>
<p><span style="font-weight: 400">0</span></p>
</td>
<td>
<p><span style="font-weight: 400">2,01</span></p>
</td>
<td>
<p><span style="font-weight: 400">1</span></p>
</td>
<td>
<p><span style="font-weight: 400">78,02%</span></p>
</td>
</tr>
<tr>
<td>
<p><span style="font-weight: 400">3</span></p>
</td>
<td>
<p><span style="font-weight: 400">42</span></p>
</td>
<td>
<p><span style="font-weight: 400">IEE</span></p>
</td>
<td>
<p><span style="font-weight: 400">Si</span></p>
</td>
<td>
<p><span style="font-weight: 400">50</span></p>
</td>
<td>
<p><span style="font-weight: 400">1,56</span></p>
</td>
<td>
<p><span style="font-weight: 400">1</span></p>
</td>
<td>
<p><span style="font-weight: 400">90,35%</span></p>
</td>
</tr>
<tr>
<td>
<p><span style="font-weight: 400">4</span></p>
</td>
<td>
<p><span style="font-weight: 400">18</span></p>
</td>
<td>
<p><span style="font-weight: 400">TJMC</span></p>
</td>
<td>
<p><span style="font-weight: 400">Si</span></p>
</td>
<td>
<p><span style="font-weight: 400">6</span></p>
</td>
<td>
<p><span style="font-weight: 400">2,60</span></p>
</td>
<td>
<p><span style="font-weight: 400">2</span></p>
</td>
<td>
<p><span style="font-weight: 400">22,24%</span></p>
</td>
</tr>
<tr>
<td>
<p><span style="font-weight: 400">…</span></p>
</td>
<td>
<p><span style="font-weight: 400">…</span></p>
</td>
<td>
<p><span style="font-weight: 400">…</span></p>
</td>
<td>
<p><span style="font-weight: 400">…</span></p>
</td>
<td>
<p><span style="font-weight: 400">…</span></p>
</td>
<td>
<p><span style="font-weight: 400">…</span></p>
</td>
<td>
<p><span style="font-weight: 400">…</span></p>
</td>
<td>
<p><span style="font-weight: 400">…</span></p>
</td>
</tr>
<tr>
<td>
<p><span style="font-weight: 400">200</span></p>
</td>
<td>
<p><span style="font-weight: 400">24</span></p>
</td>
<td>
<p><span style="font-weight: 400">TMSPL</span></p>
</td>
<td>
<p><span style="font-weight: 400">No</span></p>
</td>
<td>
<p><span style="font-weight: 400">0</span></p>
</td>
<td>
<p><span style="font-weight: 400">4,36</span></p>
</td>
<td>
<p><span style="font-weight: 400">3</span></p>
</td>
<td>
<p><span style="font-weight: 400">5,45%</span></p>
</td>
</tr>
</tbody>
</table>
<p> </p>
<p><span style="font-weight: 400">La clasificación es utilizada en gran cantidad de ámbitos para tareas como reconocimiento de imágenes, reconocimiento de lenguaje, sistemas de recomendación, entre muchos otros.</span></p>
<p><span style="font-weight: 400">También puedes participar del challenge</span><a href="https://aichallenge.utec.edu.uy/uncategorized/ai-applied-2-cybersecurity/"><span style="font-weight: 400"> AIA2C: AI applied 2 Cybersecurity</span></a><span style="font-weight: 400"> donde es necesario clasificar diferentes tipos de eventos en la red.</span></p>]]></content:encoded>
                        <category domain="https://aichallenge.utec.edu.uy/community/machine-learning/">Machine Learning</category>                        <dc:creator>taa.admin</dc:creator>
                        <guid isPermaLink="true">https://aichallenge.utec.edu.uy/community/machine-learning/aprendizaje-supervisado/</guid>
                    </item>
                                        <item>
                        <title>¿Cómo puede una computadora comprender el lenguaje humano?</title>
                        <link>https://aichallenge.utec.edu.uy/community/machine-learning/como-puede-una-computadora-comprender-el-lenguaje-humano/</link>
                        <pubDate>Mon, 09 Nov 2020 15:14:58 +0000</pubDate>
                        <description><![CDATA[El procesamiento del lenguaje natural (NLP, por sus siglas en inglés) es una rama de la inteligencia artificial que ayuda a las computadoras a entender, interpretar y manipular el lenguaje h...]]></description>
                        <content:encoded><![CDATA[<p><span style="font-weight: 400">El procesamiento del lenguaje natural (NLP, por sus siglas en inglés) es una rama de la inteligencia artificial que ayuda a las computadoras a entender, interpretar y manipular el lenguaje humano. Toma elementos prestados de varias disciplinas, incluyendo la ciencia de la computación y la lingüística computacional, en su afán por cerrar la brecha entre la comunicación humana y el entendimiento de las computadoras. </span></p>
<p> </p>
<p><span style="font-weight: 400">Compartimos el link para que puedas conocer más sobre esta rama de IA</span></p>
<p><a href="https://www.sas.com/es_ar/insights/analytics/what-is-natural-language-processing-nlp.html"><span style="font-weight: 400">https://www.sas.com/es_ar/insights/analytics/what-is-natural-language-processing-nlp.html</span></a></p>]]></content:encoded>
                        <category domain="https://aichallenge.utec.edu.uy/community/machine-learning/">Machine Learning</category>                        <dc:creator>taa.admin</dc:creator>
                        <guid isPermaLink="true">https://aichallenge.utec.edu.uy/community/machine-learning/como-puede-una-computadora-comprender-el-lenguaje-humano/</guid>
                    </item>
                                        <item>
                        <title>Categorías de ML</title>
                        <link>https://aichallenge.utec.edu.uy/community/machine-learning/categorias-de-ml/</link>
                        <pubDate>Mon, 09 Nov 2020 15:13:42 +0000</pubDate>
                        <description><![CDATA[Los algoritmos de Machine Learning se dividen en tres categorías:
 

Aprendizaje supervisado: Son algoritmos que cuentan con un aprendizaje previo basado en un sistema de etiquetas asocia...]]></description>
                        <content:encoded><![CDATA[<p><span style="font-weight: 400">Los algoritmos de </span><i><span style="font-weight: 400">Machine Learning</span></i><span style="font-weight: 400"> se dividen en </span><span style="font-weight: 400">tres categorías:</span></p>
<p> </p>
<ul>
<li style="font-weight: 400"><span style="font-weight: 400">Aprendizaje supervisado</span><span style="font-weight: 400">: Son algoritmos que cuentan con un aprendizaje previo basado en un sistema de etiquetas asociadas a datos que les permiten tomar decisiones o hacer predicciones. Un ejemplo es un detector de spam que etiqueta un e-mail como spam o no, dependiendo de los patrones que ha aprendido del histórico de correos (remitente, relación texto/imágenes, palabras clave en el asunto, etc.).</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">Aprendizaje no supervisado</span><span style="font-weight: 400">: A diferencia de los anteriores, estos algoritmos no cuentan con un conocimiento previo, se enfrentan al caos de datos con el objetivo de encontrar patrones que permitan organizarlos de alguna manera. Por ejemplo, en el campo del marketing se utilizan para extraer patrones de datos masivos provenientes de las redes sociales y crear campañas de publicidad altamente segmentadas.</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">Aprendizaje por refuerzo</span><span style="font-weight: 400">: Su objetivo es que un algoritmo aprenda a partir de la propia experiencia. Esto es, que sea capaz de tomar la mejor decisión ante diferentes situaciones de acuerdo a un proceso de prueba y error en el que se recompensan las decisiones correctas. En la actualidad se está utilizando para posibilitar el reconocimiento facial, hacer diagnósticos médicos o clasificar secuencias de ADN.</span></li>
</ul>
<p> </p>
<p><span style="font-weight: 400">Complementá la info ingresando al siguiente link</span></p>
<p><a href="https://www.iberdrola.com/innovacion/machine-learning-aprendizaje-automatico"><span style="font-weight: 400">https://www.iberdrola.com/innovacion/machine-learning-aprendizaje-automatico</span></a></p>]]></content:encoded>
                        <category domain="https://aichallenge.utec.edu.uy/community/machine-learning/">Machine Learning</category>                        <dc:creator>taa.admin</dc:creator>
                        <guid isPermaLink="true">https://aichallenge.utec.edu.uy/community/machine-learning/categorias-de-ml/</guid>
                    </item>
                                                </channel>
        </rss>
        