CosmickVisions commited on
Commit
d376f1c
·
verified ·
1 Parent(s): d383635

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +42 -32
app.py CHANGED
@@ -1,8 +1,8 @@
1
  import streamlit as st
2
  import pandas as pd
3
- from pycaret.classification import *
4
- from pycaret.regression import *
5
- from pycaret.clustering import *
6
  from ydata_profiling import ProfileReport
7
  from streamlit_pandas_profiling import st_profile_report
8
  import os
@@ -27,7 +27,7 @@ if app_mode == "Data Upload":
27
  uploaded_file = st.file_uploader("Upload CSV Dataset", type=["csv"])
28
  if uploaded_file:
29
  df = pd.read_csv(uploaded_file)
30
- st.session_state.df = df
31
  st.write("---")
32
  st.subheader("Dataset Preview")
33
  st.dataframe(df.head(10))
@@ -52,48 +52,58 @@ elif app_mode == "Model Training":
52
  st.warning("Please upload a dataset first.")
53
  st.stop()
54
 
55
- df = st.session_state.df
56
  problem_type = st.selectbox("Problem Type", ["Classification", "Regression", "Clustering"])
57
  target = st.selectbox("Select Target Column", df.columns) if problem_type != "Clustering" else None
58
 
59
  if st.button("Setup PyCaret"):
60
  with st.spinner("Setting up PyCaret..."):
61
  if problem_type == "Classification":
62
- setup(data=df, target=target, session_id=123, verbose=False)
63
- st.session_state.problem_type = "Classification"
64
- st.session_state.setup_complete = True
65
  elif problem_type == "Regression":
66
- setup(data=df, target=target, session_id=123, verbose=False)
67
- st.session_state.problem_type = "Regression"
68
- st.session_state.setup_complete = True
69
  elif problem_type == "Clustering":
70
- setup(data=df, session_id=123, verbose=False)
71
- st.session_state.problem_type = "Clustering"
72
- st.session_state.setup_complete = True
73
  st.success("PyCaret setup complete! You can now train models.")
74
 
75
- if st.session_state.get("setup_complete", False):
76
  st.subheader("Train Models")
77
  if st.button("Compare Models"):
78
  with st.spinner("Comparing models..."):
79
- best_model = compare_models()
80
- st.session_state.best_model = best_model
 
 
 
 
 
81
  st.success(f"Best Model: {best_model}")
82
 
83
  if 'best_model' in st.session_state:
84
  st.subheader("Model Evaluation")
85
  if st.button("Evaluate Model"):
86
  with st.spinner("Evaluating model..."):
87
- if st.session_state.problem_type == "Classification":
88
- evaluate_model(st.session_state.best_model)
89
- elif st.session_state.problem_type == "Regression":
90
- evaluate_model(st.session_state.best_model)
91
- elif st.session_state.problem_type == "Clustering":
92
- evaluate_model(st.session_state.best_model)
93
  st.success("Model evaluation complete!")
94
 
95
  if st.button("Save Model"):
96
- save_model(st.session_state.best_model, "best_model")
 
 
 
 
 
97
  st.success("Model saved as `best_model.pkl`!")
98
  with open("best_model.pkl", "rb") as f:
99
  st.download_button("Download Model", f, file_name="best_model.pkl")
@@ -105,17 +115,17 @@ elif app_mode == "Validation & Exploration":
105
  st.stop()
106
 
107
  st.subheader("Model Performance")
108
- if st.session_state.problem_type == "Classification":
109
  st.write("Classification Report:")
110
- plot_model(st.session_state.best_model, plot="confusion_matrix", display_format="streamlit")
111
- plot_model(st.session_state.best_model, plot="auc", display_format="streamlit")
112
- elif st.session_state.problem_type == "Regression":
113
  st.write("Regression Metrics:")
114
- plot_model(st.session_state.best_model, plot="residuals", display_format="streamlit")
115
- plot_model(st.session_state.best_model, plot="error", display_format="streamlit")
116
- elif st.session_state.problem_type == "Clustering":
117
  st.write("Clustering Results:")
118
- plot_model(st.session_state.best_model, plot="cluster", display_format="streamlit")
119
 
120
  # Custom CSS
121
  st.markdown("""
 
1
  import streamlit as st
2
  import pandas as pd
3
+ from pycaret.classification import setup as classification_setup, compare_models as compare_classification_models, evaluate_model as evaluate_classification_model, save_model as save_classification_model, plot_model as plot_classification_model
4
+ from pycaret.regression import setup as regression_setup, compare_models as compare_regression_models, evaluate_model as evaluate_regression_model, save_model as save_regression_model, plot_model as plot_regression_model
5
+ from pycaret.clustering import setup as clustering_setup, compare_models as compare_clustering_models, evaluate_model as evaluate_clustering_model, save_model as save_clustering_model, plot_model as plot_clustering_model
6
  from ydata_profiling import ProfileReport
7
  from streamlit_pandas_profiling import st_profile_report
8
  import os
 
27
  uploaded_file = st.file_uploader("Upload CSV Dataset", type=["csv"])
28
  if uploaded_file:
29
  df = pd.read_csv(uploaded_file)
30
+ st.session_state['df'] = df
31
  st.write("---")
32
  st.subheader("Dataset Preview")
33
  st.dataframe(df.head(10))
 
52
  st.warning("Please upload a dataset first.")
53
  st.stop()
54
 
55
+ df = st.session_state['df']
56
  problem_type = st.selectbox("Problem Type", ["Classification", "Regression", "Clustering"])
57
  target = st.selectbox("Select Target Column", df.columns) if problem_type != "Clustering" else None
58
 
59
  if st.button("Setup PyCaret"):
60
  with st.spinner("Setting up PyCaret..."):
61
  if problem_type == "Classification":
62
+ classification_setup(data=df, target=target, session_id=123, verbose=False)
63
+ st.session_state['problem_type'] = "Classification"
64
+ st.session_state['setup_complete'] = True
65
  elif problem_type == "Regression":
66
+ regression_setup(data=df, target=target, session_id=123, verbose=False)
67
+ st.session_state['problem_type'] = "Regression"
68
+ st.session_state['setup_complete'] = True
69
  elif problem_type == "Clustering":
70
+ clustering_setup(data=df, session_id=123, verbose=False)
71
+ st.session_state['problem_type'] = "Clustering"
72
+ st.session_state['setup_complete'] = True
73
  st.success("PyCaret setup complete! You can now train models.")
74
 
75
+ if st.session_state.get('setup_complete', False):
76
  st.subheader("Train Models")
77
  if st.button("Compare Models"):
78
  with st.spinner("Comparing models..."):
79
+ if st.session_state['problem_type'] == "Classification":
80
+ best_model = compare_classification_models()
81
+ elif st.session_state['problem_type'] == "Regression":
82
+ best_model = compare_regression_models()
83
+ elif st.session_state['problem_type'] == "Clustering":
84
+ best_model = compare_clustering_models()
85
+ st.session_state['best_model'] = best_model
86
  st.success(f"Best Model: {best_model}")
87
 
88
  if 'best_model' in st.session_state:
89
  st.subheader("Model Evaluation")
90
  if st.button("Evaluate Model"):
91
  with st.spinner("Evaluating model..."):
92
+ if st.session_state['problem_type'] == "Classification":
93
+ evaluate_classification_model(st.session_state['best_model'])
94
+ elif st.session_state['problem_type'] == "Regression":
95
+ evaluate_regression_model(st.session_state['best_model'])
96
+ elif st.session_state['problem_type'] == "Clustering":
97
+ evaluate_clustering_model(st.session_state['best_model'])
98
  st.success("Model evaluation complete!")
99
 
100
  if st.button("Save Model"):
101
+ if st.session_state['problem_type'] == "Classification":
102
+ save_classification_model(st.session_state['best_model'], "best_model")
103
+ elif st.session_state['problem_type'] == "Regression":
104
+ save_regression_model(st.session_state['best_model'], "best_model")
105
+ elif st.session_state['problem_type'] == "Clustering":
106
+ save_clustering_model(st.session_state['best_model'], "best_model")
107
  st.success("Model saved as `best_model.pkl`!")
108
  with open("best_model.pkl", "rb") as f:
109
  st.download_button("Download Model", f, file_name="best_model.pkl")
 
115
  st.stop()
116
 
117
  st.subheader("Model Performance")
118
+ if st.session_state['problem_type'] == "Classification":
119
  st.write("Classification Report:")
120
+ plot_classification_model(st.session_state['best_model'], plot="confusion_matrix", display_format="streamlit")
121
+ plot_classification_model(st.session_state['best_model'], plot="auc", display_format="streamlit")
122
+ elif st.session_state['problem_type'] == "Regression":
123
  st.write("Regression Metrics:")
124
+ plot_regression_model(st.session_state['best_model'], plot="residuals", display_format="streamlit")
125
+ plot_regression_model(st.session_state['best_model'], plot="error", display_format="streamlit")
126
+ elif st.session_state['problem_type'] == "Clustering":
127
  st.write("Clustering Results:")
128
+ plot_clustering_model(st.session_state['best_model'], plot="cluster", display_format="streamlit")
129
 
130
  # Custom CSS
131
  st.markdown("""