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