house_price_predictions / house_price.py
animonte's picture
Creaci贸n de la interfaz gr谩fica
4ba3f04
raw
history blame contribute delete
No virus
2.15 kB
import gradio as gr
from gradio import components
import pandas as pd
import numpy as np
from datasets import load_dataset
from sklearn.model_selection import train_test_split
from sklearn.metrics import r2_score
from xgboost import XGBRegressor
import datetime
# Carga del CSV desde huggingface
dataset = load_dataset("animonte/train_house_price")
# Lectura del CSV desde un data set
df = pd.DataFrame(dataset["train"])
# Selecci贸n de variables para el modelo
columns = ['GrLivArea', 'TotalBsmtSF', 'MoSold', 'YearBuilt', 'YearRemodAdd', 'LotFrontage', 'YrSold', 'BsmtFinSF1','OverallQual']
X = df.loc[:, columns ] # Variables predictoras
y = df['SalePrice'] # Variable objetivo
# Divisi贸n del dataframe para evitar el sobreajuste
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)
#Creamos una instancia con XGBClassifier
model_XGB = XGBRegressor(n_estimators=30, max_depth=2, learning_rate=.2, random_state=42)
#Entrenamos el modelo con los datos de entrenamiento
model_XGB.fit(X_train,y_train)
#Creamos el conjunto de entrenamiento
# prediction_XGB = model_XGB.predict(X_test)
# Interfaz gr谩fica del demo
def ui_predict(Superficie_casa, Superficie_sotano, Anio_construccion, Anio_remodelacion, Frente_terreno, Superficie_construida_terminada, calidad_construccion):
# Obtener la fecha y hora actual
fecha_actual = datetime.datetime.now()
# Obtener el mes y el a帽o de la fecha actual
Mes_venta = fecha_actual.month
Anio_venta = fecha_actual.year
inputs = [[Superficie_casa, Superficie_sotano, Mes_venta, Anio_construccion, Anio_remodelacion, Frente_terreno, Anio_venta, Superficie_construida_terminada, calidad_construccion]]
inputs = pd.DataFrame(inputs, columns= columns)
# Predicci贸n
predicciones = model_XGB.predict(inputs)
return predicciones[0]
output = components.Textbox(label='Precio obtenido con el XG BOOST Regressor')
demo = gr.Interface(
fn=ui_predict,
inputs=['number', "number","number","number", "number","number", gr.Slider(1, 10, step=1)],
outputs=output,
allow_flagging="never"
)
demo.launch()