|
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() |