Regresión Logística en Educación Superior
Regresión Logística en Educación Superior.ipynb
Regresión Logística en
Educación Superior
Características de la
Regresión Logística en Educación Superior
Predicción de Éxito
Académico: Podemos utilizar la regresión logística para predecir
si un estudiante pasará o no un curso basándonos en factores como asistencia,
calificaciones previas, participación en actividades, entre otros.
Análisis de Factores de
Riesgo: Identificar factores que contribuyen
significativamente al fracaso académico, como pueden ser la falta de acceso a
recursos o problemas personales.
Personalización del
Aprendizaje: Ayuda a diseñar intervenciones
personalizadas para estudiantes en riesgo, basándose en la probabilidad de su
éxito académico.
Dataset Ficticio para
Educación Superior
Voy a crear un dataset
ficticio con las siguientes columnas:
ID_Estudiante:
Identificador único para cada estudiante.
Edad:
Edad del estudiante.
Promedio_Calificaciones:
Promedio de calificaciones hasta la fecha.
Asistencia:
Porcentaje de asistencia a clases.
Participacion_Actividades:
Indicador de participación en actividades extracurriculares (1 para sí, 0 para
no).
Exitoso:
Variable dependiente, indica si el estudiante pasó el año (1 para sí, 0 para
no).
Creación del Dataset y
Script en Python
Primero, crearé el
dataset y luego te proporcionaré el enlace para descargarlo. Después, escribiré
un script en Python para demostrar cómo se aplicaría la regresión logística a
este dataset.
He creado un dataset
ficticio para ilustrar la aplicación de la regresión logística en el contexto
de la educación superior. Puedes descargar el dataset desde el siguiente
enlace:
Descargar
Dataset de Educación Superior
Ahora, vamos a crear un
script en Python que utiliza este dataset para aplicar un modelo de regresión
logística. El objetivo es predecir si un estudiante será "Exitoso"
basándonos en sus características como edad, promedio de calificaciones, asistencia
y participación en actividades.
Explorar y Visualizar
Datos
Vamos a cargar el
dataset, obtener un resumen estadístico, y visualizar las distribuciones de las
variables.
Código para Exploración y
Visualización:
import pandas as pd
import seaborn as sns
import
matplotlib.pyplot as
plt
# Cargar el dataset
df = pd.read_csv('/content/dataset_educacion_superior.csv')
# Resumen estadístico
print(df.describe())
# Visualización de las distribuciones de las
variables independientes y la dependiente
sns.pairplot(df, hue='Exitoso')
plt.show()
RESULTADOS
ID_Estudiante Edad Promedio_Calificaciones Asistencia
\
count
100.000000 100.000000 100.000000 100.000000
mean
50.500000 23.160000 7.556246 83.986174
std
29.011492 3.240277 1.416127 8.792281
min
1.000000 18.000000 5.023477 70.351423
25%
25.750000 21.000000 6.438782 76.448763
50%
50.500000 23.000000 7.855542 83.321702
75%
75.250000 26.000000 8.588797 91.604272
max
100.000000 29.000000 9.994235 99.710168
Participacion_Actividades
Exitoso
count 100.000000 100.000000
mean 0.500000 0.360000
std 0.502519 0.482418
min 0.000000 0.000000
25% 0.000000 0.000000
50% 0.500000 0.000000
75% 1.000000 1.000000
max 1.000000 1.000000
Preparar los Datos para el Modelo
Dividiremos los datos en
características (X) y etiqueta (y), y luego en conjuntos de entrenamiento y
prueba.
Código para Preparar los
Datos:
from
sklearn.model_selection import
train_test_split
# Separar características y etiqueta
X = df.drop('Exitoso',
axis=1)
y = df['Exitoso']
# Dividir en entrenamiento y prueba
X_train, X_test, y_train, y_test =
train_test_split(X, y, test_size=0.3,
random_state=42)
Entrenar el Modelo
de Regresión Logística
Utilizaremos sklearn para
entrenar el modelo.
Código para Entrenar el
Modelo:
from
sklearn.linear_model import
LogisticRegression
# Crear el modelo de regresión logística
modelo = LogisticRegression()
# Entrenar el modelo
modelo.fit(X_train, y_train)
RESULTADOS
LogisticRegression
LogisticRegression()
from
sklearn.linear_model import
LogisticRegression
from
sklearn.metrics import
classification_report, roc_curve, roc_auc_score
import
matplotlib.pyplot as
plt
import seaborn as sns
# Cargando el dataset
df = pd.read_csv('/content/dataset_educacion_superior.csv')
# Preparando los datos para el modelo
X = df[['Edad',
'Promedio_Calificaciones',
'Asistencia', 'Participacion_Actividades']]
y = df['Exitoso']
# División en entrenamiento y prueba
X_train, X_test, y_train, y_test =
train_test_split(X, y, test_size=0.3,
random_state=42)
# Modelo de regresión logística
modelo = LogisticRegression()
modelo.fit(X_train, y_train)
# Coeficientes del modelo
coeficientes = pd.Series(modelo.coef_[0], index=X.columns)
# Predicciones y evaluación
y_pred = modelo.predict(X_test)
y_pred_proba = modelo.predict_proba(X_test)[:, 1]
reporte = classification_report(y_test, y_pred)
# Curva ROC
fpr, tpr, thresholds = roc_curve(y_test,
y_pred_proba)
auc = roc_auc_score(y_test, y_pred_proba)
# Graficando los coeficientes
plt.figure(figsize=(8, 5))
sns.barplot(x=coeficientes.values,
y=coeficientes.index)
plt.title('Coeficientes
del Modelo de Regresión Logística')
plt.xlabel('Coeficiente')
plt.ylabel('Variables')
plt.show()
# Graficando la curva ROC
plt.figure(figsize=(8, 5))
plt.plot(fpr, tpr, label=f'AUC = {auc:.2f}')
plt.plot([0,
1], [0, 1], linestyle='--', color='red') #
Línea base
plt.title('Curva ROC')
plt.xlabel('Tasa de
Falsos Positivos')
plt.ylabel('Tasa de
Verdaderos Positivos')
plt.legend()
plt.show()
reporte, auc
RESULTADOS
precision recall f1-score support\n\n 0 0.75
0.95 0.84 19\n 1 0.83 0.45 0.59 11\n\n accuracy 0.77 30\n macro avg 0.79 0.70
0.71 30\nweighted avg 0.78 0.77 0.75 30\n', 0.8421052631578947
Realizar
Predicciones y Evaluar el Modelo
Haremos predicciones y
evaluaremos el modelo utilizando la matriz de confusión y el informe de
clasificación.
Código para Predicciones
y Evaluación:
from
sklearn.metrics import
confusion_matrix, classification_report
# Predicciones
y_pred = modelo.predict(X_test)
# Matriz de confusión
conf_matrix = confusion_matrix(y_test, y_pred)
print(conf_matrix)
# Informe de clasificación
print(classification_report(y_test,
y_pred))
RESULTADOS
[[19 0]
[ 6 5]]
precision recall
f1-score support
0 0.76
1.00 0.86 19
1 1.00
0.45 0.62 11
accuracy 0.80 30
macro avg 0.88
0.73 0.74 30
weighted avg 0.85 0.80
0.78 30
Visualizar la
Frontera de Decisión
Para la
visualización de la frontera de decisión, seleccionaremos dos variables para
facilitar la visualización en un gráfico 2D.
Código para
Visualizar la Frontera de Decisión:
import numpy as np
# Seleccionar dos variables para la visualización
X_train_2d = X_train[['Promedio_Calificaciones', 'Asistencia']]
# Re-entrenar el modelo con solo dos
características
modelo_2d = LogisticRegression()
modelo_2d.fit(X_train_2d, y_train)
# Crear una malla para visualizar
x_min, x_max = X_train_2d.iloc[:, 0].min() - 1, X_train_2d.iloc[:, 0].max() + 1
y_min, y_max = X_train_2d.iloc[:, 1].min() - 1, X_train_2d.iloc[:, 1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.01), np.arange(y_min, y_max, 0.01))
# Predecir sobre la malla
Z = modelo_2d.predict(np.c_[xx.ravel(),
yy.ravel()])
Z = Z.reshape(xx.shape)
# Graficar la frontera de decisión
plt.contourf(xx, yy, Z, alpha=0.3)
plt.scatter(X_train_2d.iloc[:, 0], X_train_2d.iloc[:, 1], c=y_train, s=40, edgecolor='k')
plt.title('Frontera
de Decisión')
plt.xlabel('Promedio_Calificaciones')
plt.ylabel('Asistencia')
plt.show()
RESULTADOS
Conclusiones
Identificación de
Factores Clave:
La regresión
logística ayuda a identificar los factores que más influyen en el éxito
académico, como el promedio de calificaciones y la asistencia a clases. Esto es
crucial para desarrollar estrategias enfocadas en mejorar estos aspectos.
Predicción de
Riesgos Académicos:
El modelo puede
predecir con cierta precisión qué estudiantes están en riesgo de no tener
éxito. Esto permite intervenciones tempranas y personalizadas.
Información para
Políticas Educativas:
Los resultados
obtenidos pueden informar a los responsables de la formulación de políticas
educativas sobre áreas críticas que requieren atención, como el apoyo a
estudiantes con bajo rendimiento académico.
Base para la
Personalización del Aprendizaje:
Los modelos
predictivos como la regresión logística pueden ser la base para desarrollar
enfoques de aprendizaje más personalizados, adaptándose a las necesidades y
características de cada estudiante.
Reflexiones
Complejidad del
Contexto Educativo:
La educación es un
campo complejo influenciado por múltiples factores, tanto cuantitativos como
cualitativos. Mientras que la regresión logística maneja bien los factores
cuantitativos, es importante considerar también los aspectos cualitativos como
el bienestar emocional y el entorno social del estudiante.
Limitaciones del
Modelo:
La regresión
logística asume una relación lineal entre las variables independientes y el
logit de la variable dependiente. En la realidad, algunas de estas relaciones
pueden ser más complejas.
Ética y
Privacidad:
Al trabajar con
datos de estudiantes, es fundamental considerar aspectos éticos y de
privacidad. Los modelos predictivos deben utilizarse de manera responsable,
asegurando la confidencialidad y el respeto a los derechos de los estudiantes.
Necesidad de
Actualización y Validación Continua:
Los modelos deben
actualizarse y validarse periódicamente para garantizar su relevancia y
precisión, especialmente en un entorno educativo que está en constante
evolución.
En resumen, la
regresión logística es una herramienta poderosa en el ámbito de la educación
superior para analizar datos y generar insights valiosos. Sin embargo, su
aplicación debe ser cuidadosa, considerando tanto sus limitaciones como el
contexto más amplio de la educación. Además, es crucial complementar estos
análisis cuantitativos con enfoques cualitativos para obtener una comprensión
más completa y matizada de los desafíos y oportunidades en la educación
superior.



