HousePrice / app.py
TharaKavin's picture
Create app.py
44a3449 verified
import gradio as gr
import numpy as np
import pandas as pd
import joblib
# Load saved files
model = joblib.load("house_price_model.pkl")
scaler = joblib.load("scaler.pkl")
columns = joblib.load("columns.pkl")
def predict_price(bedrooms, bathrooms, sqft_living, sqft_lot, floors,
waterfront, view, condition, sqft_above,
sqft_basement, yr_built, yr_renovated, year, month):
# Create dataframe from user input
input_data = pd.DataFrame([[bedrooms, bathrooms, sqft_living, sqft_lot, floors,
waterfront, view, condition, sqft_above,
sqft_basement, yr_built, yr_renovated, year, month]],
columns=['bedrooms','bathrooms','sqft_living','sqft_lot','floors',
'waterfront','view','condition','sqft_above',
'sqft_basement','yr_built','yr_renovated','year','month'])
# Match training columns
input_data = input_data.reindex(columns=columns, fill_value=0)
# Scale input
input_scaled = scaler.transform(input_data)
# Predict log price
log_price = model.predict(input_scaled)
# Convert back to original price
price = np.exp(log_price)
return f"Predicted House Price: ₹ {int(price[0])}"
# Gradio Interface
interface = gr.Interface(
fn=predict_price,
inputs=[
gr.Number(label="Bedrooms", value=3),
gr.Number(label="Bathrooms", value=2),
gr.Number(label="Sqft Living", value=1800),
gr.Number(label="Sqft Lot", value=4000),
gr.Number(label="Floors", value=1),
gr.Number(label="Waterfront (0/1)", value=0),
gr.Number(label="View (0-4)", value=0),
gr.Number(label="Condition (1-5)", value=3),
gr.Number(label="Sqft Above", value=1500),
gr.Number(label="Sqft Basement", value=300),
gr.Number(label="Year Built", value=2005),
gr.Number(label="Year Renovated", value=0),
gr.Number(label="Year Sold", value=2014),
gr.Number(label="Month Sold", value=5)
],
outputs="text",
title="House Price Prediction App"
)
interface.launch(debug = True,share = False)