Spaces:
Sleeping
Sleeping
| import matplotlib.pyplot as plt | |
| import streamlit as st | |
| from sklearn.linear_model import LinearRegression | |
| from sklearn.svm import SVR | |
| from sklearn.tree import DecisionTreeRegressor | |
| from sklearn.ensemble import VotingRegressor | |
| from sklearn.model_selection import train_test_split | |
| import numpy as np | |
| from sklearn.metrics import r2_score,mean_absolute_error | |
| def train_voting_regressor(algos): | |
| vr = VotingRegressor(algos) | |
| vr.fit(X_train,y_train) | |
| y_pred = vr.predict(X_test1) | |
| r2 = r2_score(y_test1,y_pred) | |
| mae = mean_absolute_error(y_test1,y_pred) | |
| return vr,r2,mae | |
| plt.style.use('seaborn-bright') | |
| # Create a random dataset | |
| rng = np.random.RandomState(1) | |
| X = np.sort(5 * rng.rand(80, 1), axis=0) | |
| y = np.sin(X).ravel() | |
| y[::5] += 3 * (0.5 - rng.rand(16)) | |
| # Random state - 8 | |
| X_train,X_test1,y_train,y_test1 = train_test_split(X,y,test_size=0.1,random_state=8) | |
| # Predict | |
| X_test = np.arange(0.0, 5.0, 0.01)[:, np.newaxis] | |
| st.sidebar.markdown("# Voting Regressor") | |
| # Estimator Multi-select | |
| estimators = st.sidebar.multiselect( | |
| 'Estimators', | |
| [ | |
| 'Linear Regression', | |
| 'SVR', | |
| 'Decision Tree Regressor' | |
| ] | |
| ) | |
| # Build estimators | |
| algos = [] | |
| if 'Linear Regression' in estimators: | |
| lr_reg = LinearRegression() | |
| algos.append(('lr', lr_reg)) | |
| if 'SVR' in estimators: | |
| svr_reg = SVR() | |
| algos.append(('svr', svr_reg)) | |
| if 'Decision Tree Regressor' in estimators: | |
| dt_reg = DecisionTreeRegressor(max_depth=5) | |
| algos.append(('dt', dt_reg)) | |
| fig, ax = plt.subplots() | |
| ax.scatter(X, y, s=100,color="yellow", edgecolor="black") | |
| orig = st.pyplot(fig) | |
| if st.sidebar.button("Run Algorithm"): | |
| vr,r2,mae = train_voting_regressor(algos) | |
| y_2 = vr.predict(X_test) | |
| ax.plot(X_test, y_2, linewidth=3,label="Voting Regressor") | |
| ax.legend() | |
| orig.pyplot(fig) | |
| figs = [] | |
| r2_scores = [] | |
| maes = [] | |
| for i in algos: | |
| i[1].fit(X_train,y_train) | |
| y_pred = i[1].predict(X_test) | |
| y_pred1 = i[1].predict(X_test1) | |
| r2_scores.append(r2_score(y_test1,y_pred1)) | |
| maes.append(mean_absolute_error(y_test1,y_pred1)) | |
| ax.plot(X_test, y_pred, linewidth=1,label=i[0],linestyle='dashdot') | |
| ax.legend() | |
| counter = 0 | |
| for i in st.beta_columns(len(algos)): | |
| with i: | |
| orig.pyplot(fig) | |
| counter += 1 | |
| st.sidebar.subheader("Regression Metrics") | |
| st.sidebar.text("R2 score Voting Regressor " + str(round(r2,2))) | |
| st.sidebar.text("MAE Voting Regressor " + str(round(mae,2))) | |
| for i in range(len(algos)): | |
| st.sidebar.text("*"*35) | |
| st.sidebar.text("R2 score for " + algos[i][0] + " " + str(round(r2_scores[i],2))) | |
| st.sidebar.text("MAE score for " + algos[i][0] + " " + str(round(maes[i], 2))) |