Ejemplo aprendizaje supervisado
Un ejemplo serio y real de aprendizaje supervisado sería la predicción del precio de viviendas basado en características como el tamaño, número de habitaciones, ubicación, etc. Usaremos un dataset popular llamado “California Housing”, que contiene datos reales sobre precios de viviendas en el estado de California.
A continuación, te explico el proceso con un ejemplo en Python utilizando el conjunto de datos de “California Housing” y la biblioteca scikit-learn para construir un modelo de regresión supervisado.
Paso 1: Cargar y Explorar los Datos
Primero, cargamos los datos y realizamos una exploración básica.
# Importamos las bibliotecas necesarias
import pandas as pd
from sklearn.datasets import fetch_california_housing
# Cargar el conjunto de datos de California Housing
data = fetch_california_housing(as_frame=True)
df = data.frame
# Mostrar las primeras filas del dataset
print(df.head())
Esto mostrará algo como:
MedInc | HouseAge | AveRooms | AveBedrms | Population | AveOccup | Latitude | Longitude | MedHouseVal |
---|---|---|---|---|---|---|---|---|
8.3252 | 41.0 | 6.9841 | 1.0238 | 322.0 | 2.5556 | 37.88 | -122.23 | 4.526 |
8.3014 | 21.0 | 6.2381 | 0.9719 | 2401.0 | 2.1098 | 37.86 | -122.22 | 3.585 |
Paso 2: Preparación de los Datos
Antes de entrenar un modelo, separamos las características (variables de entrada) de la variable objetivo (precio de la vivienda, en este caso).
# Separar características (X) y la variable objetivo (y)
X = df.drop('MedHouseVal', axis=1) # Todos los datos menos el valor de la casa
y = df['MedHouseVal'] # Valor medio de la vivienda
Paso 3: Dividir los Datos en Conjunto de Entrenamiento y Prueba
Dividimos los datos en conjuntos de entrenamiento y prueba para evaluar el rendimiento del modelo.
from sklearn.model_selection import train_test_split
# Dividir los datos en 80% entrenamiento y 20% prueba
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
Paso 4: Entrenar un Modelo de Regresión
Usamos un Regressor Lineal (regresión lineal) para entrenar un modelo que prediga el precio de la vivienda.
from sklearn.linear_model import LinearRegression
# Crear el modelo de regresión lineal
model = LinearRegression()
# Entrenar el modelo con los datos de entrenamiento
model.fit(X_train, y_train)
Paso 5: Evaluar el Modelo
Calculamos las predicciones sobre el conjunto de prueba y evaluamos el rendimiento del modelo usando la métrica de R² (coeficiente de determinación) y el Error Cuadrático Medio (MSE).
from sklearn.metrics import mean_squared_error, r2_score
# Predecir los valores para el conjunto de prueba
y_pred = model.predict(X_test)
# Evaluar el modelo
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)
print(f'Error Cuadrático Medio: {mse:.2f}')
print(f'R² (Coeficiente de Determinación): {r2:.2f}')
Paso 6: Interpretación de los Resultados
- El Error Cuadrático Medio (MSE) indica el promedio de los errores al cuadrado entre los valores reales y predichos. Un MSE bajo es deseable.
- El Coeficiente de Determinación (R²) muestra qué tan bien las variables de entrada explican la variación en los precios de la vivienda. Un valor de R² cercano a 1 indica un buen ajuste del modelo.
Por ejemplo, si obtenemos un MSE de 0.5
y un R² de 0.6
, significa que el modelo no es perfecto, pero puede explicar el 60% de la variación en los precios de las viviendas.
Paso 7: Visualización de los Resultados
Podemos visualizar la relación entre los valores predichos y los reales.
import matplotlib.pyplot as plt
# Comparar los valores predichos frente a los valores reales
plt.scatter(y_test, y_pred)
plt.xlabel('Valores Reales')
plt.ylabel('Valores Predichos')
plt.title('Comparación de Valores Reales vs Predichos')
plt.show()
Conclusión
Este es un ejemplo real de aprendizaje supervisado en el que utilizamos un modelo de regresión lineal para predecir precios de viviendas basado en características como la edad de la casa, número de habitaciones, ingresos medios, etc.
- Se ha demostrado el flujo típico de un problema supervisado: cargar los datos, dividirlos en conjuntos de entrenamiento y prueba, entrenar un modelo, evaluar su rendimiento y, finalmente, interpretar los resultados.