"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Predecir los precios de la vivienda con Scikit-learn: una guía completa

Predecir los precios de la vivienda con Scikit-learn: una guía completa

Publicado el 2024-11-02
Navegar:333

Predicting House Prices with Scikit-learn: A Complete Guide

El aprendizaje automático está transformando varias industrias, incluida la inmobiliaria. Una tarea común es predecir los precios de la vivienda en función de diversas características, como la cantidad de dormitorios, baños, pies cuadrados y ubicación. En este artículo, exploraremos cómo crear un modelo de aprendizaje automático utilizando scikit-learn para predecir los precios de la vivienda, cubriendo todos los aspectos, desde el preprocesamiento de datos hasta la implementación del modelo.

Tabla de contenido

  1. Introducción a Scikit-learn
  2. Definición del problema
  3. Recopilación de datos
  4. Preprocesamiento de datos
  5. Selección de funciones
  6. Entrenamiento de modelos
  7. Evaluación del modelo
  8. Ajuste del modelo (optimización de hiperparámetros)
  9. Implementación del modelo
  10. Conclusión

1. Introducción a Scikit-learn

Scikit-learn es una de las bibliotecas más utilizadas para el aprendizaje automático en Python. Ofrece herramientas simples y eficientes para el análisis y modelado de datos. Ya sea que se trate de clasificación, regresión, agrupamiento o reducción de dimensionalidad, scikit-learn proporciona un amplio conjunto de utilidades para ayudarlo a crear modelos sólidos de aprendizaje automático.

En esta guía, construiremos un modelo de regresión utilizando scikit-learn para predecir los precios de la vivienda. Repasemos cada paso del proceso.


2. Definición del problema

La tarea que nos ocupa es predecir el precio de una casa en función de sus características como:

  • Número de dormitorios
  • Número de baños
  • Área (en pies cuadrados)
  • Ubicación

Este es un problema de aprendizaje supervisado en el que la variable objetivo (precio de la vivienda) es continua, lo que la convierte en una tarea de regresión. Scikit-learn proporciona una variedad de algoritmos para la regresión, como Regresión lineal y Bosque aleatorio, que usaremos en este proyecto.


3. Recopilación de datos

Puedes utilizar un conjunto de datos del mundo real como el conjunto de datos de Kaggle House Prices o recopilar tus propios datos de una API pública.

Aquí tienes una muestra de cómo podrían verse tus datos:

Dormitorios Baños Área (pies cuadrados) Ubicación Precio ($)
3 2 1500 Bostón 300.000
4 3 2000 Seattle 500.000

La variable objetivo aquí es el Precio.


4. Preprocesamiento de datos

Antes de introducir los datos en un modelo de aprendizaje automático, debemos preprocesarlos. Esto incluye manejar valores faltantes, codificar características categóricas y escalar los datos.

Manejo de datos faltantes

La falta de datos es común en conjuntos de datos del mundo real. Podemos completar los valores faltantes con una medida estadística como la mediana o eliminar filas con datos faltantes:

data.fillna(data.median(), inplace=True)

Codificación de características categóricas

Dado que los modelos de aprendizaje automático requieren entrada numérica, necesitamos convertir características categóricas como Ubicación en números. Codificación de etiquetas asigna un número único a cada categoría:

from sklearn.preprocessing import LabelEncoder
encoder = LabelEncoder()
data['Location'] = encoder.fit_transform(data['Location'])

Escalado de características

Es importante escalar funciones como Área y Precio para garantizar que estén en la misma escala, especialmente para algoritmos sensibles a la magnitud de las funciones. Así es como aplicamos el escalado:

from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

5. Selección de funciones

No todas las funciones contribuyen por igual a la variable objetivo. La selección de funciones ayuda a identificar las funciones más importantes, lo que mejora el rendimiento del modelo y reduce el sobreajuste.

En este proyecto, utilizamos SelectKBest para seleccionar las 5 características principales según su correlación con la variable objetivo:

from sklearn.feature_selection import SelectKBest, f_regression
selector = SelectKBest(score_func=f_regression, k=5)
X_new = selector.fit_transform(X, y)

6. Entrenamiento modelo

Ahora que hemos preprocesado los datos y seleccionado las mejores funciones, es hora de entrenar el modelo. Usaremos dos algoritmos de regresión: Regresión lineal y Bosque aleatorio.

Regresión lineal

La regresión lineal ajusta una línea recta a través de los datos, minimizando la diferencia entre los valores previstos y reales:

from sklearn.linear_model import LinearRegression
linear_model = LinearRegression()
linear_model.fit(X_train, y_train)

Bosque aleatorio

Random Forest es un método conjunto que utiliza múltiples árboles de decisión y promedia sus resultados para mejorar la precisión y reducir el sobreajuste:

from sklearn.ensemble import RandomForestRegressor
forest_model = RandomForestRegressor(n_estimators=100)
forest_model.fit(X_train, y_train)

División de prueba de tren

Para evaluar qué tan bien se generalizan nuestros modelos, dividimos los datos en conjuntos de entrenamiento y prueba:

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X_new, y, test_size=0.2, random_state=42)

7. Evaluación del modelo

Después de entrenar los modelos, debemos evaluar su rendimiento utilizando métricas como Error cuadrático medio (MSE) y R cuadrado (R²).

Error cuadrático medio (MSE)

MSE calcula la diferencia al cuadrado promedio entre los valores previstos y reales. Un MSE más bajo indica un mejor rendimiento:

from sklearn.metrics import mean_squared_error
mse = mean_squared_error(y_test, y_pred)

R cuadrado (R²)

R² nos dice qué tan bien el modelo explica la varianza en la variable objetivo. Un valor de 1 significa predicción perfecta:

from sklearn.metrics import r2_score
r2 = r2_score(y_test, y_pred)

Compare el rendimiento de los modelos de regresión lineal y bosque aleatorio utilizando estas métricas.


8. Ajuste del modelo (optimización de hiperparámetros)

Para mejorar aún más el rendimiento del modelo, podemos ajustar los hiperparámetros. Para Random Forest, los hiperparámetros como n_estimators (número de árboles) y max_ Depth (profundidad máxima de los árboles) pueden afectar significativamente el rendimiento.

A continuación se explica cómo utilizar GridSearchCV para la optimización de hiperparámetros:

from sklearn.model_selection import GridSearchCV

param_grid = {
    'n_estimators': [50, 100, 200],
    'max_depth': [None, 10, 20]
}

grid_search = GridSearchCV(RandomForestRegressor(), param_grid, cv=5)
grid_search.fit(X_train, y_train)

best_model = grid_search.best_estimator_

9. Implementación del modelo

Una vez que haya entrenado y ajustado el modelo, el siguiente paso es la implementación. Puede utilizar Flask para crear una aplicación web sencilla que proporcione predicciones.

Aquí hay una aplicación Flask básica para ofrecer predicciones de precios de viviendas:

from flask import Flask, request, jsonify
import joblib

app = Flask(__name__)

# Load the trained model
model = joblib.load('best_model.pkl')

@app.route('/predict', methods=['POST'])
def predict():
    data = request.json
    prediction = model.predict([data['features']])
    return jsonify({'predicted_price': prediction[0]})

if __name__ == '__main__':
    app.run()

Guarde el modelo entrenado usando joblib:

import joblib
joblib.dump(best_model, 'best_model.pkl')

De esta manera, puedes hacer predicciones enviando solicitudes a la API.


10. Conclusión

En este proyecto, exploramos todo el proceso de construcción de un modelo de aprendizaje automático utilizando scikit-learn para predecir los precios de la vivienda. Desde el preprocesamiento de datos y la selección de funciones hasta el entrenamiento, la evaluación y la implementación del modelo, cada paso se cubrió con ejemplos de código prácticos.

Ya sea que sea nuevo en el aprendizaje automático o esté buscando aplicar scikit-learn en proyectos del mundo real, esta guía proporciona un flujo de trabajo integral que puede adaptar para diversas tareas de regresión.

Siéntete libre de experimentar con diferentes modelos, conjuntos de datos y técnicas para mejorar el rendimiento y la precisión de tu modelo.

Regresión #AI ​​#Análisis de datos #Preprocesamiento de datos #MLModel #RandomForest #LinearRegression #Flask #APIDevelopment #RealEstate #TechBlog #Tutorial #DataIngineering #DeepLearning #PredictiveAnalytics #DevCommunity

Declaración de liberación Este artículo se reproduce en: https://dev.to/amitchandra/predicting-house-prices-with-scikit-learn-a-complete-guide-2kd7?1 Si hay alguna infracción, comuníquese con [email protected] para borrarlo
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3