<?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/">
  <channel>
    <title>Forem: Max Zeballos</title>
    <description>The latest articles on Forem by Max Zeballos (@maxcloud).</description>
    <link>https://forem.com/maxcloud</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F865552%2F54ad8914-3a3f-4135-9a61-dbd92c313592.jpeg</url>
      <title>Forem: Max Zeballos</title>
      <link>https://forem.com/maxcloud</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/maxcloud"/>
    <language>en</language>
    <item>
      <title>Amazon Redshift guia de estudio (Comunidad AWS ML Latam)</title>
      <dc:creator>Max Zeballos</dc:creator>
      <pubDate>Mon, 26 Aug 2024 02:45:08 +0000</pubDate>
      <link>https://forem.com/maxcloud/amazon-redshift-guia-de-estudio-comunidad-aws-ml-latam-50b6</link>
      <guid>https://forem.com/maxcloud/amazon-redshift-guia-de-estudio-comunidad-aws-ml-latam-50b6</guid>
      <description>&lt;h2&gt;
  
  
  Introducción
&lt;/h2&gt;

&lt;p&gt;Bienvenido a la guia de estudio de Amazon Redshift de la comunidad AWS UG ML Latam. Este articulo tiene como objetivo organizar la información del grupo de estudio Data Analytics.&lt;/p&gt;

&lt;h2&gt;
  
  
  Teoría
&lt;/h2&gt;

&lt;p&gt;1 Introducción a Amazon Redshift&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=lWwFJV_9PoE" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=lWwFJV_9PoE&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2 Mejora tu Analítica con Amazon Redshift&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=6Ek4mIutGtA" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=6Ek4mIutGtA&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;3 Amazon Redshift&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=aqlMFAbVvUM" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=aqlMFAbVvUM&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Practica
&lt;/h2&gt;

&lt;p&gt;1 Taller de inmmersion a Redshift&lt;/p&gt;

&lt;p&gt;&lt;a href="https://catalog.us-east-1.prod.workshops.aws/workshops/9f29cdba-66c0-445e-8cbb-28a092cb5ba7/en-US" rel="noopener noreferrer"&gt;https://catalog.us-east-1.prod.workshops.aws/workshops/9f29cdba-66c0-445e-8cbb-28a092cb5ba7/en-US&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2 Taller avanzado de Redshift&lt;/p&gt;

&lt;p&gt;&lt;a href="https://catalog.us-east-1.prod.workshops.aws/workshops/380e0b8a-5d4c-46e3-95a8-82d68cf5789a/en-US/features" rel="noopener noreferrer"&gt;https://catalog.us-east-1.prod.workshops.aws/workshops/380e0b8a-5d4c-46e3-95a8-82d68cf5789a/en-US/features&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Extra
&lt;/h1&gt;

&lt;p&gt;1 Redshift optimizations (Distribution, Sort Keys, compresions)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://community.microstrategy.com/s/article/Amazon-Redshift-Best-Practices-for-Performance?language=en_US#AROpt" rel="noopener noreferrer"&gt;https://community.microstrategy.com/s/article/Amazon-Redshift-Best-Practices-for-Performance?language=en_US#AROpt&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Este blog aun se encuentra en construccion&lt;/p&gt;

</description>
      <category>aws</category>
      <category>español</category>
      <category>redshift</category>
      <category>analytics</category>
    </item>
    <item>
      <title>Guia para pasar el KCNA (Kubernetes and Cloud Native Associate (KCNA))</title>
      <dc:creator>Max Zeballos</dc:creator>
      <pubDate>Wed, 21 Aug 2024 20:49:08 +0000</pubDate>
      <link>https://forem.com/maxcloud/guia-para-pasar-el-kcna-kubernetes-and-cloud-native-associate-kcna-11p3</link>
      <guid>https://forem.com/maxcloud/guia-para-pasar-el-kcna-kubernetes-and-cloud-native-associate-kcna-11p3</guid>
      <description>&lt;h1&gt;
  
  
  Introducción
&lt;/h1&gt;

&lt;p&gt;KCNA es un examen ofrecido por la CNCF (Cloud Native Computing Foundation). Parte de los exámenes requeridos para obtener el titulo de kubestronaut.&lt;/p&gt;

&lt;p&gt;KCNA posee una complejidad baja - media, no es un examen altamente técnico, pero tampoco es un examen de nivel básico, las preguntas tendrán alternativas mediante las cuales debes seleccionar la opción correcta. No deberas escribir código ni colocar algún tipo de comando.&lt;/p&gt;

&lt;h1&gt;
  
  
  ¿Como debo empezar?
&lt;/h1&gt;

&lt;p&gt;1 Revisar la pagina de la certificación:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://training.linuxfoundation.org/certification/kubernetes-cloud-native-associate/" rel="noopener noreferrer"&gt;https://training.linuxfoundation.org/certification/kubernetes-cloud-native-associate/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2 En github se encuentra descrito el contenido del examen:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/cncf/curriculum/blob/master/KCNA_Curriculum.pdf" rel="noopener noreferrer"&gt;https://github.com/cncf/curriculum/blob/master/KCNA_Curriculum.pdf&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Debes tener claro que se te evaluaran los siguiente tópicos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Kubernetes Fundamentals (46%)&lt;/li&gt;
&lt;li&gt;Container Orchestration (22%)&lt;/li&gt;
&lt;li&gt;Cloud Native Architecture (16%)&lt;/li&gt;
&lt;li&gt;Cloud Native Observability (8%)&lt;/li&gt;
&lt;li&gt;Cloud Native Application Delivery (8%)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Punto A) Claramente podemos ver que el casi la mitad del examen hace referencia a conocimientos fundamentales en kubernetes, es decir que saber trabajar con kubernetes es muy importante para poder aprobar el examen, no a un punto avanzado pero si a un punto básico - intermedio.&lt;/p&gt;

&lt;p&gt;Punto B) Respecto a las otras tecnologías CNCF como por ejemplo grafana, gitops, prometheus, etc. No es necesario ser un experto pero si conocer el caso de uso y saber como interactuar con Kubernetes.&lt;/p&gt;

&lt;p&gt;3 Recursos utilizados:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Es muy importante que sepas trabajar con contenedores para poder trabajar con kubernetes, para trabajar con Docker puedes seleccionar cualquier curso de tu preferencia en internet.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Riyaz Sayyad tiene un increíble curso en Udemy, lo lleve y me pareció una muy buena opción para personas que están preparándose para esta certificación (El esta disponible en ingles): &lt;a href="https://www.udemy.com/course/kcna-kubernetes-and-cloud-native-associate/" rel="noopener noreferrer"&gt;https://www.udemy.com/course/kcna-kubernetes-and-cloud-native-associate/&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Nota: Udemy constatemente hace ofertas, algunas veces dejan los cursos a 10 dolares o menos. También existen algunas paginas en internet que ofrecen cupones para udemy. En mi caso en este momento el curso se encuentra a 34 soles peruanos (9 dolares americanos). Te toca buscar o esperar los días que Udemy ofrece las ofertas para poder obtener contenido legal a precios comodos.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Otro curso muy bueno es ofrecido por James Spurin. Cabe resaltar que este curso a sido endorsado por la CNCF, como se muestra debajo del titulo del curso. Significa que la CNCF le ha dado su visto bueno como un material de buena calidad. (Busque comprarlo en oferta)&lt;br&gt;
&lt;a href="https://www.udemy.com/course/dive-into-cloud-native-containers-kubernetes-and-the-kcna/" rel="noopener noreferrer"&gt;https://www.udemy.com/course/dive-into-cloud-native-containers-kubernetes-and-the-kcna/&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;La practica es muy importante para poder estar listo para el examen, te recomiendo realizar el siguiente practice test.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://www.udemy.com/course/kcna-exams/?couponCode=SKILLS4SALEA" rel="noopener noreferrer"&gt;https://www.udemy.com/course/kcna-exams/?couponCode=SKILLS4SALEA&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Puntos finales
&lt;/h1&gt;

&lt;p&gt;Si despues de haber estudiado y entendido los recursos anteriores no te sientes preparado, te recomiendo que busques otros practice test. La practica hace al maestro! Todos aprenden a su propio ritmo!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Minikube en Cloud9: Crea un ambiente de pruebas para Kubernetes</title>
      <dc:creator>Max Zeballos</dc:creator>
      <pubDate>Mon, 20 May 2024 13:03:31 +0000</pubDate>
      <link>https://forem.com/aws-builders/minikube-en-cloud9-crea-un-ambiente-de-pruebas-para-kubernetes-3ej8</link>
      <guid>https://forem.com/aws-builders/minikube-en-cloud9-crea-un-ambiente-de-pruebas-para-kubernetes-3ej8</guid>
      <description>&lt;h2&gt;
  
  
  Introducción
&lt;/h2&gt;

&lt;p&gt;Cuando empiezas a aprender una nueva tecnología, es de mucha ayuda poder configurar ambientes de pruebas rápidamente, esto te permite realizar tus pruebas de concepto de manera ágil.&lt;/p&gt;

&lt;p&gt;Kubernetes es la herramienta mas adoptada en la orquestación de contenedores. Por otro lado Cloud9 es el IDE en linea de AWS. Nosotros podemos realizar rápidamente nuestras pruebas de concepto de Kubernetes en cloud9 con Minikube. &lt;/p&gt;

&lt;p&gt;En este artículo te enseñare como levantar un ambiente de pruebas con Minikube y Cloud9 para poder desplegar tu primer pod en Kubernetes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Configuración del ambiente
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1 Creación del ambiente en Cloud9
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Vamos a ingresar a nuestra cuenta de AWS y nos vamos a dirigir al servicio de Cloud9 y le daremos click en "Create Environment" como se muestra en la siguiente imagen&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F56quru149g442c2oh5wn.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F56quru149g442c2oh5wn.jpg" alt="Cloud9 principal" width="800" height="394"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Colocaremos la siguiente información&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Name: Minikube-environment&lt;br&gt;
Environment-type: New EC2 instance&lt;br&gt;
Instance type: t3.small&lt;br&gt;
Platform: Ubuntu Server 22.04 LTS&lt;/p&gt;

&lt;p&gt;A continuación le daremos click en "Create"&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhoelikgyoyl2nohj84r3.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhoelikgyoyl2nohj84r3.jpg" alt="creacion cloud9" width="800" height="841"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwbdmv70swsxgq9ha1hb4.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwbdmv70swsxgq9ha1hb4.jpg" alt="creacion cloud9" width="800" height="841"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;En la lista de ambientes aparecera el ambiente creado por nosotros.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxk9alx7y0pgus3woaxw0.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxk9alx7y0pgus3woaxw0.jpg" alt="cloud9 lista" width="683" height="362"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Le damos click en open y se nos abrirá nuestro ambiente en una nueva pestaña en el navegador.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1st91fbuuw7dwazijvgk.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1st91fbuuw7dwazijvgk.jpg" alt="ambiente cloud9" width="800" height="398"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  2 Incrementar las capacidades de disco de nuestro ambiente
&lt;/h3&gt;

&lt;p&gt;Vamos a ubicar la instancia EC2 donde esta nuestro ambiente de Cloud9, para ello buscamos la instancia que contiene el nombre de nuestro ambiente.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2kbq1twuvowblqu1s8ft.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2kbq1twuvowblqu1s8ft.jpg" alt="EC2 cloud9" width="800" height="398"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Le damos check a la instancia, nos dirigimos a la pestaña "storage" y le damos click donde en el id del volumen&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmia7nxyuclfff6flxqbi.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmia7nxyuclfff6flxqbi.jpg" alt="ebs" width="800" height="398"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Luego, le damos click en "Modify volume"&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs91rnz9c98spvcp0d72y.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs91rnz9c98spvcp0d72y.jpg" alt="ebs2" width="800" height="227"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;El valor actual debe ser 10 y lo cambiaremos por 30, luego le damos click en "Modify"&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg885y505x9xwnlt7erzg.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg885y505x9xwnlt7erzg.jpg" alt="ebs-modify" width="800" height="694"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ahora regresamos a nuestro ambiente de Cloud9 y vamos a incrementar el tamaño del sistema de archivos con los siguientes comandos&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo growpart /dev/nvme0n1 1
sudo resize2fs /dev/nvme0n1p1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8dqcpomcin2d1eq6izzm.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8dqcpomcin2d1eq6izzm.jpg" alt="shell" width="526" height="246"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ahora nuestro sistema de archivos pasara de 10G a 30G.&lt;/p&gt;

&lt;h3&gt;
  
  
  3 Instalación de las herramientas necesarias
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Lanzaremos los siguientes comandos para instalar kubectl
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
kubectl version --client
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fni7ghks8k87nxvnb7ycn.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fni7ghks8k87nxvnb7ycn.jpg" alt="kubectl" width="800" height="190"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Lanzaremos los siguientes comandos para instalar Minikube
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnifn9uqbkm26gzrhx9rg.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnifn9uqbkm26gzrhx9rg.jpg" alt="Minikube" width="800" height="190"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Lanzando nuestro primer pod
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Vamos a iniciar nuestro ambiente en Minikube con el siguiente comando
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;minikube start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe6wbt6foy2is4hb4vw5z.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe6wbt6foy2is4hb4vw5z.jpg" alt="minikube start" width="800" height="353"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Lanzaremos nuestro primer pod en minikube
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl run my-first-pod --image=nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Vamos a verificar que nuestro pod se encuentre "running"
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl get pods
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzm5whvt0wmfhgmqwo973.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzm5whvt0wmfhgmqwo973.jpg" alt="create pod" width="800" height="353"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Finalmente podemos detener la ejecución de nuestro ambiente en minikube
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;minikube stop
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1t6kqfgor4378usk2ujj.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1t6kqfgor4378usk2ujj.jpg" alt="minikube stop" width="800" height="353"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Eliminando nuestro ambiente de cloud9
&lt;/h3&gt;

&lt;p&gt;Para eliminar el ambiente vamos al servicio de cloud9, seleccionamos nuestro ambiente y le damos click en "Delete"&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwao21lm0o0ic69ksqis0.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwao21lm0o0ic69ksqis0.jpg" alt="Cloud9 delete" width="800" height="195"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Aclaraciones
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;El tamaño de instancia mínimo para correr minikube es t3.small, de colocar una instancia con menor cantidad de vCPUs tendrás el siguiente error&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmn9bego57aystju3dpfy.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmn9bego57aystju3dpfy.jpg" alt="Error 1" width="800" height="84"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;El tamaño de disco con el que se crea un ambiente de Cloud9 son 10 Gigas, si no incrementas el tamaño del disco tendrás el siguiente error&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1wntzuljobgouqltpyev.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1wntzuljobgouqltpyev.jpg" alt="Error 2" width="800" height="333"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;La instancia t3.small no pertenece a la capa gratuita de AWS. El precio en Oregon (us-west-2) es de $0.0208 la hora, es decir en 8 horas de pruebas habremos gastado la suma de $0.1664 ($0.0208 x 8h). Es un precio bastante bajo y razonable. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;En caso necesites hacer pruebas con muchos contenedores ejecutándose a la vez, te recomiendo lanzar una instancia con una mayor cantidad de vCPUs, que cuente con los recursos suficientes para lanzar todos los contenedores que necesites&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>kubernetes</category>
      <category>aws</category>
      <category>español</category>
      <category>contenedores</category>
    </item>
    <item>
      <title>Modelos sobreajustados (overfitting), desajustados (underfitting) y generalizados</title>
      <dc:creator>Max Zeballos</dc:creator>
      <pubDate>Thu, 29 Sep 2022 14:11:28 +0000</pubDate>
      <link>https://forem.com/awsmllatam/modelos-sobreajustados-overfitting-desajustados-underfitting-y-generalizados-k64</link>
      <guid>https://forem.com/awsmllatam/modelos-sobreajustados-overfitting-desajustados-underfitting-y-generalizados-k64</guid>
      <description>&lt;h2&gt;
  
  
  Motivación
&lt;/h2&gt;

&lt;p&gt;El objetivo principal de un modelo es lograr el resultado correcto para la mayor cantidad de datos nuevos. En el presente post se pretende explicar algunos detalles a tener en cuenta para lograrlo&lt;/p&gt;

&lt;h2&gt;
  
  
  Introducción
&lt;/h2&gt;

&lt;p&gt;Despues que un modelo a sido entrenado, se desea que pueda predecir la mejor respuesta para la mayor cantidad de datos. Lograr este resultado puede ser complicado dependiendo del conjunto de datos que utilicemos para entrenar el modelo.&lt;/p&gt;

&lt;h2&gt;
  
  
  Modelo desajustado (underfitting)
&lt;/h2&gt;

&lt;p&gt;Un modelo se encuentra desajustado cuando es demasiado simple y no se puede adaptar a la complejidad del conjunto de datos de entrenamiento.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbwrcgb7irc80y2qg7759.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbwrcgb7irc80y2qg7759.png" alt="Underfitting" width="748" height="535"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Para resolver el problema podemos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Incrementar la complejidad del modelo&lt;/li&gt;
&lt;li&gt;Entrenar el modelo por un periodo mas largo de tiempo, (incrementar las épocas) para reducir el error&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Modelo sobreajustado (overfitting)
&lt;/h2&gt;

&lt;p&gt;Un modelo se encuentra sobreajustado cuando memoriza detalles específicos de la data de entrenamiento y no logra generalizar sus predicciones.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcx7sfo1qlb1b06cylg11.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcx7sfo1qlb1b06cylg11.png" alt="Overfitting" width="748" height="535"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Los modelos sobreajustados funcionan bien con el conjunto de datos de entrenamiento, pero falla con datos nuevos (datos de prueba)&lt;/p&gt;

&lt;h2&gt;
  
  
  Generalizado
&lt;/h2&gt;

&lt;p&gt;Un modelo que realiza buenas predicciones durante el entrenamiento y las pruebas (conjuntos de datos que no ha visto antes) es considerado un buen modelo.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4e03nd1k8dax6ytmncbi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4e03nd1k8dax6ytmncbi.png" alt="Generalized" width="748" height="535"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;El objetivo es lograr modelos generalizados.&lt;/p&gt;

&lt;h2&gt;
  
  
  ¿Como prevenir el sobreajustamiento (overfitting)?
&lt;/h2&gt;

&lt;p&gt;1.- Realizar para temprana (early stopping)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Deje de entrenar el modelo cuando observe que la pérdida de validación (validation loss) aumenta mientras que la pérdida de entrenamiento (training loss) disminuye. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;2.- Hacer regularizacion&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;La regularización mejora la capacidad de generalización del modelo. Por ejemplo utilizar Regularizacion L1 (Lasso regression) o Regularizacion L2 (Ridge regression).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;3.- Agregar mas conjuntos de datos&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Si incrementa el conjunto de datos de entreamiento el modelo podria generalizar mejor&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;4.- Realizar seleccion de caracteristicas&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Eliminar las caracteristicas de poco interes podria mejorar la capacidad de generalizacion del modelo&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;5.- Utilizar boosting y bagging (ensemble learning)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Al combinar la votación de muchos modelos diferentes a través de bagging y boosting, mejorará la generalización del modelo.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;6.- Agregar mas ruido&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Agregar ruido podría permitir que el modelo generalice mejor&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;7.- Usar la tecnica de expulsion (dropout technique)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;En el entrenamiento de redes neuronales artificiales, la eliminación de algunas neuronas mediante la técnica Dropout mejora la capacidad de generalización de las redes.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusión
&lt;/h2&gt;

&lt;p&gt;La generalización es la característica mas importante a lograr en nuestro modelo, para lograrlo también es muy importante la cantidad y calidad de nuestros.&lt;/p&gt;

</description>
      <category>machinelearning</category>
      <category>spanish</category>
      <category>ai</category>
      <category>datascience</category>
    </item>
    <item>
      <title>Evaluación de rendimiento de un modelo de machine learning</title>
      <dc:creator>Max Zeballos</dc:creator>
      <pubDate>Fri, 08 Jul 2022 17:06:06 +0000</pubDate>
      <link>https://forem.com/awsmllatam/evaluacion-de-rendimiento-de-un-modelo-de-machine-learning-53pb</link>
      <guid>https://forem.com/awsmllatam/evaluacion-de-rendimiento-de-un-modelo-de-machine-learning-53pb</guid>
      <description>&lt;h2&gt;
  
  
  Motivación
&lt;/h2&gt;

&lt;p&gt;Es importante evaluar un modelo para determinar el rendimiento de sus predicciones en nuevos datos. Dado que las futuras predicciones retornaran un valor aun desconocido, se debe evaluar con métricas el rendimiento de un modelo en un conjunto de datos de los cuales conocemos la respuesta. Utilizaremos esta evaluación de rendimiento para decidir si el modelo es enviado o no a un ambiente de producción.&lt;/p&gt;

&lt;h2&gt;
  
  
  Introducción
&lt;/h2&gt;

&lt;p&gt;Una herramienta muy útil para realizar la evaluación de rendimiento de un modelo es la matris de confusión, que presentare a continuación.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foye2m19qn48kds4vx0xv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foye2m19qn48kds4vx0xv.png" alt="Matris de confuncion"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ahora vamos describir el significado de cada cuadrante dentro de la matris:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;True positives (TP)&lt;/em&gt;&lt;/strong&gt;: Es el caso en el que el clasificador predijo verdadero y es la respuesta correcta (Por ejemplo predecir que un paciente tiene una enfermedad)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;True negatives (TN)&lt;/em&gt;:&lt;/strong&gt; Es el caso en el que el clasificador predijo falso y es la respuesta correcta (Por ejemplo predecir que un paciente no tiene una enfermedad)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;False positives (FP) (Type I error)&lt;/em&gt;:&lt;/strong&gt; Es el caso en el que el clasificador predijo verdadero, pero no es la respuesta correcta (El paciente no tiene la enfermedad)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;False negatives (FN) (Type II error)&lt;/em&gt;:&lt;/strong&gt; Es el caso en el que el clasificador predijo como falso, pero no es la respuesta correcta (El paciente tiene la enfermedad)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;En los casos revisados con anterioridad el error Tipo II es el mas grave. El paciente puede creer que esta sano cuando realmente no lo esta y no tomara ninguna acción respectiva. En el caso del error Tipo I el paciente se someterá a mas exámenes y descubrirá que la predicción del modelo fue un error y que realmente esta sano.&lt;/p&gt;

&lt;h2&gt;
  
  
  Indicadores clave de rendimiento (KPI)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Exactitud (&lt;em&gt;Accuracy&lt;/em&gt;):&lt;/strong&gt; (TP + TN) / (TP + TN + FP + FN)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Taza de error (&lt;em&gt;Misclassification rate&lt;/em&gt;):&lt;/strong&gt;  (FP + FN) / (TP + TN + FP + FN)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Precisión:&lt;/strong&gt; TP/ (TP+FP) (Cuando el modelo predice Verdadero, ¿Con que frecuencia lo hace bien?)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Exhaustividad (&lt;em&gt;Recall&lt;/em&gt;):&lt;/strong&gt; TP/ (TP+FN) (Cuando la predicción fue realmente verdadera ¿Con que frecuencia el clasificador acertó? )&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Precisión vs Exhaustividad (&lt;em&gt;Recall&lt;/em&gt;):
&lt;/h2&gt;

&lt;p&gt;Ahora vamos a ver un ejemplo para entender el objetivo de precisión y exhaustividad:&lt;/p&gt;

&lt;p&gt;Información del dataset a evaluar:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;100 es el total de pacientes&lt;/li&gt;
&lt;li&gt;91 pacientes están sanos&lt;/li&gt;
&lt;li&gt;9 pacientes tienen cáncer&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Despues de entrenar nuestro modelo y hacer predicciones con el dataset de prueba, construimos la siguiente matris de confusión.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg9q1dfr8o997haci702u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg9q1dfr8o997haci702u.png" alt="Presicion vs Recall"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Esto significa que:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;TP: El modelo predijo correctamente que 1 persona esta enferma&lt;/li&gt;
&lt;li&gt;TN: El modelo predijo correctamente que 90 personas no están enfermas&lt;/li&gt;
&lt;li&gt;FP: El modelo predijo incorrectamente que 1 persona esta enferma&lt;/li&gt;
&lt;li&gt;FN: El modelo predijo incorrectamente que 8 personas están sanas&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ahora vamos a calcular las métricas:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Exactitud = (TP+TN) / (TP + TN + FP + FN) = (1 + 90) / (1 + 1 + 8 + 90 ) = 0.91 -&amp;gt; 91%&lt;/li&gt;
&lt;li&gt;Presicion = TP / (TP + FP) = 1 / (1 + 1) = 0.5 -&amp;gt; 50%&lt;/li&gt;
&lt;li&gt;Exhaustividad = = TP / (TP + FN) = 1 / (1 + 8) = 1/9 -&amp;gt; 11%&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;De las métricas de rendimiento extraemos que:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;La exactitud es generalmente engañosa y no es suficiente para
evaluar el rendimiento de un clasificador.&lt;/li&gt;
&lt;li&gt;La exhaustividad (&lt;em&gt;recall&lt;/em&gt;) es un KPI importante en situaciones en las que:

&lt;ul&gt;
&lt;li&gt;El conjunto de datos está muy desequilibrado; casos en los que los  pacientes con cáncer son mucho menor a comparación con los pacientes sanos.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  Precisión
&lt;/h2&gt;

&lt;p&gt;En el ejemplo tenemos: TP / (TP + FP) = 1 / (1 + 1) = 50%&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;La precisión es una medida de Positivos Correctos, en el ejemplo, el modelo predijo que dos pacientes eran positivos
(tiene cáncer), pero sólo uno de los dos era correcto.&lt;/li&gt;
&lt;li&gt;La precisión es una métrica importante cuando los falsos positivos son importantes (cuántas veces un modelo dice que hay algo cuando realmente no hay nada alli)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Exhaustividad (&lt;em&gt;Recall&lt;/em&gt;)
&lt;/h2&gt;

&lt;p&gt;En el ejemplo tenemos: TP / (TP + FN) = 1 / (1 + 8) = 11%&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;La exhaustividad también se denomina tasa de verdaderos positivos o sensibilidad.&lt;/li&gt;
&lt;li&gt;En este ejemplo, se tuvo 9 pacientes con cáncer pero el modelo solo detectó 1 de ellos&lt;/li&gt;
&lt;li&gt;Esta métrica es importante cuando nos preocupamos por los falsos negativos&lt;/li&gt;
&lt;li&gt;Otro buen ejemplo del uso de la métrica seria la detección de fraudes&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  F1 SCORE
&lt;/h2&gt;

&lt;p&gt;F1 Score = (2 * (presicion * recall) ) / (presicion + recall)&lt;/p&gt;

&lt;p&gt;o también&lt;/p&gt;

&lt;p&gt;F1 Score = (2 * TP) / (2 * TP + FP + FN)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;F1 Score&lt;/em&gt; es una medida general de la precisión de un modelo que combina precisión y exhaustividad(&lt;em&gt;recall&lt;/em&gt;). Es la media armónica de precisión y exhaustividad.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;¿Cuál es la diferencia entre F1 Score y exactitud?&lt;/p&gt;

&lt;p&gt;En conjuntos de datos desequilibrados, si tenemos una gran cantidad de verdaderos negativos (pacientes sanos), la exactitud podría ser engañosa. Por lo tanto, la puntuación F1 podría ser un mejor KPI para usar, ya que proporciona un equilibrio entre exhaustividad (&lt;em&gt;Recall&lt;/em&gt;) y precisión en presencia de conjuntos de datos desequilibrados.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusión
&lt;/h2&gt;

&lt;p&gt;Todas estas métricas de rendimientos nos ayudaran a determinar que tan bueno es el trabajo de nuestro modelo. Es importante entender los resultados del modelo para saber si podemos enviarlo a un ambiente productivo o iterar con un nuevo conjunto de datos o usar otro algoritmo de entrenamiento.&lt;/p&gt;

</description>
      <category>machinelearning</category>
      <category>spanish</category>
      <category>ai</category>
      <category>datascience</category>
    </item>
    <item>
      <title>Acelera tu carrera en AWS</title>
      <dc:creator>Max Zeballos</dc:creator>
      <pubDate>Wed, 06 Jul 2022 19:27:35 +0000</pubDate>
      <link>https://forem.com/awsmllatam/acelera-tu-carrera-en-aws-54b7</link>
      <guid>https://forem.com/awsmllatam/acelera-tu-carrera-en-aws-54b7</guid>
      <description>&lt;h2&gt;
  
  
  Motivación
&lt;/h2&gt;

&lt;p&gt;Las oportunidades para trabajar en &lt;em&gt;cloud computing&lt;/em&gt; son cada vez mayores, así como rentables. Las ofertas laborales se ven incrementadas día a día y en muchos países no se puede cubrir las vacantes disponibles. En este post te voy a compartir algunos recursos para empezar tu carrera sobre AWS y llevarla al siguiente nivel.&lt;/p&gt;

&lt;h2&gt;
  
  
  Introducción
&lt;/h2&gt;

&lt;p&gt;Actualmente AWS es la empresa mas grande en cloud computing, posee la mayor cantidad de servicios a comparacion de otros proveedores de nube, esto permite resolver una amplia gama de problemas de manera sencilla y rápida.&lt;/p&gt;

&lt;p&gt;En AWS existen varias certificaciones que se alinean a diferentes lineas de carrera dentro de la industria. Teniendo las siguientes certificaciones:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cloud Practitioner (Nivel: FOUNDATIONAL)&lt;/li&gt;
&lt;li&gt;Solution architect (Nivel: ASSOCIATE)&lt;/li&gt;
&lt;li&gt;Developer (Nivel: ASSOCIATE)&lt;/li&gt;
&lt;li&gt;Sysops administrator (Nivel: ASSOCIATE)&lt;/li&gt;
&lt;li&gt;Solution architect (Nivel: PROFESSIONAL)&lt;/li&gt;
&lt;li&gt;DevOps engineer (Nivel: PROFESSIONAL)&lt;/li&gt;
&lt;li&gt;Advanced networking (Nivel: SPECIALTY)&lt;/li&gt;
&lt;li&gt;Data analytics (Nivel: SPECIALTY)&lt;/li&gt;
&lt;li&gt;Database (Nivel: SPECIALTY)&lt;/li&gt;
&lt;li&gt;Machine Learning (Nivel: SPECIALTY)&lt;/li&gt;
&lt;li&gt;Security (Nivel: SPECIALTY)&lt;/li&gt;
&lt;li&gt;Sap on AWS (Nivel: SPECIALTY)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Empieza tu camino
&lt;/h2&gt;

&lt;p&gt;La mejor forma de trabajar tu crecimiento profesional es fijarte en metas a corto y largo plazo que estén relacionadas. Supongamos que deseas convertirte en un experto en bases de datos, entonces podrías fijarte los siguientes objetivos a corto y largo plazo:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Experto en SQL (20 días de estudio) 

&lt;ul&gt;
&lt;li&gt;Aprender a realizar consultas SQL (5 días)&lt;/li&gt;
&lt;li&gt;Realizar diagramas de diseño de bases de datos (5 días)&lt;/li&gt;
&lt;li&gt;Trabajar con vistas materializadas, triggers y funciones (5 días)&lt;/li&gt;
&lt;li&gt;Aprender a administrar usuarios, roles y accesos (5 días)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Experto en RDS (20 días de estudio)

&lt;ul&gt;
&lt;li&gt;Trabajar con RDS Postgres (crear cluster, alta disponibilidad, replicas de lectura, respaldos, etc) (5 días)&lt;/li&gt;
&lt;li&gt;Trabajar con RDS Mysql (crear cluster, alta disponibilidad, replicas de lectura, respaldos, etc) (5 días)&lt;/li&gt;
&lt;li&gt;Trabajar con Aurora Postgres y Aurora Mysql (10 días)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Experto en NoSQL (MongoDB) 

&lt;ul&gt;
&lt;li&gt;Aprender a realizar consultas&lt;/li&gt;
&lt;li&gt;Diseño de tablas&lt;/li&gt;
&lt;li&gt;Administración de cluster DocumentDB&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Experto en NoSQL (DocumentDB) (20 días)

&lt;ul&gt;
&lt;li&gt;...&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Experto en bases de datos columnares (Redshift) (20 días)

&lt;ul&gt;
&lt;li&gt;...&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Los puntos 1, 2, 3, 4, 5 son objetivos a largo plazo y cada uno de sus items es un objetivo a corto plazo, cada objetivo a corto plazo te ayuda a lograr tu objetivo a largo plazo y al haber terminado tu plan habrás logrado convertirte en un experto en bases de datos. Esta es una forma sencilla de trabajar una meta, existen metodologías mas detalladas para trabajar con objetivos  por ejemplo la técnica SMART.&lt;/p&gt;

&lt;p&gt;Ahora que ha quedado claro la importancia de empezar a trabajar con objetivos, podríamos empezar a trazarnos metas como por ejemplo obtener tu primera certificación en AWS. Si desear convertirte en un experto en Devops, podríamos tener el siguiente plan:&lt;/p&gt;

&lt;p&gt;1 Obtener la certificación &lt;em&gt;AWS Cloud Practitioner&lt;/em&gt;&lt;br&gt;
2 Obtener la certificación &lt;em&gt;AWS Developer Associate&lt;/em&gt;&lt;br&gt;
3 Obtener la certificación &lt;em&gt;AWS DevOps Profesional&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;No es necesario tener certificaciones para ser un experto como DevOps en AWS, pero en el camino de preparación para una certificación te vas a encontrar muchos retos que estaras obligado a superar para lograr el objetivo establecido, te enfocaras en ese objetivo y esto hará que tu dominio sobre la plataforma se vea incrementado.&lt;/p&gt;

&lt;h2&gt;
  
  
  Recursos utiles
&lt;/h2&gt;

&lt;p&gt;Actualmente hay muchos recursos gratuitos y con precios bajos en internet. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Stephane Maarek ha creado varios cursos en Udemy para lograr diferentes certificaciones en AWS y las ofrece a un bajo precio. &lt;a href="https://www.udemy.com/user/stephane-maarek/"&gt;Ver aquí&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Los &lt;em&gt;AWS Workshops&lt;/em&gt; son varios talleres que ayudan a entender el uso de los diferentes servicios de AWS. &lt;a href="https://workshops.aws/"&gt;Ver aquí&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AWS también tiene una serie de blogs que son escritos y revisados por expertos. &lt;a href="https://aws.amazon.com/blogs/"&gt;Ver aquí&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Si quieres enterarte de las novedades lanzadas día a día en AWS te recomiendo revisar el apartado de &lt;em&gt;news&lt;/em&gt;. &lt;a href="https://aws.amazon.com/new/"&gt;Ver aquí&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Los &lt;em&gt;AWS Community builder&lt;/em&gt; son personas que han postulado a este programa en AWS y han sido aceptados, ellos contribuyen difundiendo material sobre AWS y los puedes encontrar en dev.to.  &lt;a href="https://dev.to/aws-builders"&gt;Ver aquí&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;AWS Heroe&lt;/em&gt; es el titulo que AWS otorga a personas resaltantes en la comunidad por sus aportes, en dev.to existe una comunidad donde escriben posts constantemente. &lt;a href="https://dev.to/aws-heroes"&gt;Ver aquí&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusión
&lt;/h2&gt;

&lt;p&gt;Si llegaste hasta aquí es por que tienes la motivación, empieza a crear tus objetivos a corto y largo plaza y divertirte aprendiendo. Éxitos!&lt;/p&gt;

</description>
      <category>aws</category>
      <category>productivity</category>
      <category>cloudskills</category>
      <category>spanish</category>
    </item>
    <item>
      <title>Amazon Comprehend: Guía rápida</title>
      <dc:creator>Max Zeballos</dc:creator>
      <pubDate>Wed, 06 Jul 2022 16:43:54 +0000</pubDate>
      <link>https://forem.com/awsmllatam/amazon-comprehend-guia-rapida-j38</link>
      <guid>https://forem.com/awsmllatam/amazon-comprehend-guia-rapida-j38</guid>
      <description>&lt;h2&gt;
  
  
  Motivación
&lt;/h2&gt;

&lt;p&gt;En la actualidad las aplicaciones necesitan una mayor velocidad de desarrollo. La inclusión de funcionalidades que implican el uso de machine learning se ha vuelto cada vez mayor.&lt;/p&gt;

&lt;p&gt;Amazon Web Services a desarrollado un conjunto de servicios que te permiten rápidamente agregar características de machine learning a tus aplicaciones.&lt;/p&gt;

&lt;p&gt;Amazon Comprehend es un servicio de procesamiento de lenguaje natural (NLP) que utiliza machine learning para extraer información de datos en formato de texto.&lt;/p&gt;

&lt;h2&gt;
  
  
  Introducción
&lt;/h2&gt;

&lt;p&gt;Amazon Comprehend provee de un conjunto de APIs con las que podemos interactuar y obtener resultados sobre el análisis de textos. Estas APIs retornan como respuesta la inferencia que realiza sobre los datos que le enviamos a modelos entrenados por los expertos que trabajan en AWS.&lt;/p&gt;

&lt;h2&gt;
  
  
  Características
&lt;/h2&gt;

&lt;p&gt;En esta sección vamos a revisar las capacidades del servicio y su uso a través de Python. Para los siguientes ejemplos utilizaremos el siguiente texto:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sample_text = '''
Hello Zhang Wei. Your AnyCompany Financial Services, LLC credit card account 1111-0000-1111-0000 has a minimum payment of $24.53 that is due by July 31st. Based on your autopay settings, we will withdraw your payment on the due date from your bank account XXXXXX1111 with the routing number XXXXX0000. 
Your latest statement was mailed to 100 Main Street, Anytown, WA 98121. 
After your payment is received, you will receive a confirmation text message at 206-555-0100. 
If you have questions about your bill, AnyCompany Customer Service is available by phone at 206-555-0199 or email at support@anycompany.com.
'''
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  1 Detección del idioma dominante
&lt;/h2&gt;

&lt;p&gt;Con esta API podemos examinar el texto y determinar el idioma dominante, debido a que un texto puede contener palabras o frases en diferentes idiomas. A continuación presentare el código en Python&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;comprehend = boto3.client('comprehend')

detected_language = comprehend.detect_dominant_language(
   Text=sample_text
)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;En la variable &lt;em&gt;detected_language&lt;/em&gt; tendremos la respuesta a la API, si imprimíos el contenido de la variable veremos el siguiente resultado:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
    "Languages": [
        {
            "LanguageCode": "en",
            "Score": 0.9913273453712463
        }
    ],
    "ResponseMetadata": {
        "HTTPHeaders": {
            "content-length": "64",
            "content-type": "application/x-amz-json-1.1",
            "date": "Wed, 06 Jul 2022 03:38:30 GMT",
            "x-amzn-requestid": "38e68cdc-c3a3-4b1c-897d-c86f9c5f0f63"
        },
        "HTTPStatusCode": 200,
        "RequestId": "38e68cdc-c3a3-4b1c-897d-c86f9c5f0f63",
        "RetryAttempts": 0
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Observamos que el lenguaje detectado fue ingles(en) con un puntaje de 99.1%&lt;/p&gt;

&lt;h2&gt;
  
  
  2 Detección de entidades
&lt;/h2&gt;

&lt;p&gt;Con la API de detección de entidades podemos extraer los siguientes tipos de entidades:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tipo&lt;/th&gt;
&lt;th&gt;Descripción&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;COMMERCIAL_ITEM&lt;/td&gt;
&lt;td&gt;Un producto de marca&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FECHA&lt;/td&gt;
&lt;td&gt;Una fecha completa (por ejemplo, 25/11/2017), día (martes), mes (mayo) u hora (8:30 a.m.).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;EVENT&lt;/td&gt;
&lt;td&gt;Un evento, como un festival, un concierto, una elección, etc.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LOCATION&lt;/td&gt;
&lt;td&gt;Una ubicación específica, como un país, una ciudad, un lago, un edificio, etc.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ORGANIZACIÓN&lt;/td&gt;
&lt;td&gt;Organizaciones grandes, como un gobierno, una empresa, una religión, un equipo deportivo, etc.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OTHER&lt;/td&gt;
&lt;td&gt;Entidades que no encajan en ninguna de las otra categorías.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PERSON&lt;/td&gt;
&lt;td&gt;Individuos, grupos de personas, apodos, personajes ficticios.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;QUANTITY&lt;/td&gt;
&lt;td&gt;Importe cuantificado, como moneda, porcentajes, números, bytes, etc.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;TITLE&lt;/td&gt;
&lt;td&gt;Nombre oficial dado a cualquier creación o obra creativa, como películas, libros, canciones, etc.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Ahora vamos a revisar el código en python&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;comprehend = boto3.client('comprehend')

detected_entities = comprehend.detect_entities(
   Text=sample_text,
   LanguageCode='en'
)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;En la variable &lt;em&gt;detected_entities&lt;/em&gt; tenemos la respuesta de la API si revisamos el contenido de la variable tendremos el siguiente contenido:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
    "Entities": [
        {
            "BeginOffset": 7,
            "EndOffset": 16,
            "Score": 0.9993807077407837,
            "Text": "Zhang Wei",
            "Type": "PERSON"
        },
        {
            "BeginOffset": 23,
            "EndOffset": 57,
            "Score": 0.9996546506881714,
            "Text": "AnyCompany Financial Services, LLC",
            "Type": "ORGANIZATION"
        },
        {
            "BeginOffset": 78,
            "EndOffset": 97,
            "Score": 0.9905166029930115,
            "Text": "1111-0000-1111-0000",
            "Type": "OTHER"
        },
        ...
    ],
    "ResponseMetadata": {
        "HTTPHeaders": {
            "content-length": "1276",
            "content-type": "application/x-amz-json-1.1",
            "date": "Wed, 06 Jul 2022 03:14:41 GMT",
            "x-amzn-requestid": "0c7eefa0-c332-4f82-a93c-ab18cd47a15f"
        },
        "HTTPStatusCode": 200,
        "RequestId": "0c7eefa0-c332-4f82-a93c-ab18cd47a15f",
        "RetryAttempts": 0
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Dentro de &lt;em&gt;Entities&lt;/em&gt; tenemos cada una de las entidades detectadas. Cada entidad tiene los siguientes atributos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;BeginOffset: Posición donde inicia la palabra en el texto&lt;/li&gt;
&lt;li&gt;EndOffset: Posición donde termina la palabra en el texto&lt;/li&gt;
&lt;li&gt;Score: Puntaje de certeza de detección de entidad&lt;/li&gt;
&lt;li&gt;Text: El nombre de la entidad&lt;/li&gt;
&lt;li&gt;Type: El tipo de entidad&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  3 Deteccion de frases clave
&lt;/h2&gt;

&lt;p&gt;Puedes utilizar esta API para buscar frases clave en el documento. Por lo general, consiste en un sustantivo y los modificadores que lo distinguen. Por ejemplo, "día" es un sustantivo; "un día hermoso" es una frase sustantiva que incluye un artículo ("un") y un adjetivo ("hermoso").&lt;/p&gt;

&lt;p&gt;A continuación revisaremos el código en python&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;comprehend = boto3.client('comprehend')

detected_key_phrases = comprehend.detect_key_phrases(
   Text=sample_text, 
   LanguageCode='en'
)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Revisando la variable &lt;em&gt;detected_key_phrases&lt;/em&gt; tendremos la siguiente respuesta:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
    "KeyPhrases": [
        {
            "BeginOffset": 1,
            "EndOffset": 16,
            "Score": 0.8426344990730286,
            "Text": "Hello Zhang Wei"
        },
        {
            "BeginOffset": 18,
            "EndOffset": 52,
            "Score": 0.9881375432014465,
            "Text": "Your AnyCompany Financial Services"
        },
        {
            "BeginOffset": 54,
            "EndOffset": 97,
            "Score": 0.8444651961326599,
            "Text": "LLC credit card account 1111-0000-1111-0000"
        },
        {
            "BeginOffset": 102,
            "EndOffset": 119,
            "Score": 0.9999476075172424,
            "Text": "a minimum payment"
        },
        ...
    ],
    "ResponseMetadata": {
        "HTTPHeaders": {
            "content-length": "2096",
            "content-type": "application/x-amz-json-1.1",
            "date": "Wed, 06 Jul 2022 04:19:43 GMT",
            "x-amzn-requestid": "d772098b-c82d-49b8-b4fe-029ac108b375"
        },
        "HTTPStatusCode": 200,
        "RequestId": "d772098b-c82d-49b8-b4fe-029ac108b375",
        "RetryAttempts": 0
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Como se observa en la respuesta, la API nos retorna todas las frases clave.&lt;/p&gt;

&lt;h2&gt;
  
  
  4 Determinar el sentimiento
&lt;/h2&gt;

&lt;p&gt;Con esta API podemos determinar si el sentimiento es positivo, negativo, neutral o mixto. Por ejemplo, se puede utilizar el análisis de sentimientos para analizar los comentarios en un blog y saber si a los lectores les gusto la publicación.&lt;/p&gt;

&lt;p&gt;Ahora revisaremos el código en python&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;comprehend = boto3.client('comprehend')

detected_sentiment = comprehend.detect_sentiment(
   Text=sample_text, 
   LanguageCode='en'
)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Si revelamos el contenido de la variable &lt;em&gt;detected_sentiment&lt;/em&gt; tendremos:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
    "ResponseMetadata": {
        "HTTPHeaders": {
            "content-length": "163",
            "content-type": "application/x-amz-json-1.1",
            "date": "Wed, 06 Jul 2022 04:27:42 GMT",
            "x-amzn-requestid": "ca289ed1-65f4-4e6f-87e4-468b5a88ae60"
        },
        "HTTPStatusCode": 200,
        "RequestId": "ca289ed1-65f4-4e6f-87e4-468b5a88ae60",
        "RetryAttempts": 0
    },
    "Sentiment": "NEUTRAL",
    "SentimentScore": {
        "Mixed": 9.69591928878799e-06,
        "Negative": 0.016147520393133163,
        "Neutral": 0.9832557439804077,
        "Positive": 0.0005869901506230235
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;En &lt;em&gt;Sentiment&lt;/em&gt; tenemos el sentimiento detectado y en &lt;em&gt;SentimentScore&lt;/em&gt; tendremos el puntaje de las otras opciones.&lt;/p&gt;

&lt;h2&gt;
  
  
  5 Analisis de la sintaxis
&lt;/h2&gt;

&lt;p&gt;Con esta API podemos identificar los sustantivos, verbos, adjetivos, etc. en el documento. Amazon Comprehend puede identificar 17 tipos de Tokens.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Token&lt;/th&gt;
&lt;th&gt;Parte del discurso&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ADJ&lt;/td&gt;
&lt;td&gt;Adjetivo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ADP&lt;/td&gt;
&lt;td&gt;Adposición&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ADV&lt;/td&gt;
&lt;td&gt;Adverbio&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AUX&lt;/td&gt;
&lt;td&gt;Auxiliary&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CONJ&lt;/td&gt;
&lt;td&gt;Coordinación de la conjunción&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DET&lt;/td&gt;
&lt;td&gt;Determinador&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;INTJ&lt;/td&gt;
&lt;td&gt;Interjección&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SUSTANTIVO&lt;/td&gt;
&lt;td&gt;Nombre&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NUM&lt;/td&gt;
&lt;td&gt;Numérico&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;O&lt;/td&gt;
&lt;td&gt;Otros&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PART&lt;/td&gt;
&lt;td&gt;Partícula&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PRON&lt;/td&gt;
&lt;td&gt;Pronombre&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PROPÓN&lt;/td&gt;
&lt;td&gt;Nombre adecuado&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PUNTAR&lt;/td&gt;
&lt;td&gt;Puntuación&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SCONJ&lt;/td&gt;
&lt;td&gt;conjunción subordinante&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SYM&lt;/td&gt;
&lt;td&gt;Símbolo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;VERB&lt;/td&gt;
&lt;td&gt;Verbo&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A continuación presento el código en python&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;comprehend = boto3.client('comprehend')

detected_syntax = comprehend.detect_syntax(
   Text=sample_text, 
   LanguageCode='en'
)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Revelando el contenido de la variable &lt;em&gt;detected_syntax&lt;/em&gt; tendremos:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
    "ResponseMetadata": {
        "HTTPHeaders": {
            "content-length": "12896",
            "content-type": "application/x-amz-json-1.1",
            "date": "Wed, 06 Jul 2022 04:31:16 GMT",
            "x-amzn-requestid": "21f94838-5820-4223-a015-9685a31902cf"
        },
        "HTTPStatusCode": 200,
        "RequestId": "21f94838-5820-4223-a015-9685a31902cf",
        "RetryAttempts": 0
    },
    "SyntaxTokens": [
        {
            "BeginOffset": 1,
            "EndOffset": 6,
            "PartOfSpeech": {
                "Score": 0.9888805150985718,
                "Tag": "INTJ"
            },
            "Text": "Hello",
            "TokenId": 1
        },
        {
            "BeginOffset": 7,
            "EndOffset": 12,
            "PartOfSpeech": {
                "Score": 0.9991546273231506,
                "Tag": "PROPN"
            },
            "Text": "Zhang",
            "TokenId": 2
        },
        {
            "BeginOffset": 13,
            "EndOffset": 16,
            "PartOfSpeech": {
                "Score": 0.9982988238334656,
                "Tag": "PROPN"
            },
            "Text": "Wei",
            "TokenId": 3
        },
        ...
    ]
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;En la respuesta observamos que para cada una de las palabras se ha identificado su respectiva Etiqueta.&lt;/p&gt;

&lt;h2&gt;
  
  
  6 Detección de información de identificación personal (PII)
&lt;/h2&gt;

&lt;p&gt;Con esta API podemos detectar entidades en el texto que contienen información de identificación personal (PII).  Una entidad PII es una referencia textual a datos personales que podrían utilizarse para identificar a una persona, como una dirección, un número de cuenta bancaria o un número de teléfono.&lt;/p&gt;

&lt;p&gt;Amazon Comprehend reconoce los siguientes tipos de entidades:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ADDRESS&lt;/li&gt;
&lt;li&gt;AGE&lt;/li&gt;
&lt;li&gt;AWS_ACCESS_KEY&lt;/li&gt;
&lt;li&gt;AWS_SECRET_KEY&lt;/li&gt;
&lt;li&gt;BANK_ACCOUNT_NUMBER&lt;/li&gt;
&lt;li&gt;BANK_ROUTING&lt;/li&gt;
&lt;li&gt;CREDIT_DEBIT_CVV&lt;/li&gt;
&lt;li&gt;CREDIT_DEBIT_EXPIRY&lt;/li&gt;
&lt;li&gt;CREDIT_DEBIT_NUMBER&lt;/li&gt;
&lt;li&gt;DATE_TIME&lt;/li&gt;
&lt;li&gt;DRIVER_ID&lt;/li&gt;
&lt;li&gt;EMAIL&lt;/li&gt;
&lt;li&gt;IP_ADDRESS&lt;/li&gt;
&lt;li&gt;MAC_ADDRESS&lt;/li&gt;
&lt;li&gt;NAME&lt;/li&gt;
&lt;li&gt;PASSPORT_NUMBER&lt;/li&gt;
&lt;li&gt;PASSWORD&lt;/li&gt;
&lt;li&gt;PHONE&lt;/li&gt;
&lt;li&gt;PIN&lt;/li&gt;
&lt;li&gt;SSN&lt;/li&gt;
&lt;li&gt;URL&lt;/li&gt;
&lt;li&gt;USERNAME&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Para trabajar con la API usamos el siguiente código en python&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;comprehend = boto3.client('comprehend')

detected_pii_labels = comprehend.contains_pii_entities(
   Text=sample_text, 
   LanguageCode='en'
)

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ahora revisamos el contenido de la variable &lt;em&gt;detected_pii_labels&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
    "Labels": [
        {
            "Name": "EMAIL",
            "Score": 1.0
        },
        {
            "Name": "DATE_TIME",
            "Score": 1.0
        },
        {
            "Name": "BANK_ROUTING",
            "Score": 0.8962613940238953
        },
        {
            "Name": "NAME",
            "Score": 0.7186043858528137
        },
        {
            "Name": "PHONE",
            "Score": 1.0
        }
    ],
    "ResponseMetadata": {
        "HTTPHeaders": {
            "content-length": "197",
            "content-type": "application/x-amz-json-1.1",
            "date": "Wed, 06 Jul 2022 04:51:25 GMT",
            "x-amzn-requestid": "f13ed239-eb0c-428d-b7ea-4d26f2568309"
        },
        "HTTPStatusCode": 200,
        "RequestId": "f13ed239-eb0c-428d-b7ea-4d26f2568309",
        "RetryAttempts": 0
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;En la respuesta observamos cada una de las PII encontradas en el texto&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusión
&lt;/h2&gt;

&lt;p&gt;Amazon Comprehend permite acelerar el desarrollo de aplicaciones donde es necesario el uso de análisis de textos. El uso de esta herramienta no requiere una curva de aprendizaje elevada, solamente requiere leer un poco de documentación y revisar algunos ejemplos. No hay necesidad de tener conocimientos en inteligencia artificial para su uso.&lt;/p&gt;

&lt;p&gt;Este blog es parte de una serie: &lt;a href="https://dev.to/awsmllatam/machine-learning-para-desarrolladores-en-aws-4l59"&gt;Ir al menu&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>python</category>
      <category>spanish</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>Amazon Rekognition: Guía rápida</title>
      <dc:creator>Max Zeballos</dc:creator>
      <pubDate>Tue, 05 Jul 2022 18:17:44 +0000</pubDate>
      <link>https://forem.com/awsmllatam/amazon-rekognition-guia-rapida-5cl5</link>
      <guid>https://forem.com/awsmllatam/amazon-rekognition-guia-rapida-5cl5</guid>
      <description>&lt;h2&gt;
  
  
  Motivación
&lt;/h2&gt;

&lt;p&gt;En la actualidad las aplicaciones necesitan una mayor velocidad de desarrollo. La inclusión de funcionalidades que implican el uso de &lt;em&gt;machine learning&lt;/em&gt; se ha vuelto cada vez mayor.&lt;/p&gt;

&lt;p&gt;Amazon Web Services a desarrollado un conjunto de servicios que te permiten rápidamente agregar características de &lt;em&gt;machine learning&lt;/em&gt; a tus aplicaciones.&lt;/p&gt;

&lt;p&gt;Con Amazon Rekognition puedes integrar de manera sencilla y rápida el análisis de imágenes y video a tus aplicaciones. Este servicio utiliza &lt;em&gt;deep learning&lt;/em&gt; para el entrenamiento de sus algoritmos, pero no requiere conocimientos en inteligencia artificial para su uso.&lt;/p&gt;

&lt;h2&gt;
  
  
  Introducción
&lt;/h2&gt;

&lt;p&gt;Amazon Rekognition provee de un conjunto de APIs con las que podemos interactuar y obtener resultados sobre el análisis de imágenes y videos. Estas APIs retornan como respuesta la inferencia que realiza sobre los datos que le enviamos a modelos entrenados por los expertos que trabajan en AWS.&lt;/p&gt;

&lt;h2&gt;
  
  
  Características
&lt;/h2&gt;

&lt;p&gt;En esta sección vamos a revisar las capacidades del servicio y su uso a través de Python&lt;/p&gt;

&lt;h2&gt;
  
  
  1 Detección de objetos
&lt;/h2&gt;

&lt;p&gt;A través de esta api podemos obtener información acerca de los objetos dentro de imagenes y videos, así como también los limites cartesianos dentro de los cuales se encuentra contenido el objeto en la imagen, los llamados &lt;em&gt;bounding box&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;A continuación presentare un ejemplo:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff5x0dily3ujcp1y3susv.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff5x0dily3ujcp1y3susv.jpg" alt="Deteccion de objectos"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Para lograr este resultado tenemos que enviar la imagen original a la api de Rekognition especificado su localización en Amazon S3, a continuación presentare el código en python haciendo uso de boto3 (la librería oficial para trabajar con python)&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

rekognition = boto3.client('rekognition')

detectLabelsResponse = rekognition.detect_labels(
    Image={
        'S3Object': {
            'Bucket': bucketName,
            'Name': imageName,
        }
    }
)


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;En la variable &lt;em&gt;detectLabelsResponse&lt;/em&gt; tendremos la respuesta de la API, con las etiquetas correspondientes y las coordenadas de los &lt;em&gt;bounding box&lt;/em&gt; correspondientes. Con la información de los &lt;em&gt;bounding box&lt;/em&gt; y el uso de una librería de python como PIL podemos dibujar los cuadrados sobre la imagen y tener la imagen del ejemplo.&lt;/p&gt;

&lt;h2&gt;
  
  
  2 Moderación de contenido
&lt;/h2&gt;

&lt;p&gt;Con la api de moderación de contenido podemos detectar el contenido no seguro o inapropiado, a través de las etiquetas que retorna el API junto a un porcentaje de confiabilidad. Dentro de las categorías principales tenemos las siguientes etiquetas: &lt;em&gt;Explicit Nudity&lt;/em&gt;, &lt;em&gt;Suggestive&lt;/em&gt;, &lt;em&gt;Violence&lt;/em&gt;, &lt;em&gt;Visually Disturbing&lt;/em&gt;, &lt;em&gt;Rude Gestures&lt;/em&gt;, &lt;em&gt;Drugs&lt;/em&gt;, &lt;em&gt;Tobacco&lt;/em&gt;, &lt;em&gt;Alcohol&lt;/em&gt;, &lt;em&gt;Gambling&lt;/em&gt;, &lt;em&gt;Hate Symbols&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Para invocar esta api utilizaremos el siguiente codigo en Python:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

rekognition = boto3.client('rekognition')

detectModerationLabelsResponse = rekognition.detect_moderation_labels(
   Image={
       'S3Object': {
           'Bucket': bucketName,
           'Name': imageName,
       }
   }
)


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;En la variable &lt;em&gt;detectModerationLabelsResponse&lt;/em&gt; tendremos la respuesta a la API que contendrá las etiquetas principales mencionadas con anterioridad con algunas etiquetas secundarias y su porcentaje de confiabilidad.&lt;/p&gt;

&lt;h2&gt;
  
  
  3 Reconocimiento de celebridades
&lt;/h2&gt;

&lt;p&gt;Con la API de reconocimiento de celebridades puede rápidamente identificar personas famosas en imágenes y video. La API tiene la capacidad de detectar a una o varias celebridades dentro de una imagen o frame de video. Por ejemplo podría enviarle al API la siguiente imagen&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fan4xzcdnxdxw10fils1b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fan4xzcdnxdxw10fils1b.png" alt="Reconocimiento de celebridades"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;La API me retornara como resultado el nombre del famoso, en este caso sera Dwayne Johnson, mas conocido como "La roca". A continuación presentare el código en python.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

rekognition = boto3.client('rekognition')

recognizeCelebritiesResponse = rekognition.recognize_celebrities(
    Image={
        'S3Object': {
            'Bucket': bucketName,
            'Name': imageName,
        }
    }
)


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;En la variable &lt;em&gt;recognizeCelebritiesResponse&lt;/em&gt; obtendremos el nombre del famoso junto con un porcentaje de confianza, en esta caso sera: Dwayne Johnson (99.1% confidence).&lt;/p&gt;

&lt;h2&gt;
  
  
  4 Busquedas de rostros
&lt;/h2&gt;

&lt;p&gt;La Busqueda de rostros te permite reconocer personas dentro de una colección de rostros preestablecido. Esta colección de rostros debe ser creado antes de realizar el llamado a la API. Para que la api de una respuesta correcta el nuevo rostro a reconocer debe pertenecer al de una persona que se encuentra en nuestra colección de rostros, teniendo en cuenta que la imagen a reconocer no necesariamente tiene que ser una existente en nuestra colección de rostros.&lt;/p&gt;

&lt;p&gt;La api puede reconocer uno o mas rostros dentro de una imagen como en el ejemplo a continuación donde mostramos los rostros reconocidos dentro de un &lt;em&gt;bounding box&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F691jm3qcyvowrg2pgj3a.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F691jm3qcyvowrg2pgj3a.jpg" alt="Reconocimiento de rostros"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Para trabajar con esta api es necesario primero crear una colección de rostros, es recomendable tener como mínimo 3 rostros por persona.&lt;/p&gt;

&lt;p&gt;Para crear una colección usaremos el siguiente código en python:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

rekognition = boto3.client('rekognition')

rekognition.create_collection(
    CollectionId='face-collection'
)


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Para agregar rostros a nuestra coleccion:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

rekognition.index_faces(
    CollectionId='face-collection',
    Image={
        'S3Object': {
            'Bucket': bucketName,
            'Name': imageName,
        }
    },
    ExternalImageId=personId,
    DetectionAttributes=[
        'DEFAULT',
        ],
    MaxFaces=1,
    QualityFilter='AUTO'
)


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Todos los rostros de la misma persona deben tener el mismo &lt;em&gt;ExternalImageId&lt;/em&gt;, MaxFaces es el numero máximo de rostros que se va indexar, QualityFilter es el valor de calidad de la imagen, en caso el valor sea AUTO entonces Rekognition decidira si utiliza o no la imagen, DetectionAttributes son los atributos que deseas que se retornen en la API. Puedes encontrar el detalle de estos parametros &lt;a href="https://docs.aws.amazon.com/es_es/rekognition/latest/dg/API_IndexFaces.html" rel="noopener noreferrer"&gt;aqui&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Finalmente para realizar un reconocimiento facial en una nueva imagen utilizamos el siguiente código:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

searchFacesResponse = rekognition.search_faces_by_image(
    CollectionId='face-collection',
    Image={
        'S3Object': {
            'Bucket': bucketName,
            'Name': imageName,
        }
    },
    MaxFaces=2,
    FaceMatchThreshold=95
)


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;En &lt;em&gt;searchFacesResponse&lt;/em&gt; tendremos la respuesta de la API con un máximo de 2 rostros reconocidos a un 95% de confiabilidad.&lt;/p&gt;

&lt;h2&gt;
  
  
  5 Detección de texto
&lt;/h2&gt;

&lt;p&gt;Las imágenes y videos pueden venir acompañados de texto, poder convertir el texto de una imagen o video en caracteres de texto puede ser muy útil en muchas aplicaciones, como por ejemplo detectar imágenes con textos que tengan contenido explicito, otra aplicación es reconocer valores dentro de un texto como vouchers de pago o números de recibos, etc.&lt;/p&gt;

&lt;p&gt;Por ejemplo en la siguiente imagen se ha podido reconocer una serie de palabras a través de la API de rekognition.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo1mq3iaw88htm7k9gh9z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo1mq3iaw88htm7k9gh9z.png" alt="Deteccion de texto"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Para utilizar la API de Rekognition usaremos el siguiente código:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

rekognition = boto3.client('rekognition')

detectTextResponse = rekognition.detect_text(
    Image={
        'S3Object': {
            'Bucket': bucketName,
            'Name': imageName,
        }
      },
      Filters={
        'WordFilter': {
            'MinConfidence': 90
        }
      }
)


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;En la variable &lt;em&gt;detectTextResponse&lt;/em&gt; tendremos los textos encontrados con una confiabilidad superior al 90%.&lt;/p&gt;

&lt;h2&gt;
  
  
  6 Detección de equipo de protección personal
&lt;/h2&gt;

&lt;p&gt;En muchas industrias el tema de la seguridad es importante, llevar el equipo de protección adecuado puede salvar vidas. Otro uso importante que se le dio a esta característica es llevar el equipo de protección necesario para evitar el contagio del COVID-19. Esto demuestra como la tecnología nos puede ayudar al cuidado y protección de la salud.&lt;/p&gt;

&lt;p&gt;Aquí les muestro un ejemplo de la detección de equipos de protección:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8g6m93d26u9flphcc985.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8g6m93d26u9flphcc985.png" alt="Deteccion de equipos de proteccion"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Para usar la api utilizaremos el siguiente código:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

detectPPEResponse = rekognition.detect_protective_equipment(
        Image={
            'S3Object': {
                'Bucket': bucketName,
                'Name': imageName
            }
        },
        SummarizationAttributes={
            'MinConfidence': 90,
            'RequiredEquipmentTypes': [
                'FACE_COVER',
                'HEAD_COVER',
                'HAND_COVER',
            ]
        }
    )


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;En la variable &lt;em&gt;detectPPEResponse&lt;/em&gt; tendremos el resultado a la API, en la imagen se buscara si el rostro, cabeza y manos están cubiertas con un 90% de confiabilidad.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusión
&lt;/h2&gt;

&lt;p&gt;Amazon Rekognition permite acelerar el desarrollo de aplicaciones donde es necesario el uso de análisis sobre imágenes y videos. El uso de esta herramienta no requiere una curva de aprendizaje elevada, solamente requiere leer un poco de documentación y revisar algunos ejemplos. No hay necesidad de tener conocimientos en inteligencia artificial para su uso.&lt;/p&gt;

&lt;p&gt;Este blog es parte de una serie: &lt;a href="https://dev.to/awsmllatam/machine-learning-para-desarrolladores-en-aws-4l59"&gt;Ir al menu&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>python</category>
      <category>spanish</category>
      <category>machinelearning</category>
    </item>
  </channel>
</rss>
