File size: 2,534 Bytes
beb447e c9caa5d beb447e c9caa5d beb447e |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
import pandas as pd
import gradio as gr
#Get data
housing = pd.read_csv("housing.csv")
#Clean the data and sperate it into lables and features
data_set_clean = housing.dropna(subset=["total_bedrooms"])
data_labels = data_set_clean["median_house_value"].copy()
data_features = data_set_clean.drop("median_house_value", axis=1)
#Create scaller
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
scaler.fit(data_features)
#scale data
data_features_normalized = scaler.transform(data_features)
#Create decisiontree model
from sklearn.tree import DecisionTreeRegressor
tree_reg = DecisionTreeRegressor()
tree_reg.fit(data_features_normalized, data_labels)
#Task 1 Create inputs for gr
input_module_list = []
for col_name in data_features:
input_module_list.append(gr.inputs.Slider(minimum= data_features[col_name].min(),
maximum= data_features[col_name].max(),
label = col_name))
#Task 1.1 outputs
output_module1 = gr.outputs.Textbox(label = "Prediction")
output_module2 = gr.outputs.Image(label = "Output Image")
import matplotlib.pyplot as plt
import matplotlib.image as mping
#Task 2 the function
def run_model(input1, intput2, input3, input4, input5, input6, input7, input8):
#Takes the data point and makes the prediction
data_point = [[input1, intput2, input3, input4, input5, input6, input7, input8]]
scaled_data_point = scaler.transform(data_point)
output1 = tree_reg.predict(scaled_data_point)[0]
housing.plot(kind='scatter', x='longitude', y='latitude', alpha=.4,
s=housing['population']/100, label='population', figsize=(10,7),
c='median_house_value', cmap=plt.get_cmap('jet'), colorbar=True,
sharex=False)
plt.legend()
plt.scatter(x=input1, y=intput2, label="Your Point", c=output1, cmap=plt.get_cmap('jet'))
plt.annotate('Your Point', xy=(input1, intput2), xytext=(-116,40), arrowprops={'width':5,
'headwidth':10,
'headlength':10,
'shrink':0})
plt.savefig('newprediction.png')
output2 = mping.imread(f'newprediction.png')
return output1, output2
gr.Interface(fn=run_model,
inputs=input_module_list,
outputs=[output_module1,output_module2],
).launch() |