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

 

                                         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/d0b91c8e-202f-42d4-aee5-2c9ef65e23a0

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

Para desarrollar un ejemplo que aplique paso a paso los componentes del pensamiento computacional en Python, así como para discutir la diferencia entre Aprendizaje Supervisado y No Supervisado, y sus fundamentos teóricos, podemos tomar el siguiente enfoque:

Ejemplo de Aprendizaje Supervisado en Python:

Paso 1: Definición del Problema

Supongamos que queremos crear un modelo para predecir las calificaciones de los estudiantes en función de las horas de estudio.

Paso 2: Recopilación de Datos.

Esta es mi interaccion con google colab

# Datos de entrenamiento (horas de estudio, calificaciones)
datos_entrenamiento = [(2, 85), (3, 90), (1, 80), (4, 95), (5, 97)]

# Separar las entradas y salidas
horas_estudio = [x[0] for x in datos_entrenamiento]
calificaciones = [x[1] for x in datos_entrenamiento]

Paso 3: Selección de Algoritmo.

Elegiremos un modelo de regresión lineal para predecir las calificaciones.

Esta es mi interaccion con google colab

from sklearn.linear_model import LinearRegression

# Crear modelo

modelo = LinearRegression()

# Entrenar modelo

modelo.fit([[hora] for hora in horas_estudio], calificaciones)

Paso 4: Evaluación del Modelo.
Esta es mi interaccion con google colab

# Datos de prueba
datos_prueba = [2.5, 3.5, 4.5]

# Realizar predicciones
predicciones = modelo.predict([[hora] for hora in datos_prueba])

print("Predicciones:", predicciones)

Ejemplo de Aprendizaje No Supervisado en Python:

Paso 1: Definición del Problema

Supongamos que queremos agrupar a los estudiantes

en función de sus patrones de estudio.

Paso 2: Recopilación de Datos

Esta es mi interaccion con google colab

# Datos de estudio (horas de estudio)
datos_estudio = [2, 3, 1, 4, 5, 2.5, 3.5, 4.5]

# No hay salidas en el aprendizaje no supervisado
# Datos de estudio (horas de estudio)
datos_estudio = [2, 3, 1, 4, 5, 2.5, 3.5, 4.5]

# No hay salidas en el aprendizaje no supervisado

Paso 3: Selección de Algoritmo

Elegiremos un algoritmo de clustering como K-Means.

Esta es mi interaccion con google colab

from sklearn.cluster import KMeans

# Crear modelo
modelo_cluster = KMeans(n_clusters=2)

# Entrenar modelo
modelo_cluster.fit([[hora] for hora in datos_estudio])

/usr/local/lib/python3.10/dist-packages/sklearn/cluster/_kmeans.py:870: FutureWarning: The default value of `n_init` will change from 10 to 'auto' in 1.4. Set the value of `n_init` explicitly to suppress the warning

  warnings.warn(

Paso 4: Evaluación del Modelo

Esta es mi interaccion con google colab

# Etiquetas de clúster para cada dato
etiquetas = modelo_cluster.labels_

print("Etiquetas de Clúster:", etiquetas)

DIFERENCIAS CONCEPTUALES:

Aprendizaje Supervisado:

Definición: El modelo se entrena con ejemplos etiquetados (entradas y salidas conocidas).

- Ejemplos de Algoritmos: Regresión lineal, regresión logística, máquinas de soporte vectorial.

- Selección: Se utiliza cuando se tiene un conjunto de datos etiquetado y se desea predecir salidas para nuevas entradas.

Aprendizaje No Supervisado:

-Definición: El modelo se entrena sin ejemplos etiquetados, buscando patrones o estructuras en los datos.

- Ejemplos de Algoritmos: K-Means, agrupamiento jerárquico,

Análisis de Componentes Principales (PCA).

- Selección: Se utiliza cuando no hay salidas etiquetadas disponibles y se busca explorar la estructura subyacente de los datos.

RESUMEN:

- Modelos: En el aprendizaje supervisado, se entrena un modelo para predecir salidas conocidas. En el no supervisado, se busca estructuras o patrones en los datos sin salidas conocidas.

- Algoritmos: Los algoritmos de regresión y clasificación son comunes en el aprendizaje supervisado, mientras que el agrupamiento y la reducción de dimensionalidad son comunes en el no supervisado.

- Entrada/Salida: En la programación tradicional, se proporcionan reglas explícitas. En el aprendizaje automático, se aprenden las reglas a partir de los datos.

Gráficos de aprendizaje supervisado.

Esta es mi interaccion con google colab

import matplotlib.pyplot as plt
import numpy as np
from sklearn.linear_model import LinearRegression

# Datos de entrenamiento (horas de estudio, calificaciones)
datos_entrenamiento = [(2, 85), (3, 90), (1, 80), (4, 95), (5, 97)]

# Separar las entradas y salidas
horas_estudio = [x[0] for x in datos_entrenamiento]
calificaciones = [x[1] for x in datos_entrenamiento]

# Crear modelo
modelo = LinearRegression()

# Entrenar modelo
modelo.fit([[hora] for hora in horas_estudio], calificaciones)

# Datos de prueba
datos_prueba = np.arange(1, 6, 0.1)
predicciones = modelo.predict(datos_prueba.reshape(-1, 1))

# Gráfico de datos y regresión lineal
plt.scatter(horas_estudio, calificaciones, label='Datos de Entrenamiento')
plt.plot(datos_prueba, predicciones, label='Regresión Lineal', color='red')
plt.xlabel('Horas de Estudio')
plt.ylabel('Calificaciones')
plt.legend()
plt.title('Aprendizaje Supervisado: Regresión Lineal')
plt.show()

Gráfico de histograma de calificaciones
plt.hist(calificaciones, bins=20, edgecolor='black')
plt.xlabel('Calificaciones')
plt.ylabel('Frecuencia')
plt.title('Histograma de Calificaciones')
plt.show()

Gráficos de aprendizaje no supervisado.
Esta es mi interaccion con google colab
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans

# Datos de estudio (horas de estudio)
datos_estudio = [2, 3, 1, 4, 5, 2.5, 3.5, 4.5]

# Crear modelo
modelo_cluster = KMeans(n_clusters=2)

# Entrenar modelo
modelo_cluster.fit([[hora] for hora in datos_estudio])

# Etiquetas de clúster para cada dato
etiquetas = modelo_cluster.labels_

# Gráfico de datos y clústeres
plt.scatter(datos_estudio, [0] * len(datos_estudio), c=etiquetas, cmap='viridis', marker='o')
plt.scatter(modelo_cluster.cluster_centers_, [0] * len(modelo_cluster.cluster_centers_), marker='X', color='red', s=200)
plt.xlabel('Horas de Estudio')
plt.title('Aprendizaje No Supervisado: K-Means Clustering')
plt.show()

import seaborn as sns

# Gráfico de dispersión con colores por cluster
sns.scatterplot(x=datos_estudio, y=[0] * len(datos_estudio), hue=etiquetas, palette='viridis', marker='o')
plt.scatter(modelo_cluster.cluster_centers_, [0] * len(modelo_cluster.cluster_centers_), marker='X', color='red', s=200)
plt.xlabel('Horas de Estudio')
plt.title('Aprendizaje No Supervisado: K-Means Clustering')
plt.show()
Gráfico de Dispersión con Colores por Cluster:

# Calcular la inercia para diferentes números de clústeres inercia = [] for i in range(1, 6): modelo_cluster = KMeans(n_clusters=i) modelo_cluster.fit([[hora] for hora in datos_estudio]) inercia.append(modelo_cluster.inertia_) # Gráfico de codo plt.plot(range(1, 6), inercia, marker='o') plt.xlabel('Número de Clústeres') plt.ylabel('Inercia') plt.title('Método del Codo para K-Means') plt.show()

Diagrama de Codo para Determinar el Número de Clústeres:

# Calcular la inercia para diferentes números de clústeres
inercia = []
for i in range(1, 6):
    modelo_cluster = KMeans(n_clusters=i)
    modelo_cluster.fit([[hora] for hora in datos_estudio])
    inercia.append(modelo_cluster.inertia_)

# Gráfico de codo
plt.plot(range(1, 6), inercia, marker='o')
plt.xlabel('Número de Clústeres')
plt.ylabel('Inercia')
plt.title('Método del Codo para K-Means')
plt.show()


Estos gráficos proporcionan diferentes perspectivas visuales del aprendizaje supervisado y no supervisado. Asegúrate de tener las bibliotecas necesarias instaladas antes de ejecutar los scripts.

Se presenta paso a paso ambos enfoques para un problema de optimización.

Para abordar un problema de optimización, generalmente se busca encontrar los valores de las variables que minimizan o maximizan una función objetivo, sujeta a ciertas restricciones. Aquí, proporcionaré un ejemplo simple de optimización para ambos enfoques: supervisado y no supervisado.

Aprendizaje Supervisado para Problema de

Optimización:

Supongamos que queremos optimizar la producción de una fábrica en función de la cantidad

de recursos utilizados. Tenemos datos históricos que relacionan la cantidad de recursos (entrada) con la producción (salida).

Paso

1: Definición del Problema

Queremos maximizar la producción utilizando la menor cantidad de recursos posible.

Paso

2: Recopilación de Datos.

Mi interaccion con google colab

import numpy as np

# Datos de entrenamiento (recursos, producción)
datos_entrenamiento = [(2, 50), (3, 70), (1, 30), (4, 90), (5, 100)]

# Separar las entradas y salidas
recursos = np.array([x[0] for x in datos_entrenamiento])
produccion = np.array([x[1] for x in datos_entrenamiento])

Paso 3: Selección de Algoritmo

Elegiremos un algoritmo de clustering como K-Means.

import matplotlib.pyplot as plt

# Datos de prueba
recursos_prueba = np.array([2.5, 3.5, 4.5])

# Realizar predicciones
produccion_predicha = modelo.predict(recursos_prueba.reshape(-1, 1))

# Gráfico de regresión
plt.scatter(recursos, produccion, label='Datos de Entrenamiento')
plt.plot(recursos_prueba, produccion_predicha, label='Regresión Lineal', color='red')
plt.xlabel('Recursos')
plt.ylabel('Producción')
plt.legend()
plt.title('Aprendizaje Supervisado para Optimización')
plt.show()


import seaborn as sns

# Etiquetas de clúster para cada dato
etiquetas_cluster = modelo_cluster.labels_

# Gráfico de dispersión con colores por clúster
sns.scatterplot(x=datos_produccion[:, 0], y=datos_produccion[:, 1], hue=etiquetas_cluster, palette='viridis', marker='o')
plt.scatter(modelo_cluster.cluster_centers_[:, 0], modelo_cluster.cluster_centers_[:, 1], marker='X', color='red', s=200)
plt.xlabel('Característica 1')
plt.ylabel('Característica 2')
plt.title('Aprendizaje No Supervisado para Optimización')
plt.show()




Estos scripts generan diferentes tipos de gráficos para visualizar los resultados de los enfoques de aprendizaje supervisado y no supervisado en problemas de optimización. Asegúrate de tener las bibliotecas necesarias instaladas (`numpy`, `matplotlib`, `scikit-learn`, `seaborn`).

Ejemplo de regresión lineal para predecir las calificaciones de los estudiantes en función de las horas de estudio. Incluiré la creación de

datos, la visualización de la regresión lineal y la predicción de calificaciones.

Esta es mi interaccion con google colab
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression

# Crear datos de ejemplo
np.random.seed(42)
horas_estudio = np.random.uniform(1, 5, 20)
calificaciones = 75 + 10 * horas_estudio + np.random.normal(0, 5, 20)

# Visualizar datos
plt.scatter(horas_estudio, calificaciones, label='Datos de Estudio')
plt.xlabel('Horas de Estudio')
plt.ylabel('Calificaciones')
plt.title('Datos de Estudio y Calificaciones')
plt.legend()
plt.show()

# Crear y entrenar el modelo de regresión lineal
modelo_regresion = LinearRegression()
modelo_regresion.fit(horas_estudio.reshape(-1, 1), calificaciones)

# Visualizar la regresión lineal
plt.scatter(horas_estudio, calificaciones, label='Datos de Estudio')
plt.plot(horas_estudio, modelo_regresion.predict(horas_estudio.reshape(-1, 1)), color='red', label='Regresión Lineal')
plt.xlabel('Horas de Estudio')
plt.ylabel('Calificaciones')
plt.title('Regresión Lineal para Predecir Calificaciones')
plt.legend()
plt.show()

# Hacer predicciones
horas_estudio_nuevas = np.array([2.5, 3.5, 4.5]).reshape(-1, 1)
predicciones = modelo_regresion.predict(horas_estudio_nuevas)

print("Predicciones para nuevas horas de estudio:", predicciones)

Este script crea datos de ejemplo, utiliza regresión lineal para modelar la

relación entre las horas de estudio y las calificaciones, visualiza los datos y la regresión lineal, y realiza predicciones para nuevas horas de estudio. Asegúrate de tener la biblioteca `matplotlib` instalada antes de ejecutar el script.

Conclusiones y reflexiones: Es muy importante conocer la diferencia entre el

Aprendizaje Supervisado y aprendizaje No Supervisado, más

los fundamentos teóricos proporcionados.

La visualizacion de estos ejemplos con seguridad me enseñaran a mejorar en el

verdadero significado del aprendizaje con mis estudiantes.







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.