Mostrar los tags: r

Mostrando del 61 al 70 de 3.145 coincidencias
Se ha buscado por el tag: r
Imágen de perfil

ButtonOn-Off


Visual Basic

Publicado el 5 de Diciembre del 2023 por Leonardo
998 visualizaciones desde el 5 de Diciembre del 2023
Les traigo un OCX simple, que les servirá para representar el típico estado On-Off.

Button-OnOff-OCX

Reacciona al hacer un Click sobre el elemento, llamando al Evento Change. Desde ahí capturan el valor (TRUE ó FALSE) y realizar la acción que quieran de acuerdo a éso.

Les adjunto el código fuente, junto al OCX compilado. Espero les sea de utilidad.
Imágen de perfil

Programa para aplicación de filtros, en archivos de vídeo.


Python

estrellaestrellaestrellaestrellaestrella(4)
Actualizado el 20 de Noviembre del 2023 por Antonio (77 códigos) (Publicado el 24 de Mayo del 2021)
13.315 visualizaciones desde el 24 de Mayo del 2021
El presente programa se encarga de aplicar filtros sobre los fotogramas de un archivo de video empleando diferentes funciones. El programa realiza el filtrado frame a frame para a continuación generar un nuevo video con la secuencia de frames procesados (aplicando el frame rate del vídeo original). También usa el software "ffmpeg" para copiar el audio del vídeo original y añadirlo al vídeo resultante.

USO: Primeramente seleccionaremos el vídeo a filtrar mediante el botón "SEARCH". Una vez seleccionado iniciaremos el proceso con "START FILTERING" con el que empezaremos seleccionando la ubicación del nuevo vídeo, para a continuación iniciar el proceso (NOTA: La ruta del directorio de destino no deberá contener espacios en blanco). El proceso de filtrado podrá ser cancelado medinate el botón "CANCEL".
PARA CUALQUIER DUDA U OBSERVACIÓN USEN LA SECCIÓN DE COMENTARIOS.

vf
Imágen de perfil

Juego de la Serpiente, en ASCII (versión nueva)


Python

estrellaestrellaestrellaestrellaestrella(2)
Actualizado el 15 de Noviembre del 2023 por Antonio (77 códigos) (Publicado el 4 de Noviembre del 2020)
6.400 visualizaciones desde el 4 de Noviembre del 2020
Nueva versión del juego de la serpiente con caracteres ASCII. Esta versión se diferencia de las dos anteriores (que pueden verse en mi lista de códigos) en que se acompaña de un archivo (de nombre "hiScore") que irá almacenando de modo permanente, la puntuación máxima alcanzada por el jugador.

BOTONES:
Mover serpiente: Botones de dirección
Pause y reanudar partida pausada : Barra espaciadora.
Finalizar partida en curso: tecla "q"
PARA CUALQUIER PROBLEMA, NO DUDEN EN COMUNICÁRMELO.

5ede3abe2db24-sg4
5ee33cfe068e9-sgm
sms
Imágen de perfil

Sencilla red neuronal. Repaso.


Python

Publicado el 11 de Noviembre del 2023 por Hilario (145 códigos)
540 visualizaciones desde el 11 de Noviembre del 2023
descarga
descarga-1

********************************************************************************************************************
Aula_18_B.py
******************************************************************************************************************
Se trata de una sencilla red neuronal, ya resuelta en otro ejercicio,
utilizando la librería keras. Ahora lo planteamos de nuevo, utilizando
solamente las librerias numpy y matplotlib.

Se trataba de una red neuronal con este esquema:

input_size = 1
hidden_layer1_size = 8
hidden_layer2_size = 8
output_size = 1


Una neurona de entrada, con dos capas ocultas intermedias de 8 neuronas
cada una, y 1 neurona de salida.

Los datos generales y sencillos de la idea son los siguientes:
Se trata de cinco hermanos que a los 30 años median lo siguiente:
Antonio 1,70 cm. Pedrito 1,75. Juanito 1,78 . Carlitos 1,69. Ignacio 1,87.
Ramón 1,79.
Hace 6 meses ha nacido Santiaguito.
Cuales son las previsiones de estatura
cuando también tenga 30 años. Haremos graficas de salida de columnas.
También haremos gráficas de costos MSE, con salida imprimida por consola
de los valores de los mismos por cada iteración.
También se imprime en la salida la previsión que hace la red neuronal
de la estatura futura

Los hiperparámetros que adoptamos, son los siguientes:
learning_rate = 0.01
epochs = 40

Se puede jugar con los mismos con el fin de afinar los
resultados.
*************************************************************
Este ejercicio ha sido realizado en una plataforma Linux.
Ubuntu 20.04.6 LTS.
Se utiliza el editor Sublime text
*********************************************************
Ejecucion bajo consola linux con el comando:
python3 Aula_18_B.py
Imágen de perfil

Clasificación_Datos_por_Regresión Logística


Python

Publicado el 30 de Octubre del 2023 por Hilario (145 códigos)
660 visualizaciones desde el 30 de Octubre del 2023
Presentamos para nuestra aula, un sencillo ejercicio propuesto, para clasificar una serie de datos sintéticos, utilizando el sistema de regresión logística.
El ejercicio, es el siguiente:
Ejercicio_Clas_Regre_Log-Aula-28.py

La clasificación de datos por regresión logística es una técnica de aprendizaje automático que se utiliza para predecir la pertenencia de un conjunto de datos a una o más clases. Aunque el nombre "regresión" logística incluye la palabra "regresión", este enfoque se utiliza para problemas de clasificación en lugar de regresión.

La regresión logística se emplea cuando se desea predecir la probabilidad de que una observación pertenezca a una categoría o clase específica, generalmente dentro de un conjunto discreto de clases. Por lo tanto, es una técnica de clasificación que se utiliza en problemas de clasificación binaria (dos clases) y clasificación multiclase (más de dos clases). Por ejemplo, se puede usar para predecir si un correo electrónico es spam (clase positiva) o no spam (clase negativa) o para clasificar imágenes en categorías como gatos, perros o pájaros.

La regresión logística utiliza una función logística (también conocida como sigmoide) para modelar la probabilidad de pertenecer a una clase particular en función de variables de entrada (características). La función sigmoide tiene la propiedad de que produce valores entre 0 y 1, lo que es adecuado para representar probabilidades. El modelo de regresión logística utiliza coeficientes (pesos) para ponderar las características y calcular la probabilidad de pertenencia a una clase.

Durante el entrenamiento, el modelo busca ajustar los coeficientes de manera que las probabilidades predichas se ajusten lo más cerca posible a las etiquetas reales de los datos de entrenamiento. Una vez que se ha entrenado el modelo, se puede utilizar para predecir la probabilidad de pertenencia a una clase para nuevos datos y tomar decisiones basadas en esas probabilidades, como establecer un umbral para la clasificación en una clase específica.
*************************************************************************************************************
Los pasos que realizamos en el ejercicio, son los siguientes:

1-Generamos datos sintéticos donde la clase se determina por la suma de las dos características.
2-Implementamos la regresión logística desde cero sin el uso de scikit-learn, incluyendo el cálculo de 3-gradientes y la actualización de pesos.
4-Dibujamos los datos de entrada en un gráfico, junto con la línea de decisión que separa las clases.


En resumen, la regresión logística es una técnica de clasificación que modela las probabilidades de pertenencia a clases utilizando la función sigmoide y es ampliamente utilizada en una variedad de aplicaciones de aprendizaje automático.
Imágen de perfil

Ejercicio_Aula_23_Momentum


Python

Publicado el 26 de Octubre del 2023 por Hilario (145 códigos)
446 visualizaciones desde el 26 de Octubre del 2023
python3 Ejercicio_Aula_23_Momentum.py

Sencillo ejercicio sobre un descenso de gradiente con momento, (Gradient Descent with Momentum en inglés).
Se trata de aplicar este algoritmo a una funcion parabolica del tipo: f(x) = x^2 / 6.
Cuya derivada es:x**2 / 6.
El descenso de gradiente con momento es una variante del algoritmo de descenso de gradiente utilizado en la optimización y entrenamiento de modelos de aprendizaje automático, particularmente en el contexto de redes neuronales y problemas de optimización no convexos. Su objetivo es acelerar la convergencia del descenso de gradiente y ayudar a evitar quedarse atrapado en óptimos locales.

La principal diferencia entre el descenso de gradiente con momento y el descenso de gradiente estándar es la adición de un término de "momentum" o impulso. En el descenso de gradiente estándar, en cada iteración, el gradiente actual se utiliza directamente para actualizar los parámetros del modelo. En cambio, en el descenso de gradiente con momento, se mantiene un promedio ponderado exponencial de los gradientes anteriores y se utiliza ese promedio para actualizar los parámetros.

El objetivo del término de momento es suavizar las actualizaciones de los parámetros y reducir las oscilaciones que pueden ocurrir cuando el gradiente varía significativamente en diferentes direcciones. Esto puede ayudar a acelerar la convergencia y a sortear barreras o mínimos locales en la función de costo

En este sencillo ejercicio que propongo, en vez de utilizar datos sintéticos de caráctear aleatorio de entrada, lo vamos a aplicar a una función parabólica.


descarga
descarga-1
Imágen de perfil

Descenso Gradiente tipo Nesterov


Python

Publicado el 18 de Octubre del 2023 por Hilario (145 códigos)
405 visualizaciones desde el 18 de Octubre del 2023
Sencillo ejemplo de un descenso de gradiente del tipo Nesterov.

Descen_Grad_Nesterov_Aula_B_28_18_OCT_github.py
----------------------------------------------------------------------------------------------------

El descenso de gradiente tipo Nesterov, también conocido como el "descenso de gradiente acelerado de Nesterov" o "NAG" por sus siglas en inglés (Nesterov Accelerated Gradient Descent), es una variante del algoritmo de optimización de descenso de gradiente utilizado en el entrenamiento de redes neuronales y en la optimización de funciones en el aprendizaje automático.

Fue propuesto por Yurii Nesterov en 1983 y es una mejora con respecto al descenso de gradiente estándar, especialmente en términos de velocidad de convergencia. El descenso de gradiente Nesterov se diferencia del descenso de gradiente tradicional en cómo se actualizan los parámetros del modelo.

En el descenso de gradiente Nesterov, en lugar de calcular el gradiente de la función de costo en la posición actual de los parámetros, se calcula el gradiente en una posición ligeramente adelantada de los parámetros. Luego, se utiliza ese gradiente para realizar la actualización de los parámetros. Esto tiene el efecto de "mirar hacia adelante" antes de dar el paso de actualización, lo que puede ayudar a reducir la oscilación y mejorar la velocidad de convergencia.

La fórmula para la actualización de los parámetros en el descenso de gradiente tipo Nesterov es la siguiente:

v = γ * v - η * ∇J(θ - γ * v)
θ = θ + v


Donde:

θ son los parámetros del modelo.
∇J(θ - γ * v) es el gradiente de la función de costo evaluado en la posición adelantada de los parámetros.
v es una especie de "momentum" que acumula la velocidad de los pasos anteriores.
η es la tasa de aprendizaje.
γ es un hiperparámetro que controla la influencia del momentum en la actualización.
En resumen, el descenso de gradiente tipo Nesterov es una técnica de optimización que tiene la ventaja de converger más rápidamente que el descenso de gradiente estándar, lo que lo hace especialmente útil en el entrenamiento de redes neuronales profundas y otros problemas de optimización en el aprendizaje automático.



Imágen de perfil

Clasificacion de Datos Arboles de Decision


Python

Publicado el 17 de Octubre del 2023 por Hilario (145 códigos)
644 visualizaciones desde el 17 de Octubre del 2023
CuadernoAula-B-28-OCT-18.py
-----------------------------------------------------------------------------
La clasificación de datos mediante árboles de decisiones es un método de aprendizaje automático que se utiliza para categorizar o etiquetar datos en diferentes clases o categorías. Es una técnica de modelado predictivo que se basa en la creación de un "árbol" de decisiones, donde cada nodo interno del árbol representa una pregunta o una prueba sobre una característica específica de los datos, y las ramas que salen de ese nodo conducen a diferentes resultados o decisiones basadas en el valor de esa característica. Los nodos hoja del árbol representan las categorías o clases en las que se divide el conjunto de datos.

El proceso de clasificación a través de árboles de decisión implica:

Construcción del árbol: Se inicia con un nodo raíz que representa todo el conjunto de datos. Luego, se selecciona una característica y un umbral que se utilizará para dividir los datos en dos subconjuntos. Este proceso se repite recursivamente en cada subconjunto hasta que se alcanza un criterio de parada, como un tamaño máximo de profundidad del árbol, una cantidad mínima de muestras en los nodos hoja, o una impureza mínima.

Selección de características: En cada paso de división, se elige la característica que mejor separa los datos, lo que se logra al minimizar alguna métrica de impureza, como el índice de Gini o la entropía. La característica y el umbral que minimizan la impureza se utilizan para dividir los datos en dos ramas.

Predicción: Una vez construido el árbol, se utiliza para hacer predicciones sobre datos nuevos. Los datos nuevos se introducen en el árbol, siguiendo las ramas que corresponden a las características de esos datos, hasta llegar a un nodo hoja que representa la clase predicha.

Los árboles de decisión son atractivos porque son interpretables y fáciles de visualizar. Sin embargo, pueden ser propensos al sobreajuste (overfitting), especialmente si se construyen árboles muy profundos. Para abordar este problema, se pueden utilizar técnicas como la poda (pruning) o el uso de bosques aleatorios (random forests) que combinan múltiples árboles para mejorar la precisión y reducir el sobreajuste.

En resumen, la clasificación de datos mediante árboles de decisión es una técnica poderosa y ampliamente utilizada en aprendizaje automático para tareas de clasificación, donde el objetivo es predecir la categoría o clase a la que pertenecen los datos de entrada en función de sus características.
Imágen de perfil

Relieve 3D. Descenso de gradiente.


Python

Publicado el 15 de Octubre del 2023 por Hilario (145 códigos)
872 visualizaciones desde el 15 de Octubre del 2023
DesGraMul_Aula_B_228_15_oct_Github.ipynb

Este ejercicio trata de realizar un descenso de gradiente múltiple en un contexto de gráficos 3D a partir de un punto (x, y) específico. El descenso de gradiente múltiple es una técnica de optimización utilizada para encontrar los mínimos locales o globales de una función multivariable.

Aquí hay una descripción general de cómo puedes abordar este problema:

Función Objetivo: Primero, necesitas tener una función objetivo que desees optimizar en el contexto 3D. Supongamos que tienes una función f(x, y) que deseas minimizar.

Derivadas Parciales: Calcula las derivadas parciales de la función con respecto a x y a y. Estas derivadas parciales te dirán cómo cambia la función cuando modificas x e y.

Punto Inicial: Comienza en un punto (x0, y0) dado. Este será tu punto de inicio.

Tasa de Aprendizaje: Define una tasa de aprendizaje (alfa), que es un valor pequeño que controla cuánto debes moverte en cada iteración del descenso de gradiente. La elección de alfa es crucial y puede requerir ajustes.

Iteraciones: Itera a través de las siguientes fórmulas hasta que converjas a un mínimo:

Nuevo x: x1 = x0 - alfa * (∂f/∂x)
Nuevo y: y1 = y0 - alfa * (∂f/∂y)


Condición de Parada: Puedes definir una condición de parada, como un número máximo de iteraciones o un umbral de convergencia (por ejemplo, cuando las derivadas parciales son muy cercanas a cero).

Resultados: Al final de las iteraciones, obtendrás los valores de (x, y) que minimizan la función en el contexto 3D.

Es importante recordar que el éxito del descenso de gradiente depende de la elección adecuada de la tasa de aprendizaje, la función objetivo y las condiciones iniciales. Además, en problemas 3D más complejos, es posible que desees considerar algoritmos de optimización más avanzados, como el descenso de gradiente estocástico o métodos de optimización de segundo orden.

Este es un enfoque general para el descenso de gradiente múltiple en un contexto 3D. Los detalles pueden variar según la función objetivo y las necesidades específicas de tu aplicación.
descarga