
La red adaline es un modelo básico de Machine Learning utilizado principalmente para tareas de clasificación. En este artículo, aprenderás a implementar una red ADALINE utilizando normalización de datos para mejorar su rendimiento, junto con ejemplos de código y gráficos de salida.
Pasos para implementar una red ADALINE
- Preparar los datos
- Usaremos un conjunto de datos para tareas de clasificación binaria. También aplicaremos normalización para garantizar que los datos tengan una escala uniforme.
- Definir el modelo ADALINE
- Implementaremos la red ADALINE definiendo sus pesos, función de activación y el criterio de error.
- Entrenar la red ADALINE
- Usaremos el algoritmo de descenso de gradiente para actualizar los pesos y reducir el error.
- Visualizar los resultados
- Generaremos gráficos para evaluar el rendimiento y la convergencia del modelo.
Código para implementar ADALINE
A continuación, se presenta un ejemplo funcional en Python.
from sklearn import datasets
import numpy as np
# Cargar datos
iris = datasets.load_iris()
X = iris.data[0:100, [0, 2]] # Seleccionar características
Y = iris.target[0:100]
Y = np.where(Y == 0, -1, 1) # Convertir etiquetas
# Normalizar datos
X = (X - np.mean(X, axis=0)) / np.std(X, axis=0)
# Inicializar pesos
W = np.random.normal(loc=0.0, scale=0.01, size=X.shape[1] + 1)
# Funciones auxiliares
def aplicacion_lineal(X, W):
return np.dot(X, W[:-1]) + W[-1]
def actualizacion_pesos(X, Y, W, eta):
predicciones = aplicacion_lineal(X, W)
error = Y - predicciones
W[:-1] += eta * np.dot(X.T, error)
W[-1] += eta * np.sum(error)
return W
# Entrenamiento
eta = 0.01
n_iteraciones = 50
for _ in range(n_iteraciones):
W = actualizacion_pesos(X, Y, W, eta)
Explicación del código
1. Clase PresentarDatos
Esta clase está diseñada para:
- Visualizar un gráfico de dispersión de los datos de entrada (iris dataset).
- Dibujar la recta de decisión que separa las dos clases en los datos.
- Representar la función de coste para evaluar el rendimiento del modelo a lo largo de las iteraciones.
Métodos principales:
- dibujarGraficaDispersion: Crea un gráfico de dispersión para visualizar dos clases diferentes del conjunto de datos.
- dibujarRecta: Dibuja una recta de separación basada en los pesos (WWW) calculados por el modelo.
- funcionCoste: Grafica cómo varía el coste en función de las iteraciones del entrenamiento.
- pintarDatos: Llama a los métodos anteriores para generar todas las visualizaciones.
2. Funciones auxiliares
- getDatos: Carga las primeras 100 muestras del conjunto de datos de Iris (con características específicas) y ajusta las etiquetas para trabajar con -1 y 1 (necesario para Adaline).
- setUmbral: Modifica el conjunto de datos para incluir un término constante (bias o umbral) con valor 1 en la tercera columna de las entradas.
- aplicacionLineal: Calcula el producto escalar entre los datos de entrada (XXX) y los pesos (WWW), añadiendo el término de umbral.
- funcionActivacion: Devuelve directamente el valor de entrada (en este caso, la función es lineal).
- vectorGradiente: Calcula el gradiente del error para ajustar los pesos durante el entrenamiento.
3. Entrenamiento del modelo
- Función entrenamientoAdaline:
- Ajusta los pesos (WWW) iterativamente minimizando el error cuadrático medio.
- Utiliza la técnica de gradiente descendente para actualizar los pesos.
- Guarda el coste total en cada iteración para analizar el rendimiento del modelo.
4. Ejecución
- Obtención de datos: Los datos son cargados del conjunto Iris y procesados para adaptarse al modelo.
- Inicialización de pesos y parámetros:
- Los pesos (WWW) se inicializan de forma aleatoria.
- Se definen la tasa de aprendizaje (etaetaeta) y el número de iteraciones.
- Entrenamiento: El modelo es entrenado mediante Adaline.
- Visualización:
- Se crea una instancia de la clase PresentarDatos.
- Se generan los gráficos de dispersión, la recta de decisión y la función de coste.
Resultados esperados
- Un gráfico de dispersión que muestra las dos clases del conjunto de datos (etiquetadas como “cero” y “uno”).
- Una recta de decisión que separa las clases en el espacio de características.
- Un gráfico de la función de coste que indica la convergencia del modelo a medida que se entrenan los pesos.
Este código combina técnicas de aprendizaje supervisado (Adaline) con visualizaciones útiles para entender cómo se ajusta el modelo a los datos.
Gráfico de la convergencia del error y otro de la frontera de decisión para analizar el rendimiento del modelo:




