Lab04 / app.py
Andy Florian Irakoze
initial commit
1fe2e68
import pandas as pd
import gradio as gr
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import MinMaxScaler
from sklearn.linear_model import LinearRegression
housing = pd.read_csv("housing.csv")
train_set, test_set = train_test_split(housing, test_size=0.2, random_state=10)
train_set_clean = train_set.dropna(subset=["total_bedrooms"])
train_labels = train_set_clean["median_house_value"].copy()
train_features = train_set_clean.drop("median_house_value", axis=1)
scaler = MinMaxScaler()
scaler.fit(train_features)
train_features_normalized = scaler.transform(train_features)
lin_reg = LinearRegression()
lin_reg.fit(train_features_normalized, train_labels)
def housing_price_prediction(longitude, latitude, housing_median_age, total_rooms, total_bedrooms, population, households, median_income):
input_data = {'longitude':longitude,
'latitude':latitude,
'housing_median_age':housing_median_age,
'total_rooms':total_rooms,
'total_bedrooms':total_bedrooms,
'population':population,
'households':households,
'median_income':median_income
}
features = pd.DataFrame(columns=['longitude', 'latitude', 'housing_median_age', 'total_rooms',
'total_bedrooms', 'population', 'households', 'median_income'])
features = features.append(input_data,ignore_index=True)
features_normalized = scaler.transform(features)
return lin_reg.predict(features_normalized)[0], None
longitude_input = gr.inputs.Slider(scaler.data_min_[0], scaler.data_max_[0], label = "Longitude")
latitude_input = gr.inputs.Slider(scaler.data_min_[1], scaler.data_max_[1], label = "Latitude")
housing_median_age_input = gr.inputs.Slider(scaler.data_min_[2], scaler.data_max_[2], step=1, label = "Housing median age (Year)")
total_rooms_input = gr.inputs.Slider(scaler.data_min_[3], scaler.data_max_[3], step=1, label = "Total rooms")
total_bedrooms_input = gr.inputs.Slider(scaler.data_min_[4], scaler.data_max_[4], step=1, label = "Total bedrooms")
population_input = gr.inputs.Slider(scaler.data_min_[5], scaler.data_max_[5], step=1, label = "Population")
household_input = gr.inputs.Slider(scaler.data_min_[6], scaler.data_max_[6], step=1, label = "Household")
median_income_input = gr.inputs.Slider(scaler.data_min_[7], scaler.data_max_[7], label = "Median income")
predicted_output = gr.outputs.Textbox(label = "Predicted housing prices")
image_output = gr.outputs.Image(label = "Visualize your location")
gr.Interface(fn=housing_price_prediction,
inputs=[longitude_input, latitude_input, housing_median_age_input, total_rooms_input, total_bedrooms_input, population_input, household_input, median_income_input],
outputs=[predicted_output, image_output]).launch()