AutomatedML / app.py
harshnarayan12's picture
Upload 9 files
248e491 verified
import streamlit as st
import pandas as pd
import os
from intro import Intro # importing function from python file from same directory
st.set_page_config(
page_title="Automated ML",
page_icon="🤖",
layout="wide",
initial_sidebar_state="expanded",
)
page_bg_img_link = f"""
<style>
[data-testid="stAppViewContainer"]> .main{{
background-color: #FFDEE9;
background-image: linear-gradient(0deg, #B5FFFC 0%, #FFDEE9 100%);
}}
[data-testid="stHeader"]{{
background-color: rgba(0,0,0,0)
}}
[data-testid="stToolbar"]{{
right : 2 rem;
}}
[data-testid="stSidebar"] > div:first-child{{
background: linear-gradient(to right bottom,
rgba(285,205,205,0.7),
rgba(285,205,205,0.3));
}}
</style>
"""
st.markdown(page_bg_img_link, unsafe_allow_html=True)
# Import profiling capability
from ydata_profiling import profile_report
from streamlit_pandas_profiling import st_profile_report
# ML Pycaret Modules
from pycaret.classification import (
setup as classification_setup,
compare_models as classification_compare_model,
pull as classification_pull,
predict_model as classification_predict_model,
save_model as classification_save_model,
)
from pycaret.regression import (
setup as regression_setup,
compare_models as regression_compare_models,
pull as regression_pull,
predict_model as regression_predict_model,
save_model as regression_save_model,
)
from pycaret.clustering import (
setup as clustering_steup,
pull as clustering_pull,
create_model as clustering_create_model,
predict_model as clustering_predict_model,
plot_model as clustering_plot_model,
save_model as clustering_save_model,
)
from pycaret.anomaly import (
setup as anomaly_setup,
pull as anomaly_pull,
create_model as anomaly_create_model,
models as anomaly_models,
plot_model as anomaly_plot_model,
assign_model as anomaly_assign_model,
save_model as anomaly_save_model,
)
def main():
st.sidebar.image("https://www.onepointltd.com/wp-content/uploads/2020/03/inno2.png")
st.sidebar.title("AutoStreamML")
choice = st.sidebar.radio(
"Navigation", ["Instruction", "Upload", "Profiling", "ML", "Download"]
)
st.sidebar.info(
"This Application allows us to build an automated ML Pipeline using Streamlit, Pandas and PyCaret. And it's magic!"
)
if os.path.exists("Sourcedata.csv"):
df = pd.read_csv("Sourcedata.csv", index_col=None)
else:
df = None
## Section1 - Instruction ##
if choice == "Instruction":
Intro()
## Section2 - Upload ##
elif choice == "Upload":
upload_section(df)
## Section3 - Profiling dataset ##
elif choice == "Profiling":
profiling_section(df)
## Section4 - Machine Learning ##
elif choice == "ML":
ml_section(df)
## Section5 - Download pipeline ##
elif choice == "Download":
download_section()
## Section2 - Upload ##
def upload_section(df):
st.title("Upload Your Data for Modelling!")
file = st.file_uploader("Upload Your Dataset Here")
if file:
df = pd.read_csv(file, index_col=None)
df.to_csv("Sourcedata.csv", index=None)
st.dataframe(df)
## Section3 - Profiling dataset ##
def profiling_section(df):
st.title("Automated Exploratory Data Analysis")
if df is not None:
profile_report = df.profile_report()
st_profile_report(profile_report)
else:
st.info("Upload a dataset for profiling.")
## Section4 - Machine Learning ##
def ml_section(df):
st.title("Machine Learning Go 🤘🤘🤘")
model = st.radio(
"Select Your Model",
[
"Classification",
"Regression",
"Clustering",
"Anomaly Detection",
],
)
if model == "Classification":
classification_subsection(df)
elif model == "Regression":
regression_subsection(df)
elif model == "Clustering":
clustering_subsection(df)
elif model == "Anomaly Detection":
AnomalyDetection_subsection(df)
# Add other model subsections here
## for CLASSIFICATION
def classification_subsection(df):
st.subheader("Classification")
chosen_target = st.selectbox("Select Your Target for Classification", df.columns)
if st.button("Train Model"):
st.info("This is dataset")
st.dataframe(df.head())
classification_setup(df, target=chosen_target)
setup_df = classification_pull()
st.info("This is ML Experiment Settings ")
st.dataframe(setup_df)
best_model = classification_compare_model()
compare_df = classification_pull()
st.info("This is the ML Model")
st.dataframe(compare_df)
predict = classification_predict_model(best_model)
compare_df = classification_pull()
st.info("This is predicted value of best Model")
st.dataframe(predict)
classification_save_model(best_model, "best_model")
## for Regression
def regression_subsection(df):
st.subheader("Regression")
chosen_target = st.selectbox("Select Your Target for Regresssion", df.columns)
if st.button("Train Model"):
st.info("This is dataset")
st.dataframe(df.head())
regression_setup(df, target=chosen_target)
setup_df = regression_pull()
st.info("This is ML Experiment Settings ")
st.dataframe(setup_df)
best_model = regression_compare_models()
compare_df = regression_pull()
st.info("This is the ML Model")
st.dataframe(compare_df)
predict = regression_predict_model(best_model)
st.info("This is predicted value of best Model")
st.dataframe(predict)
regression_save_model(best_model, "best_model")
## for Clustering
def clustering_subsection(df):
st.subheader("Clustering")
st.info("We are using KMean Clustering Method : ")
if st.button("Train Model"):
st.info("This is dataset")
st.dataframe(df.head())
clustering_steup(df)
setup_df = clustering_pull()
st.info("This is ML Experiment Settings ")
st.dataframe(setup_df)
kmeans = clustering_create_model("kmeans")
created_model_df = clustering_pull()
st.info("This is the ML Kmean Clustering Model")
st.dataframe(created_model_df)
predict = clustering_predict_model(kmeans, data=df)
# predict_df = clustering_pull()
st.info(
"generates cluster labels using a trained model to Kmean Clustering Model"
)
st.dataframe(predict)
clustering_save_model(kmeans, "best_model")
plot_mod = clustering_plot_model(kmeans)
plot_mod
## for Anomaly Detection
def AnomalyDetection_subsection(df):
st.subheader("Anomaly Detection")
method = st.selectbox(
"Select Your method",
[
"iforest",
"knn",
"svm",
"abod",
"cluster",
],
)
if st.button("Train Model"):
st.info("This is dataset")
st.dataframe(df.head())
anomaly_setup(df, session_id=123)
setup_df = anomaly_pull()
st.info("This is ML Experiment Settings ")
st.dataframe(setup_df)
iforest = anomaly_create_model(method) # we use iforest model
models = anomaly_models()
st.info("We use these models for anomaly detection ! ")
st.dataframe(models)
st.info(
"predict anomaly labels to the dataset for a given model. (1 = outlier, 0 = inlier)"
)
predictions = anomaly_assign_model(iforest)
st.dataframe(predictions)
anomaly_save_model(iforest, "best_model")
plot_mod = anomaly_plot_model(iforest)
plot_mod
## Section5 - Download pipeline ##
def download_section():
st.title("Download trained pipeline!")
with open("best_model.pkl", "rb") as file:
st.download_button("Download", file, "trained_model.pkl")
st.markdown("""""")
st.markdown("""""")
st.markdown("""""")
st.markdown("""""")
st.markdown("""""")
st.markdown("""""")
st.markdown("""""")
st.markdown("""""")
st.markdown("""""")
with st.container():
col = st.columns([1])
# HARSH #
with col[0]:
st.write(
"This app was created by [Harsh Narayan](https://portfolio-7bwl.onrender.com/)"
)
if __name__ == "__main__":
main()