suvradeepp commited on
Commit
ea1fbd3
·
verified ·
1 Parent(s): a5f0433

Create voting_regressor_viz.py

Browse files
Files changed (1) hide show
  1. voting_regressor_viz.py +99 -0
voting_regressor_viz.py ADDED
@@ -0,0 +1,99 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import matplotlib.pyplot as plt
2
+ import streamlit as st
3
+ from sklearn.linear_model import LinearRegression
4
+ from sklearn.svm import SVR
5
+ from sklearn.tree import DecisionTreeRegressor
6
+ from sklearn.ensemble import VotingRegressor
7
+ from sklearn.model_selection import train_test_split
8
+ import numpy as np
9
+ from sklearn.metrics import r2_score,mean_absolute_error
10
+
11
+ def train_voting_regressor(algos):
12
+
13
+ vr = VotingRegressor(algos)
14
+ vr.fit(X_train,y_train)
15
+
16
+ y_pred = vr.predict(X_test1)
17
+
18
+ r2 = r2_score(y_test1,y_pred)
19
+ mae = mean_absolute_error(y_test1,y_pred)
20
+
21
+ return vr,r2,mae
22
+
23
+ plt.style.use('seaborn-bright')
24
+
25
+ # Create a random dataset
26
+ rng = np.random.RandomState(1)
27
+ X = np.sort(5 * rng.rand(80, 1), axis=0)
28
+ y = np.sin(X).ravel()
29
+ y[::5] += 3 * (0.5 - rng.rand(16))
30
+
31
+ # Random state - 8
32
+ X_train,X_test1,y_train,y_test1 = train_test_split(X,y,test_size=0.1,random_state=8)
33
+
34
+ # Predict
35
+ X_test = np.arange(0.0, 5.0, 0.01)[:, np.newaxis]
36
+
37
+
38
+ st.sidebar.markdown("# Voting Regressor")
39
+
40
+ # Estimator Multi-select
41
+ estimators = st.sidebar.multiselect(
42
+ 'Estimators',
43
+ [
44
+ 'Linear Regression',
45
+ 'SVR',
46
+ 'Decision Tree Regressor'
47
+ ]
48
+ )
49
+
50
+ # Build estimators
51
+ algos = []
52
+
53
+ if 'Linear Regression' in estimators:
54
+ lr_reg = LinearRegression()
55
+ algos.append(('lr', lr_reg))
56
+ if 'SVR' in estimators:
57
+ svr_reg = SVR()
58
+ algos.append(('svr', svr_reg))
59
+ if 'Decision Tree Regressor' in estimators:
60
+ dt_reg = DecisionTreeRegressor(max_depth=5)
61
+ algos.append(('dt', dt_reg))
62
+
63
+ fig, ax = plt.subplots()
64
+ ax.scatter(X, y, s=100,color="yellow", edgecolor="black")
65
+ orig = st.pyplot(fig)
66
+
67
+
68
+ if st.sidebar.button("Run Algorithm"):
69
+ vr,r2,mae = train_voting_regressor(algos)
70
+ y_2 = vr.predict(X_test)
71
+ ax.plot(X_test, y_2, linewidth=3,label="Voting Regressor")
72
+ ax.legend()
73
+ orig.pyplot(fig)
74
+ figs = []
75
+ r2_scores = []
76
+ maes = []
77
+ for i in algos:
78
+ i[1].fit(X_train,y_train)
79
+ y_pred = i[1].predict(X_test)
80
+ y_pred1 = i[1].predict(X_test1)
81
+ r2_scores.append(r2_score(y_test1,y_pred1))
82
+ maes.append(mean_absolute_error(y_test1,y_pred1))
83
+ ax.plot(X_test, y_pred, linewidth=1,label=i[0],linestyle='dashdot')
84
+ ax.legend()
85
+
86
+ counter = 0
87
+ for i in st.beta_columns(len(algos)):
88
+ with i:
89
+ orig.pyplot(fig)
90
+ counter += 1
91
+
92
+ st.sidebar.subheader("Regression Metrics")
93
+ st.sidebar.text("R2 score Voting Regressor " + str(round(r2,2)))
94
+ st.sidebar.text("MAE Voting Regressor " + str(round(mae,2)))
95
+
96
+ for i in range(len(algos)):
97
+ st.sidebar.text("*"*35)
98
+ st.sidebar.text("R2 score for " + algos[i][0] + " " + str(round(r2_scores[i],2)))
99
+ st.sidebar.text("MAE score for " + algos[i][0] + " " + str(round(maes[i], 2)))