El objetivo inicial del proyecto: detectar fraudes en alquileres de pisos en portales inmobiliarios.
La limitación de los datos disponibles hizo modificar el enfoque del proyecto y predecir una estimación del precio de la propiedad para poder comparar, ya que no se dispone de datos no sesgados que prueben los anuncios que realmente son fraude.
Se ha desarrollado un modelo de aprendizaje automático para predecir los precios de propiedades en Madrid capital usando RandomForestRegressor.
Se encuentra todo más detallado en el siguiente articulo de Medium:
RentwAIs: Predicción de precio de alquiler de vivienda
Este repositorio contiene el modelo entrenado en python para calcular estimaciones de precio. Si busca la app para usar el modelo, está en el repositorio /rentwais/app.
-
Se cargan con pandas los datos del CSV
'inmuebles.csv'
a un DataFrame. -
Se eliminan las columnas que no aportan datos como created_at, updated_at, titulo, id...
-
Se codifican con
sklearn.preprocessing.OneHotEncoder
las variables categóricas:- distrito
- tipovivienda
- calefaccion
- localidad
-
Del dataframe resultante se seleccionan solo las caracteristicas numéricas y se elimina la variable objetivo
precio
. -
Se entrenan todos los modelos de la lista de modelos, se comparan los resultados y se guarda en
best_model
el modelo que mejores resultados haya obtenido.modelos = [ RandomForestRegressor(), GradientBoostingRegressor(), PLSRegression(), XGBRegressor(), DecisionTreeRegressor(), ]
-
El modelo con mejores resultados (en este caso
RandomForestRegressor
) se exporta a un archivorfModel.pckl
para ser importado en la aplicación de consulta.
El notebook de Jupyter contiene visualizaciones de los datos así como de los resultados del modelo catalogados como 'chollos' distribuidos por distritos.
En el notebook hay además un ejemplo de otra manera de probar varios modelos y quedarse con el que mejor resultados obtiene, usando la libreria sklearn.model_selection.GridSearchCV
para testear varios modelos ajustando ciertos parámetros.
best_estimator_
devuelve cual es el mejor modelo de los testeados, que en este caso coincide con el mismo del otro método y con puntuaciones similares ( RandomForestRegressor
).