Un modelo de Inteligencia Artificial (IA) es un sistema que aprende patrones a partir de datos para hacer predicciones o tomar decisiones.
Scikit-learn es una biblioteca de Python para el aprendizaje automático que proporciona herramientas para la clasificación, regresión, clustering y reducción de dimensionalidad.
Para construir un modelo en Scikit-learn, se sigue generalmente el siguiente flujo de trabajo:
Utilizando Scikit-Learn para construir un modelo predictivo con datos de Kaggle.
El dataset contiene información sobre propiedades en Melbourne, incluyendo precios, ubicación y características.
DESCARGAR
import pandas as pd
# Cargar los datos desde el archivo CSV
df = pd.read_csv('melb_data.csv')
# Mostrar las primeras filas del dataset
df.head()
Análisis exploratorio de datos (EDA) para entender la distribución y las relaciones entre variables.
import matplotlib.pyplot as plt
import seaborn as sns
# Visualizar la distribución de precios de las viviendas
sns.histplot(df['Price'], bins=50, kde=True)
plt.show()
# Relación entre número de habitaciones y precio
plt.figure(figsize=(8, 6))
sns.boxplot(x=df['Rooms'], y=df['Price'])
plt.xlabel("Número de Habitaciones")
plt.ylabel("Precio")
plt.title("Relación entre Habitaciones y Precio")
plt.show()
Eliminación de valores nulos, selección de características y división de los datos.
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import OneHotEncoder, StandardScaler
# Eliminar valores nulos para evitar problemas con el modelo
df = df.dropna()
# Seleccionar características relevantes para la predicción
features = ['Rooms', 'Bathroom', 'Landsize', 'BuildingArea', 'YearBuilt']
X = df[features] # Variables independientes
y = df['Price'] # Variable objetivo
# Dividir los datos en conjuntos de entrenamiento (80%) y prueba (20%)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
Probamos modelos de aprendizaje automático para encontrar el mejor rendimiento.
from sklearn.linear_model import LinearRegression
from sklearn.tree import DecisionTreeRegressor
from sklearn.ensemble import RandomForestRegressor
# Crear instancias de los modelos
lr = LinearRegression() # Regresión Lineal
dt = DecisionTreeRegressor() # Árbol de Decisión
rf = RandomForestRegressor(n_estimators=100, random_state=42) # Random Forest
Entrenamos los modelos utilizando los datos de entrenamiento.
# Diccionario para almacenar los modelos
models = {
'Linear Regression': lr,
'Decision Tree': dt,
'Random Forest': rf
}
# Entrenar cada modelo
for name, model in models.items():
model.fit(X_train, y_train) # Entrenar el modelo
Evaluamos el rendimiento de los modelos utilizando métricas como RMSE y R².
from sklearn.metrics import mean_squared_error, r2_score
results = {}
# Evaluar cada modelo
for name, model in models.items():
y_pred = model.predict(X_test) # Hacer predicciones
rmse = mean_squared_error(y_test, y_pred) # Error cuadrático medio
r2 = r2_score(y_test, y_pred) # Coeficiente de determinación
results[name] = (rmse, r2)
print(f"{name}: RMSE = {rmse:.2f}, R² = {r2:.2f}")
Visualizamos las métricas de rendimiento para comparar los modelos.
# Comparación visual de los modelos
plt.figure(figsize=(8, 6))
names = list(results.keys())
rmse_values = [results[name][0] for name in names]
r2_values = [results[name][1] for name in names]
# Gráfico de RMSE
plt.subplot(2, 1, 1)
plt.bar(names, rmse_values, color=['blue', 'green', 'red'])
plt.ylabel("RMSE")
plt.title("Comparación de Modelos - RMSE")
# Gráfico de R²
plt.subplot(2, 1, 2)
plt.bar(names, r2_values, color=['blue', 'green', 'red'])
plt.ylabel("R²")
plt.title("Comparación de Modelos - R²")
plt.tight_layout()
plt.show()
Revisión de los resultados obtenidos y consideraciones para mejorar el modelo.
El modelo Random Forest mostró el mejor desempeño, pero podríamos mejorarlo ajustando hiperparámetros.