EFECTUANDO CONVERSIONES DE MONEDA UTILIZANDO ‘forex-python’.

Destacado

Hace algunas semanas estuvimos viendo el modo en que podíamos crear una calculadora de divisas mediante la obtención del cambio actual de moneda a través de ‘yfinance‘. En el día de hoy os mostramos otro sistema para realizar conversiones de moneda de un modo más sencillo y directo, en el que solamente haremos uso de la librería ‘forex-python‘. Una herramienta útil para trabajar con tasas de cambio y conversiones entre diferentes monedas en Python, y que instalaremos en nuestro sistema mediante ‘pip‘:

Una vez instalada la librería podemos empezar a experimentar con ella. Para ello comenzaremos importando la clase ‘CurrencyRates‘ para a continuación crear una instancia de la misma:

A continuación podemos empezar a hacer uso de los métodos de la clase. Por ejemplo podemos empezar obteniendo la tasa de cambio de una moneda (por ejemplo el Dolar estadounidense ‘USD’) con respecto a otras principales. Para ello emplearemos la función ‘get_rates()‘ que tomará por argumento la moneda en cuestión:

Obtenemos de este modo un diccionario en el que se muestra la tasa de cambio del Dolar frente a otras monedas internacionales como el Euro (‘EUR’), Yen japonés (‘JPY’), Libra inglesa (‘GBP’)…etc.

Por su parte, también podemos acceder a la tasa de cambio de la moneda de referencia frente a otra de modo individual, con ‘get_rate()‘. En este caso introduciremos como argumentos la moneda de referencia y aquella frente a la que queremos obtener dicha tasa de cambio:

A su vez, podemos utilizar la función ‘convert()‘ para cambios entre monedas manejando cantidades de un modo bien sencillo. De ese modo, supongamos que queremos saber a cuantos Dolares canadienses (‘CAD‘) equivalen 100 Dolares estadouinidenses (‘USD’). En esta ocasión introduciremos como tercer argumento, dicha cifra. Como se ve en el ejemplo, aplicaremos a la salida un redondeo de 2 decimales (como hicimos también en el ejemplo anterior):

No obstante, cuando presentamos resultados de conversión entre monedas, puede resultar de interés mostrar el símbolo de la moneda en cuestión. Para ello deberemos importar la clase ‘CurrencyCodes‘ creando la pertinente instancia a continuación. Tras lo cual, utilizaremos el método ‘get_symbol()‘ pasando como argumento la moneda cuyo símbolo queremos obtener (en nuestro caso, el de la Libra inglesa ‘GBP’)

La obtención de los correspondientes símbolos de moneda nos permitirá mejorar el modo en que se presenta el resultado de la conversión:

Finalmente hacer alusión a la posibilidad de realizar conversiones de diferentes monedas y a monedas digitales como es el Bitcoin:

CONCLUSION:

La biblioteca ‘forex-python‘ es una herramienta poderosa y fácil de usar para trabajar con conversiones de divisas y tasas de cambio en Python. Con su capacidad para realizar conversiones precisas y obtener tasas de cambio actualizadas, es una opción invaluable para desarrolladores que trabajan en aplicaciones financieras, comerciales y de comercio electrónico. Esperamos que este artículo haya proporcionado una introducción útil al mundo de las conversiones de divisas. ¡Ahora es tu turno de explorar y experimentar con esta potente biblioteca!

Saludos.

UTILIZANDO ELEMENTOS DE IMAGEN CON PYTHON Y TKINTER.

Destacado

Los widgets de imagen en Tkinter son una herramienta fundamental para mostrar gráficos, fotos e iconos en las aplicaciones GUI de Python. Ya que permiten una representación visual efectiva de la información, mejorando la usabilidad y la estética de la interfaz de usuario. En esta guía práctica, exploraremos cómo utilizar los principales widgets de imagen en Tkinter para mostrar imágenes en nuestras aplicaciones gráficas.

1- ETIQUETAS DE IMAGEN.

La etiqueta de imagen (‘Label‘) es la forma más básica de mostrar una imagen en una aplicación creada con Tkinter. A continuación mostramos un ejemplo sencillo de cómo cargar y mostrar una imagen utilizando este widget, para lo que nos valdremos de la clase ‘PhotoImage‘:

En este ejemplo, ‘image‘ es un objeto de la clase ‘PhotoImage‘ creado a partir del archivo de imagen cuya ruta hemos definido. Este, lo utilizaremos como argumento para crear una etiqueta (‘Label‘), que será la que se muestre en la ventana principal. Una de las ventajas de usar este widget reside en el hecho de que las dimensiones de ventana se ajustarán automaticamente a las dimensiones de la imagen, sin necesidad de especificarlas por nosotros.

OUTPUT:

2- CANVAS.

Por su parte, el canvas (‘Canvas‘) es más flexible y permite una mayor interacción con las imágenes. Así, por ejemplo, nos permite dibujar estas agregándole texto encima, tal y como hacemos en el siguiente ejemplo:

En este caso hemos empezado creando nuestra ventana y cargando la imagen con ‘PhotoImage()‘ como en el ejemplo anterior, para a continuación crear nuestro lienzo ‘Canvas‘ especificando sus dimensiones que en este caso serán las variables ‘ancho’ y alto’ de nuestra imagen (obtenidas mediante las funciones ‘width()‘ y ‘height()‘). Creado el lienzo, hemos insertado en el la imagen en cuestión con ‘create_image()‘ especificando a su vez, la posición de la misma en el canvas. Finalmente hemos insertado un texto sobre la misma, empleando ‘create_text()‘.

OUTPUT:

3- MARCO DE IMAGEN (FRAME).

El marco de imagen (‘Frame‘) nos será de gran utilidad cuando queramos organizar y mostrar varias imágenes juntas. Aquí tienes un ejemplo de cómo crear un marco y agregar etiquetas de imagen a él:

En este caso, tras crear la ventana principal (‘root‘) generamos un marco (‘frame‘) dentro de ella que contendrá las imágenes. Las imágenes se cargan utilizando ‘PhotoImage‘ (como vimos en los ejemplos anteriores) y se asignan a las variables ‘image1‘ e ‘image2‘ (en este caso no hemos especificado las rutas completas ya que previamente hemos hecho el cambio de directorio con ‘chdir()‘). Después, hemos creado las etiquetas para mostrar cada imagen que acto seguido, hemos incluido en el marco, una a la izquierda (‘label1‘) y otra a la derecha (‘label2‘).

OUTPUT:

CONCLUSION:

Los widgets de imagen en Tkinter ofrecen una forma efectiva de mostrar imágenes en aplicaciones gráficas de Python. Así, con la clase ‘PhotoImage‘, es posible cargar imágenes desde archivos y mostrarlas en etiquetas de imagen dentro de una ventana. Además, Tkinter proporciona la flexibilidad para organizar y diseñar la disposición de las imágenes junto con otros elementos de la interfaz gráfica, como botones y cuadros de texto. Esto permite crear aplicaciones visuales atractivas y funcionales con facilidad. En resumen, los widgets de imagen en Tkinter son una herramienta valiosa para desarrollar aplicaciones con interfaces de usuario interactivas y visualmente atractivas en Python.

Saludos.

ANALISIS TECNICO EN PYTHON, CON ‘PANDAS_TA’.

Destacado

Cuando se trata de análisis financiero, el análisis técnico es una herramienta crucial para comprender el comportamiento de los precios de los activos financieros en el mercado. Python, con su ecosistema de bibliotecas de análisis de datos, ofrece una amplia gama de herramientas para llevar a cabo análisis técnico de manera eficiente. Una de estas bibliotecas es ‘pandas_ta‘, una extensión de la popular biblioteca ‘pandas‘, que proporciona una amplia variedad de indicadores técnicos listos para usar y que instalaremos en nuestro sistema con el comando ‘pip‘:

Tal y como hemos señalado, ‘pandas_ta‘ es una biblioteca de análisis técnico escrita en Python que amplía las capacidades de la biblioteca pandas. Proporcionando una amplia gama de indicadores técnicos comúnmente utilizados en el análisis financiero. Lo cual permite a los usuarios realizar análisis técnico de datos financieros de manera rápida y sencilla. Entre dichos indicadores podemos encontrar los siguientes:

  • Medias móviles (SMA, EMA, WMA, etc.)
  • Bandas de Bollinger
  • Índice de Fuerza Relativa (RSI)
  • MACD (Convergencia/Divergencia de Medias Móviles)
  • Estocástico
  • ATR (Rango Promedio Verdadero)

ALGUNOS EJEMPLOS:

Una vez dadas unas breves pinceladas acerca de en que consiste ‘pandas_ta‘, pasaremos a continuación a mostrar algunos sencillos ejemplos de uso. Dado que en este blog nos gusta utilizar datos reales para nuestros ejemplos, vamos a aplicar estos sobre los datos de cierre de una compañía (Apple en este caso) para el pasado año 2023. Para la obtención de dichos datos, vamos a valernos de otra librería ‘yfinance‘ (de la que ya hemos hablado en ocasiones anteriores) la cual importaremos junto a ‘pandas_ta‘:

OUTPUT:

Una vez obtenidos los datos para el periodo de tiempo deseado, pasaremos a calcular algunos indicadores de interés utilizando ‘pandas_ta‘:

1) MEDIA MOVIL SIMPLE Y EXPONENCIAL (SMA Y EMA):

Con la media móvil simple calculamos el promedio de los precios de cierre durante un período específico. Es útil para suavizar la tendencia general de los datos de precios y para identificar posibles puntos de entrada o salida basados en los cruces de estas. Para ello utilizaremos la función «sma()» la información sobre la que queremos calcularla y la ventana de tiempo que queramos usar:

Igualmente podemos calcular la media móvil exponencial (la cual es semejante a la media móvil simple, solo que dando mayor peso a los valores más recientes) de nuestra serie temporal, mediante la función ‘ema()‘ determinando igualmente la ventana de tiempo antes referida:

2) BANDAS DE BOLLINGER:

Estas consisten en una banda central (media móvil simple) y dos bandas exteriores que se colocan a una cierta distancia (generalmente dos desviaciones estándar) de la central. Son útiles para identificar la volatilidad del mercado y posibles puntos de reversión. Su calculo para nuestra serie temporal de precios de cierre, la obtendremos mediante la función ‘bbands()‘:

Como se ve, la función devuelve un dataframe con la siguiente información por columnas:

  • BBL_5_2.0: Banda Baja de las Bandas de Bollinger con una ventana de 5 periodos y un ancho de banda de 2.0 desviaciones estándar.
  • BBM_5_2.0: Banda Media de las Bandas de Bollinger con una ventana de 5 periodos y un ancho de banda de 2.0 desviaciones estándar.
  • BBU_5_2.0: Banda Alta de las Bandas de Bollinger con una ventana de 5 periodos y un ancho de banda de 2.0 desviaciones estándar.
  • BBB_5_2.0: Ancho de Banda de las Bandas de Bollinger con una ventana de 5 periodos y un ancho de banda de 2.0 desviaciones estándar.
  • BBP_5_2.0: Porcentaje de Banda de las Bandas de Bollinger con una ventana de 5 periodos y un ancho de banda de 2.0 desviaciones estándar.

3) INDICE DE FUERZA RELATIVA (RSI):

Otro indicador interesante es el RSI. Este es un indicador de momentum que oscila entre 0 y 100. Se utiliza para medir la velocidad y el cambio de los movimientos de precios. Un RSI por encima de 70 generalmente se considera sobrecompra, mientras que un RSI por debajo de 30 se considera sobrevendido. Su computo con ‘pandas_ta‘ lo llevaremos a cabo mediante la función ‘rsi()‘ determinando, una vez más, la correspondiente ventana temporal:

4) OSCILADOR ESTOCASTICO:

Este indicador compara el precio de cierre actual con el rango entre el máximo más alto y el mínimo más bajo durante un período de tiempo específico. Se utiliza para identificar condiciones de sobrecompra o sobreventa en el mercado. Un estocástico por encima de 80 generalmente se considera sobrecompra, mientras que un estocástico por debajo de 20 se considera sobrevendido. Esto último lo obtendremos mediante la función ‘stock()’ a la que pasaremos los valores máximos (‘High’), mínimos (‘Low’) y de cierre (‘Close’), especificando igualmente la ventana de tiempo:

CONCLUSIÓN:

Tal y como hemos visto, ‘pandas_ta‘ es una herramienta poderosa y versátil para realizar análisis técnico en Python. Con su amplia gama de indicadores técnicos (de los que solo hemos visto una pequeña muestra) y su integración perfecta con pandas, es una opción excelente para los analistas financieros y los traders que desean llevar a cabo análisis técnico de manera eficiente y efectiva.

Saludos.

ESQUELETIZADO DE IMAGENES CON PYTHON Y SCIKIT-IMAGE.

Destacado

El procesamiento de imágenes es una disciplina fascinante que abarca una amplia gama de técnicas para manipular imágenes digitales con el fin de mejorar su calidad, extraer información relevante o realizar tareas específicas. Una de estas técnicas es el esqueletizado de imágenes, que tiene aplicaciones en diversas áreas, como visión por computadora, reconocimiento de patrones, análisis de formas y más. Concretamente consiste en un proceso en el que se reduce una forma binaria a su representación más esquemática, manteniendo la topología de la forma original. Esencialmente, el esqueleto de una imagen representa la «columna vertebral» de la forma, conservando su estructura esencial. Esta técnica es útil para simplificar la representación de formas y facilitar la extracción de características relevantes.

En este artículo, exploraremos en detalle la utilidad del esqueletizado de imágenes y cómo se implementa en Python utilizando la biblioteca ‘scikit-image‘ la cual deberemos instalar previamente en nuestro sistema con ‘pip install scikit-image‘:

IMPLEMENTACION EN PYTHON:

La mencionada biblioteca ‘scikit-image‘ proporciona una implementación eficiente y fácil de usar del esqueletizado de imágenes a través de la función skeletonize. Esta función toma una imagen binaria como entrada y devuelve el esqueleto de la forma representado como una matriz binaria. A continuación, veremos un ejemplo de cómo implementar el esqueletizado de imágenes en Python utilizando dicha librería aplicada a la siguiente imagen:

Así el primer paso que deberemos dar es naturalmente el de importar las librerías y recursos a utilizar y proceder al cargado y lectura de la imagen en cuestión con ‘OpenCV‘. En este punto usaremos la función ‘imread()‘ pasándole como primer argumento, la ruta a la imagen en cuestión y como segundo argumento, el valor 0, con lo que estaremos indicando que queremos cargarla en escala de grises:

Hecho esto y teniendo en cuenta que la operación que queremos realizar, ha de efectuarse sobre una imagen binaria, el siguiente paso será realizar dicha conversión mediante la aplicación de los correspondientes umbrales. En ocasiones puede ser útil la aplicación de inversión sobre la misma. Usándose en este caso la función ‘bitwise_not()‘:

Una vez realizados estos pasos previos, llevaremos a cabo la operación de esqueletización con ‘scikit-image‘ y su función ‘skeletonize()‘:

Finalmente mostraremos el resultado final, junto al original en gris y su versión binaria invertida, utilizando la función para visualizar fotos de ‘OpenCV‘, ‘imshow()‘:

OUTPUT:

CONCLUSION:

El esqueletizado de imágenes es una técnica poderosa en el campo del procesamiento de imágenes, con aplicaciones en diversas áreas como análisis de formas, extracción de características, reconocimiento de patrones y más. La implementación de esta técnica en Python utilizando la biblioteca ‘scikit-image‘ proporciona una forma eficiente y flexible de realizar operaciones de esqueletizado en imágenes digitales. Al comprender la utilidad y la implementación del esqueletizado de imágenes, los practicantes de procesamiento de imágenes pueden aprovechar esta técnica para una variedad de aplicaciones prácticas y proyectos de visión por computadora.

Saludos.

NUEVAS PRACTICAS CON ARREGLOS, USANDO NUMPY.

Destacado

NumPy‘ es una biblioteca fundamental en el ecosistema de Python para computación numérica y manipulación de datos. Aunque muchos usuarios están familiarizados con las operaciones básicas proporcionadas por esta librería, tales como la creación de matrices y la realización de operaciones elementales, hay una serie de técnicas avanzadas que pueden llevar nuestra experiencia con NumPy al siguiente nivel. En este artículo, exploraremos algunas de estas técnicas para aprovechar al máximo NumPy en nuestros proyectos de análisis de datos y computación científica.

1) INDEXACIÓN AVANZADA:

NumPy permite la indexación avanzada, lo que significa que podemos seleccionar elementos de una matriz utilizando una variedad de métodos más allá de la indexación básica. Por ejemplo, nos permite utilizar arreglos de índices, arreglos booleanos o incluso funciones para seleccionar elementos de una matriz. Esto proporciona una gran flexibilidad y poder para manipular datos de manera eficiente:

OUTPUT:

2) BROADCASTING:

El broadcasting es una técnica de gran efectividad en NumPy que nos permite realizar operaciones entre matrices de diferentes formas y tamaños de manera eficiente. Esto significa que podremos realizar operaciones entre matrices que no son del mismo tamaño sin tener que crear copias adicionales de los datos. Por ejemplo, podemos sumar un vector a cada fila de una matriz sin necesidad de expandir el vector a la forma de la matriz:

OUTPUT:

3) FUNCIONES UNIVERSALES:

Las Funciones Universales (ufuncs) en NumPy son funciones que operan elemento por elemento en matrices generadas por esta librería, permitiendo realizar operaciones matemáticas y de manipulación de datos de manera eficiente. Estas funciones están diseñadas para aplicarse a matrices completas sin la necesidad de utilizar bucles explícitos en Python, lo que las hace extremadamente rápidas y eficientes. Las ufuncs abarcan una amplia gama de operaciones, desde funciones matemáticas básicas como suma, resta y multiplicación, hasta operaciones más complejas como exponenciación, trigonometría y manipulación de matrices. Gracias a su implementación en código C, las ufuncs de NumPy son esenciales para el procesamiento eficiente de grandes conjuntos de datos en el análisis de datos y la computación científica.

NumPy proporciona una amplia gama de funciones ufuncs para realizar una variedad de operaciones matemáticas y de manipulación de datos. Algunas de las más comunes son las siguientes:

  • np.sin(): Calcula el seno de cada elemento de la matriz.
  • np.cos(): Calcula el coseno de cada elemento de la matriz.
  • np.exp(): Calcula la exponencial de cada elemento de la matriz.
  • np.log(): Calcula el logaritmo natural de cada elemento de la matriz.
  • np.sqrt(): Calcula la raíz cuadrada de cada elemento de la matriz.
  • np.abs(): Calcula el valor absoluto de cada elemento de la matriz.

Veamos un sencillo ejemplo:

OUTPUT:

Igualmente podemos utilizar esta técnica, definiendo nuestras propias funciones a aplicar a cada elemento de la matriz. Para ello utilizaremos la función ‘np.frompyfunc()‘:

En este código, definimos una función de Python llamada ‘mi_funcion()‘ que toma un único argumento ‘x‘ y devuelve el resultado de calcular ‘x ** 2 + 2 * x + 1‘. Luego, utilizamos la función ‘np.frompyfunc()‘ para convertir esta función de Python en una función universal (ufunc) que aplicaremos a cada elemento de ‘matriz‘. Por su parte, la llamada a ‘np.frompyfunc(mi_funcion, 1, 1)‘ especifica que la función ‘mi_funcion()‘ toma un argumento y devuelve un único resultado. El resultado es una nueva matriz que contiene los valores resultantes de aplicar nuestra función ‘mi_funcion()‘ a cada elemento de la matriz original:

OUTPUT:

4) OPTIMIZACIÓN DE RENDIMIENTO:

En aquellos casos en los que estemos trabajando con conjuntos de datos muy grandes, es posible que necesitemos optimizar el rendimiento de nuestro código para garantizar tiempos de ejecución rápidos. NumPy proporciona varias técnicas de optimización de rendimiento, como el uso de operaciones vectorizadas, el uso de vistas en lugar de copias y el uso de tipos de datos específicos para reducir el uso de memoria y mejorar la velocidad de cálculo:

OUTPUT:

CONCLUSIÓN:

NumPy es una herramienta poderosa y versátil para el análisis de datos y la computación científica en Python. Con estas técnicas avanzadas, podremos aprovechar al máximo las capacidades de NumPy y mejorar el rendimiento y la eficiencia de nuestro código. Experimenta con estas técnicas en tus proyectos y descubre cómo pueden llevar tu experiencia con NumPy al siguiente nivel.

Saludos.

VISUALIZACIÓN DE SEÑALES DE AUDIO EN PYTHON CON ‘Matplotlib’ Y ‘librosa’.

Destacado

El procesamiento digital de señales de audio es un campo emocionante que abarca una amplia gama de aplicaciones, desde la música y el entretenimiento hasta la comunicación y la ingeniería de audio. Con Python y algunas bibliotecas especializadas, como ‘NumPy‘ y ‘librosa‘, podemos realizar una variedad de tareas de procesamiento de señales de audio de manera efectiva. En este artículo, expondremos algunos ejemplos de cómo podemos utilizar Python para trabajar con señales de audio y realizar tareas como carga, visualización y análisis de dichas señales, ayudándonos de las librerías ‘Matplotlib‘ (de la que ya hemos hablado en repetidas ocasiones) y ‘librosa‘. La cual deberemos instalar previamente en nuestro sistema:

CARGA Y VISUALIZACIÓN DE SEÑALES DE AUDIO:

El primer paso para trabajar con señales de audio en Python es cargarlas desde archivos de audio. Con la biblioteca ‘librosa‘, podemos cargar fácilmente archivos de audio en matrices ‘NumPy‘ para su manipulación posterior. Veamos un ejemplo:

Este código carga un archivo de audio llamado «guitar2.wav» y visualiza su forma de onda utilizando la librería ‘Matplotlib‘. La forma de onda muestra la amplitud de la señal de audio en función del tiempo, lo que nos permite visualizar la señal de audio en dicho dominio.

OUTPUT:

ANALISIS DE LA SEÑAL DE AUDIO:

Una vez que hemos cargado una señal de audio, podemos realizar una variedad de análisis para extraer información útil de dicha señal. Por ejemplo, podemos calcular y visualizar su correspondiente espectrograma, lo cual, nos mostrará el modo en que varía la energía de la señal en diferentes frecuencias a lo largo del tiempo:

Este código calcula el espectrograma de la señal de audio y lo visualiza utilizando nuevamente ‘Matplotlib‘. Aquí, el espectrograma muestra la energía de la señal en diferentes frecuencias a lo largo del tiempo, lo que nos permite identificar características importantes en la señal, como tonos y patrones de sonido.

OUTPUT:

A la representación anterior, podemos, también, añadir las líneas de beat que indican la ubicación de los beats o pulsos rítmicos en la señal de audio. Aquí, los marcadores de beat se mostrarán como líneas verticales discontinuas en la forma de onda de la señal de audio:

OUTPUT:

Un tipo especial de espectrograma que también podemos obtener es el conocido como Espectrograma de Mel, el cual también muestra la variación de energía de una señal de audio en el tiempo y en diferentes bandas de frecuencia, pero con una representación más adaptada a la percepción auditiva humana:

OUTPUT:

Otra representación que puede ser de gran utilidad para el análisis de la señal es el cromagrama, el cual puede proporcionar información valiosa sobre la estructura armónica y rítmica de la señal de audio:

OUTPUT:

CONCLUSIÓN:

Python proporciona una amplia variedad de herramientas y bibliotecas para trabajar con señales de audio de manera efectiva. En este artículo, exploramos cómo podemos cargar, visualizar y analizar señales de audio utilizando Python y librerías como ‘librosa‘ y ‘Matplotlib‘. Al comprender estas técnicas, podemos realizar una amplia gama de tareas de procesamiento de señales de audio y explorar nuevos enfoques para trabajar con datos de audio en nuestros proyectos.

Saludos.

ENTRENANDO MODELOS PARA CLASIFICACIÓN DE IMAGENES CON PYTHON Y ‘TensorFlow’.

Destacado

En el mundo de la inteligencia artificial y el aprendizaje automático, la clasificación de imágenes es una tarea fundamental. Clasificar imágenes puede implicar identificar objetos, reconocer patrones o incluso diagnosticar enfermedades basadas en imágenes médicas. En este artículo, exploraremos cómo utilizar Python junto con ‘TensorFlow‘, una de las bibliotecas de aprendizaje automático más populares, para entrenar modelos de clasificación de imágenes de manera efectiva. La explicación la dividiremos en cinco sencillos pasos:

INSTALACIÓN DE TENSOR FLOW:

Aunque para nuestro ejemplo vamos a utilizar la plataforma de ‘Google Colab‘ (en donde no es necesaria esta acción) conviene saber como podemos instalar la librería localmente en nuestro sistema. Para ello podremos utilizar el comando ‘pip‘ al que estamos acostumbrados:

PREPARACIÓN DE LOS DATOS:

El primer paso en el entrenamiento de un modelo de clasificación de imágenes es preparar los datos. Para este ejemplo, utilizaremos el conjunto de datos ‘MNIST‘, consistente en una colección de imágenes de dígitos escritos a mano. ‘TensorFlow‘ proporciona, aquí, funciones para cargar y pre-procesar dicho conjunto de datos:

Así, empezaremos a elaborar nuestro modelo, importando la librería ‘TensorFlow‘. Tras ello, cargamos los datos de imágenes MNIST utilizando la función ‘load_data()‘ para después normalizar estos dividiendo los valores de píxeles de las imágenes por 255 y así escalarlos en el rango [0, 1]:

CONSTRUCCIÓN DEL MODELO:

Una vez que los datos están preparados, podemos construir nuestro modelo de clasificación de imágenes. Para este ejemplo, utilizaremos una red neuronal convolucional (CNN), la cual constituye una arquitectura comúnmente utilizada para tareas de visión por computadora como la que pretendemos realizar:

En la construcción del modelo, primero definimos un modelo secuencial utilizando ‘tf.keras.models.Sequential([])‘, permitiéndonos agregar capas secuenciales una tras otra. Luego, agregamos capas de convolución 2D seguidas de capas de agrupación máxima para extraer características de las imágenes y reducir la dimensionalidad. Después de varias iteraciones, aplanamos las características en un vector unidimensional y las alimentamos a capas densas para la clasificación final.

Una vez que el modelo está construido, lo compilamos con ‘model.compile(optimizer='adam',loss='sparse_categorical_crossentropy',metrics=['accuracy'])‘. Aquí, especificamos el optimizador ‘adam‘, una función de pérdida adecuada para problemas de clasificación de múltiples clases, y las métricas que deseamos monitorear durante el entrenamiento, como la precisión. Este proceso de construcción y compilación establece los parámetros esenciales del modelo, preparándolo para el proceso de entrenamiento.

ENTRENAMIENTO DEL MODELO:

Una vez construido y compilado nuestro modelo, podemos entrenarlo utilizando los datos de entrenamiento que definimos con anterioridad:

El código para entrenar el modelo utiliza el método ‘fit()‘, donde proporcionamos los datos de entrenamiento (‘x_train‘) y sus correspondientes etiquetas de clase (‘y_train‘). A su vez, especificaremos el número de épocas (variable ‘epochs‘) de entrenamiento, que determina cuántas veces el modelo verá todo el conjunto de datos de entrenamiento. Además, utilizamos un conjunto de datos de validación (‘x_test‘ y ‘y_test‘) para evaluar el rendimiento del modelo después de cada época. Durante el entrenamiento, el modelo ajusta sus pesos para minimizar la función de pérdida, y al final de cada época, evalúa su desempeño en el conjunto de validación. Este proceso se repite durante el número especificado de épocas, preparando así el modelo para su evaluación final.

Proceso de entrenamiento del modelo.

EVALUACIÓN DEL MODELO:

Finalmente procederemos a la evaluación de nuestro modelo, obteniendo el valor de perdida en el conjunto de datos de prueba (‘test_loss‘) y la precisión (‘test_acc‘). Para ello utilizaremos el método ‘evaluate()‘ del TensorFlow:

CONCLUSIÓN:

En este artículo, hemos explorado cómo utilizar Python junto con TensorFlow para entrenar un modelo de clasificación de imágenes. Desde la preparación de los datos hasta la construcción, entrenamiento y evaluación del modelo, TensorFlow proporciona herramientas poderosas y fáciles de usar para trabajar con imágenes y realizar tareas de aprendizaje automático. Con este conocimiento, estás listo para comenzar a desarrollar tus propios modelos de clasificación de imágenes y explorar el emocionante campo de la visión por computadora.

Saludos.

BREVE INTRODUCCIÓN A LOS OPERADORES ‘BIT A BIT’ EN PYTHON.

Destacado

Saludos y bienvenidos una semana más a vuestro blog sobre programación En Python, en una ocasión en las que nos disponemos a realizar un primer acercamiento a los llamados operadores ‘bit a bit’, los cuales, a pesar de ser menos comunes que los operadores aritméticos o lógicos, pueden ser muy útiles en ciertos contextos, especialmente cuando se trabaja con manipulación de bits, codificación de datos o algoritmos de bajo nivel. En este artículo, exploraremos los operadores bit a bit en Python, cómo funcionan y cómo se pueden aplicar en diferentes situaciones.

QUE SON LOS OPERADORES BIT A BIT:

Hemos de empezar diciendo que estos operadores presentan la particularidad de actuar sobre los bits individuales de las representaciones binarias de los valores numéricos. A diferencia de lo que sucede con los operadores aritméticos y lógicos a los que estamos más acostumbrados, en la que las operaciones se realizan sobre los valores completos. En Python tenemos 6 operadores ‘bit a bit’, que listamos a continuación:

  • & : AND bit a bit
  • | : OR bit a bit
  • ^ : XOR bit a bit
  • ~ : Complemento bit a bit (NOT)
  • << : Desplazamiento a la izquierda
  • >> : Desplazamiento a la derecha

A continuación veremos un ejemplo en código Python del uso de cada uno de ellos.

EJEMPLOS EN PYTHON:

AND Bit a Bit (&): Este operador toma dos números y realiza una operación AND bit a bit en cada par de bits correspondientes. El resultado será 1 si ambos bits son 1, de lo contrario, será 0:

OR Bit a Bit (|): Este operador realiza una operación OR bit a bit en cada par de bits correspondientes. El resultado será 1 si al menos uno de los bits es 1:

XOR Bit a Bit (^): Este operador realiza una operación XOR bit a bit en cada par de bits correspondientes. Donde el resultado será 1 si los bits son diferentes, de lo contrario, será 0:

Complemento Bit a Bit (~): Este operador realiza una negación bit a bit, es decir, invierte todos los bits de un número:

Desplazamiento a la Izquierda (<<) y Desplazamiento a la Derecha (>>): Estos operadores desplazan los bits hacia la izquierda o hacia la derecha, respectivamente, en el número dado. Los bits que se desplazan más allá de los límites del número se pierden. En este caso, también especificaremos el número de posiciones en el que deberán desplazarse los bits:

USOS:

Los operadores bit a bit en Python y otros lenguajes de programación son herramientas versátiles con una amplia gama de aplicaciones. Desde la manipulación eficiente de datos hasta la optimización de algoritmos, estos operadores ofrecen diversas utilidades. Por ejemplo, en el campo de la criptografía, se pueden usar para implementar algoritmos de cifrado y descifrado, donde el procesamiento a nivel de bits es esencial para garantizar la seguridad de los datos. En la compresión de datos, los operadores bit a bit permiten la implementación de algoritmos de compresión eficientes, como la codificación de longitud de ejecución (RLE) o la codificación Huffman, que buscan reducir el tamaño de los archivos mediante la manipulación precisa de los bits. Además, en la programación de dispositivos embebidos y sistemas de bajo nivel, los operadores bit a bit son fundamentales para el control y la comunicación con hardware específico, donde cada bit puede representar un estado o una configuración particular. En resumen, los operadores bit a bit son una herramienta poderosa y fundamental en la caja de herramientas de cualquier programador, ofreciendo soluciones eficientes para una amplia variedad de problemas y escenarios de programación.

CONCLUSIÓN:

Para terminar, los operadores ‘bit a bit‘ son una herramienta de gran utilidad para manipular datos a nivel de bits en Python. Al comprender cómo funcionan estos operadores y cómo se aplican, los programadores pueden escribir código más eficiente y efectivo para una gran variedad de aplicaciones. Si bien pueden parecer menos comunes en comparación con otros operadores más tradicionales, su utilidad en ciertos dominios no debe subestimarse.

Saludos.

TRADUCIENDO TEXTO EN PYTHON, CON ‘translate’.

Destacado

La traducción de texto es una tarea común en muchas aplicaciones de procesamiento de lenguaje natural y análisis de datos. Python ofrece una variedad de bibliotecas para realizar esta tarea, y una de las opciones más efectivas es la biblioteca ‘translate‘. En este artículo, exploraremos cómo usar dicha librería para traducir texto de un idioma a otro de manera rápida y sencilla.

INTRODUCCIÓN E INSTALACIÓN.

La librería ‘translate‘ es una envoltura simple y elegante alrededor de varios servicios de traducción en línea, como ‘Google Translate‘, ‘Microsoft Translator‘, ‘Yandex Translate‘ y otros que permite a los desarrolladores integrar fácilmente capacidades de traducción en sus aplicaciones de Python con solo unas pocas líneas de código.

Para comenzar a usar la biblioteca ‘translate‘, primero debemos instalarla. Esto se puede hacer fácilmente a través de pip, el gestor de paquetes de Python. Ejecute el siguiente comando en su terminal o símbolo del sistema:

Una vez instalada, podemos comenzar a utilizar la biblioteca en nuestros proyectos de Python.

USO BÁSICO:

A continuación mostraremos un ejemplo básico y muy sencillo que muestra cómo usar ‘translate‘ para traducir texto de inglés a español:

OUTPUT:

Como puede verse facilmente, en este ejemplo, creamos un objeto traductor especificando el idioma al que queremos traducir (en este caso, español) para luego proporcionarle el texto que queremos traducir llamando al método ‘translate()‘ del objeto traductor para realizar la traducción. Finalmente, usaremos ‘print()’ para mostrar el texto traducido.

TRADUCCIÓN ENTRE DIFERENTES IDIOMAS:

Hay que señalar también que la librería ‘translate‘ es muy flexible permitiéndonos traducir texto entre una amplia variedad de idiomas. Podemos especificar tanto el idioma de origen como el idioma de destino al crear el objeto traductor usando las variables ‘from_lang‘ y ‘to_lang‘ respectivamente. Veamos un ejemplo de traducción del español al francés:

OUTPUT:

CONCLUSIÓN:

La librería ‘translate‘ es una herramienta fácil de usar y extremadamente útil para agregar capacidades de traducción a sus proyectos de Python. Con su amplio soporte para diferentes servicios de traducción en línea y una API simple e intuitiva, es una opción excelente para cualquier aplicación que requiera traducción de texto. Experimenta con diferentes idiomas y servicios de traducción para encontrar la combinación que mejor se adapte a tus necesidades.

Saludos.

EJECUTANDO CÓDIGO ‘R’ EN PYTHON, CON ‘rpy2’.

Destacado

‘R’ es un lenguaje de programación, de código abierto, orientado al análisis estadístico, muy popular en la comunidad académica y de investigación, así como en la industria para el análisis de datos y la modelización estadística y que cuenta con una gran cantidad de paquetes y bibliotecas para una variedad de tareas analíticas. Pues bien, hoy vamos a ver un sencillo ejemplo de como utilizar este potente lenguaje dentro de nuestro código Python, haciendo uso de la librería ‘rpy2‘, creada para ser un puente de comunicación entre ambos lenguajes.

Ejemplo de código escrito en ‘R’.

Pero antes de continuar, deberemos asegurarnos de tener instalados todos lo recursos necesarios. Dado que, tal y como ya hemos señalado, ‘rpy2‘ es una librería que conecta nuestro código Python con los recursos y utilidades del lenguaje ‘R‘, tendremos que tener también instalado este último (al final del artículo dejaremos la dirección de la página desde la que realizar la descarga). Por lo que a la librería ‘rpy2‘ se refiere, haremos la instalación por el procedimiento habitual para las librerías de Python:

Instalación de ‘rpy2’ con ‘pip’.

EJEMPLO DE COMO USAR ‘R’ EN PYTHON:

Veamos ahora un sencillo ejemplo en el que nos proponemos realizar un análisis de regresión lineal simple sobre el conjunto de datos ‘mtcars‘ en ‘R‘ ajustando un modelo lineal que predice la eficiencia del combustible (‘mpg‘) en función del peso del automóvil (‘wt‘) visualizando el correspondiente gráfico de dispersión y línea de regresión mediante la librería ‘ggplot2‘ de ‘R‘.

Así, empezaremos creando un nuevo archivo Python en el que, naturalmente, empezaremos importando las librerías y recursos de los que vamos a hacer uso:

Tras ello, procederemos a activar la conversión automática entre ‘pandas‘ y ‘R‘ e instalar los paquetes de ‘R‘ que vamos a usar en el ejemplo. Entre el que se encuentra el paquete ‘base‘ que es el que nos proporciona la tabla de ejemplo ‘mtcars‘ de la extraeremos nuestra información:

Tras ello procederemos a cargar los datos de muestra correspondientes a cada uno de los modelos de vehículos cuya información se recoge en ‘mtcars‘. Para luego, aplicar el modelo de regresión lineal utilizando ‘mpg‘ y ‘wt‘ como variables dependiente e independiente, respectivamente. Esta operación la definiremos usando la sintaxis de ‘R‘ (‘ linear_model <- lm(mpg ~ wt, data = mtcars)‘). Aplicado el modelo, obtendremos los datos resumidos del mismo mediante la función ‘summary()‘ (también en ‘R‘):

Como se puede apreciar, una vez hecha la regresión, volveremos a convertir los datos obtenidos en un dataframe de pandas de modo que podamos imprimirlos en nuestro editor de Python mediante la función ‘print()‘:

Finalmente, pasaremos a mostrar la relación (inversa en este caso) entre ambas variables mediante un gráfico de dispersión al que incorporaremos la línea de regresión. Dicho grafico lo generaremos, usando nuevamente, la sintaxis de ‘R‘ y su librería para graficas ‘ggplot2‘:

OUTPUT:

Relación entre la eficacia del combustible (mpg) y el peso del vehículo (wt).

CONCLUSIÓN:

Para terminar, el uso de ‘R‘ en combinación con Python a través de la interfaz ‘rpy2‘ ofrece una herramienta de gran utilidad para el análisis de datos y su visualización. En este artículo, hemos demostrado cómo cargar datos, realizar un análisis de regresión lineal y generar gráficos de dispersión con líneas de regresión utilizando el conjunto de datos ‘mtcars‘. Por su parte, la capacidad de integrar funciones estadísticas y de visualización de ‘R‘ con la flexibilidad y facilidad de uso de Python abre un amplio abanico de posibilidades para investigadores y analistas de datos, permitiéndoles aprovechar lo mejor de ambos mundos para abordar sus problemas de análisis de datos de manera eficiente y efectiva.

Enlace a la pagina oficial de ‘R’:

https://www.r-project.org

Saludos.