Spaces:
Build error
Build error
Update app.py
Browse files
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
|
| 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
|
| 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 |
-
|
| 63 |
-
st.session_state
|
| 64 |
-
st.session_state
|
| 65 |
elif problem_type == "Regression":
|
| 66 |
-
|
| 67 |
-
st.session_state
|
| 68 |
-
st.session_state
|
| 69 |
elif problem_type == "Clustering":
|
| 70 |
-
|
| 71 |
-
st.session_state
|
| 72 |
-
st.session_state
|
| 73 |
st.success("PyCaret setup complete! You can now train models.")
|
| 74 |
|
| 75 |
-
if st.session_state.get(
|
| 76 |
st.subheader("Train Models")
|
| 77 |
if st.button("Compare Models"):
|
| 78 |
with st.spinner("Comparing models..."):
|
| 79 |
-
|
| 80 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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
|
| 88 |
-
|
| 89 |
-
elif st.session_state
|
| 90 |
-
|
| 91 |
-
elif st.session_state
|
| 92 |
-
|
| 93 |
st.success("Model evaluation complete!")
|
| 94 |
|
| 95 |
if st.button("Save Model"):
|
| 96 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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
|
| 109 |
st.write("Classification Report:")
|
| 110 |
-
|
| 111 |
-
|
| 112 |
-
elif st.session_state
|
| 113 |
st.write("Regression Metrics:")
|
| 114 |
-
|
| 115 |
-
|
| 116 |
-
elif st.session_state
|
| 117 |
st.write("Clustering Results:")
|
| 118 |
-
|
| 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("""
|