INTRODUCCIÓN AL APRENDIZAJE AUTOMÁTICO: LA CLASIFICACIÓN, UN TIPO COMÚN DE PROBLEMA DE APRENDIZAJE AUTOMÁTICO.

 


                                    DIPLOMADO EN EN INTELIGENCIA ARTIFICIAL

                                                                   MODULO IV

              APRENDIZAJE AUTOMATICO CON PYTHON Y ASISTENTES INTELIGENTES

                         Ortega Irusta Elsy Nilda

                         Este es el enlace con Chat GPT:

                        https://chat.openai.com/c/fc1e1960-8e83-4049-b51f-57c36e4b5686

INTRODUCCIÓN AL APRENDIZAJE AUTOMÁTICO: LA CLASIFICACIÓN, UN TIPO COMÚN DE PROBLEMA DE APRENDIZAJE AUTOMÁTICO.

Vamos a aplicar los componentes del pensamiento computacional paso a paso para desarrollar un ejemplo introductorio al aprendizaje automático (machine learning) con Python. En este caso, nos enfocaremos en la clasificación, que es un tipo común de problema de aprendizaje automático.

PASO 1: DESCOMPOSICIÓN

Descompongamos el problema en partes más pequeñas:

- Entrada: Conjunto de datos que contiene características (atributos) de elementos.

-Proceso (Reglas en programación tradicional): Establecer reglas manuales para clasificar los elementos en categorías.

- Salida: Categoría o etiqueta asignada a cada elemento basándose en las reglas establecidas.

PASO 2: RECONOCIMIENTO DE PATRONES

En la programación tradicional, se definen reglas explícitas para convertir las entradas en salidas. En el aprendizaje automático, buscamos patrones en los datos para establecer reglas automáticamente.

Paso 3: Abstracción

En lugar de trabajar con reglas detalladas y específicas, en el aprendizaje automático trabajamos con modelos abstractos que generalizan patrones a partir de datos.

Ejemplo:

Supongamos que queremos clasificar correos electrónicos como "spam" o "no spam" basándonos en ciertas características de los correos.

PROGRAMACIÓN TRADICIONAL:

1. Entrada: Contenido del correo electrónico, remitente, longitud del correo, etc.

2. Proceso (Reglas): Si contiene ciertas palabras clave, si el remitente es desconocido, si es demasiado largo, etc., entonces es "spam".

3. Salida: Etiqueta de "spam" o "no spam".

APRENDIZAJE AUTOMÁTICO:

1. Entrada: Conjunto de datos de correos electrónicos etiquetados como "spam" o "no spam".

2. Proceso (Modelo): Algoritmo de aprendizaje automático analiza los datos para encontrar patrones y crear un modelo.

3. Salida: El modelo puede predecir si un nuevo correo es "spam" o "no spam" basándose en las características del correo.

APRENDIZAJE SUPERVISADO, NO SUPERVISADO Y REFORZADO:

1. Aprendizaje Supervisado:

   - Definición: El modelo se entrena utilizando un conjunto de datos que ya contiene etiquetas (salidas deseadas).

   - Ejemplo: Entrenar un modelo con correos electrónicos etiquetados como "spam" o "no spam".

2. Aprendizaje No Supervisado:

   - Definición: El modelo se entrena sin etiquetas, y se espera que descubra patrones por sí mismo.

   - Ejemplo: Agrupar correos electrónicos en categorías sin conocer las etiquetas de "spam" o "no spam".

3. Aprendizaje Reforzado:

   - Definición: El modelo aprende a través de la interacción con un entorno, recibiendo recompensas o penalizaciones.

   - Ejemplo: Un modelo que juega un juego y recibe recompensas o penalizaciones basadas en sus acciones.

Componentes clave:

- Modelos: Representan la relación entre las entradas y las salidas.

- Algoritmos de Aprendizaje: Definen cómo se ajusta el modelo a los datos.

- Entrenamiento: Proceso de ajustar el modelo a los datos de entrenamiento.

-Validación: Evaluar el rendimiento del modelo en datos no utilizados durante el entrenamiento.

Esta es mi interaccion con Google Colab.

# Ejemplo simple de aprendizaje supervisado con scikit-learn
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score

# Entrada y Salida (etiquetas)
X = features_del_correo
y = etiquetas_spam_no_spam

# Dividir los datos en conjuntos de entrenamiento y prueba
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Crear un modelo (algoritmo KNN en este caso)
modelo = KNeighborsClassifier(n_neighbors=3)

# Entrenar el modelo
modelo.fit(X_train, y_train)

# Realizar predicciones en el conjunto de prueba
predicciones = modelo.predict(X_test)

# Evaluar la precisión del modelo
precision = accuracy_score(y_test, predicciones)
print(f'Precisión del modelo: {precision}')

DIFERENTES GRAFICOS

Este es un ejemplo básico de aprendizaje supervisado utilizamos el algoritmo k-Nearest Neighbors (KNN) en Python con scikit-learn. El código utiliza un conjunto de datos etiquetado para entrenar el modelo y luego evalúa la precisión del modelo en un conjunto de datos de prueba.

código en Python utilizando la biblioteca `matplotlib` para crear diferentes tipos de gráficos. Puedes ejecutar este código en tu entorno de Python local.

GRÁFICO DE DISPERSIÓN PARA VISUALIZAR DATOS DE ENTRADA:

Para proporcionarte gráficos, es importante contar con datos específicos y un conjunto de características. Dado que no tenemos datos reales para tu problema, generaré gráficos de ejemplo utilizando datos sintéticos y un modelo simple. En este caso, utilizaremos el conjunto de datos Iris, que es un conjunto de datos muy conocido en el ámbito del aprendizaje automático.

Esta es mi interaccion con google colab

import matplotlib.pyplot as plt

import seaborn as sns
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score, confusion_matrix

# Cargar el conjunto de datos Iris
iris = load_iris()
X, y = iris.data, iris.target

# Dividir los datos en conjuntos de entrenamiento y prueba
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Crear un modelo (algoritmo KNN en este caso)
modelo = KNeighborsClassifier(n_neighbors=3)

# Entrenar el modelo
modelo.fit(X_train, y_train)

# Realizar predicciones en el conjunto de prueba
predicciones = modelo.predict(X_test)

# Evaluar la precisión del modelo
precision = accuracy_score(y_test, predicciones)
print(f'Precisión del modelo: {precision}')

# Matriz de confusión
cm = confusion_matrix(y_test, predicciones)
sns.heatmap(cm, annot=True, fmt='d', cmap='Blues', xticklabels=iris.target_names, yticklabels=iris.target_names)
plt.xlabel('Predicciones')
plt.ylabel('Valores reales')
plt.title('Matriz de Confusión')
plt.show()


Este código utiliza el conjunto de datos Iris para entrenar un modelo KNN y evaluar su rendimiento. Además, se genera una matriz de confusión para visualizar las predicciones del modelo en comparación con los valores reales.

Ten en cuenta que estos gráficos son ilustrativos y dependen de los datos específicos y del modelo utilizado. En un escenario de la vida real, los gráficos pueden variar según el problema y los datos.

Ejemplo práctico para predecir las calificaciones de los estudiantes en función de las horas de estudio. En este caso, aplicaremos la regresión lineal para crear un modelo predictivo.

Esta es mi interaccion con google colab

import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error

# Generar datos sintéticos
np.random.seed(42)
horas_estudio = 10 * np.random.rand(100, 1)
calificaciones = 2 * horas_estudio + 5 + np.random.randn(100, 1)

# Dividir los datos en conjuntos de entrenamiento y prueba
horas_train, horas_test, calif_train, calif_test = train_test_split(horas_estudio, calificaciones, test_size=0.2, random_state=42)

# Crear un modelo de regresión lineal
modelo = LinearRegression()

# Entrenar el modelo
modelo.fit(horas_train, calif_train)

# Realizar predicciones en el conjunto de prueba
predicciones = modelo.predict(horas_test)

# Visualizar los datos y la línea de regresión
plt.scatter(horas_test, calif_test, color='blue', label='Datos reales')
plt.plot(horas_test, predicciones, color='red', linewidth=3, label='Regresión Lineal')
plt.xlabel('Horas de Estudio')
plt.ylabel('Calificaciones')
plt.title('Regresión Lineal: Predicción de Calificaciones en función de las Horas de Estudio')
plt.legend()
plt.show()

# Evaluar el modelo
mse = mean_squared_error(calif_test, predicciones)
print(f'Error cuadrático medio (MSE): {mse}')

En este ejemplo, generamos datos sintéticos donde lascalificaciones de los estudiantes están relacionadas linealmente con las horas de estudio. Luego, dividimos los datos en conjuntos de entrenamiento y prueba, creamos un modelo de regresión lineal, lo entrenamos y realizamos predicciones en el conjunto de prueba. Finalmente, visualizamos los resultados y evaluamos el modelo utilizando el Error Cuadrático Medio (MSE).

La gráfica mostrarápuntos azules que representan las calificaciones reales en función de las horas de estudio, y la línea roja representará la regresión lineal ajustada por el modelo.

El MSE proporcionará una medida cuantitativa de la precisión del modelo.                                 

Conclusiones y reflexiones: El aprendizaje automático (machine learning) con Python. Aplicando los componentes del pensamiento computacional fue una experiencia muy buena y de gran importancia,lo que me motiva en la noble

tarea de la docencia amejorar nuestra práctica docente empleado estas nuevas

herramientas.

Conclusiones y reflexiones: Al aplicar los componentes del pensamiento computacional

paso a paso y desarrollar un ejemplo introductorio al aprendizaje automático

(machine learning) con Python, enfocándonos en la clasificación, como un  problema común

del aprendizaje automático. Presentamos un ejemplo para predecir las calificaciones

de los estudiantes ´en función de las horas de estudio, aplicando la regresión lineal. Todas estas herramientas para mí son nuevas y estoy segura que se pueden implementar

en la práctica docente.

Comentarios

Entradas populares de este blog

DIAGNÓSTICO EN PERIODONTITIS EN ODONTOLOGÍA: APLICACIÓN DEL ALGORITMO NAIVE BAYES EN APRENDIZAJE SUPERVISADO.

DESARROLLANDO UN DATA SET EN PYTHON. DATOS DE ESTUDIANTES: NOMBRES EDADES Y CALIFICACIONES.

MODELO PARA PREDECIR LAS CALIFICACIONES DE LOS ESTUDIANTES EN FUNCIÓN DE LAS HORAS DE ESTUDIO.