import streamlit as st from streamlit_extras import add_vertical_space import streamlit.components.v1 as components from annotated_text import annotated_text st.set_page_config(layout='wide') import pandas as pd import json import plotly.express as px import plotly.graph_objs as go from src.Predictive_Maintenance.pipelines.prediction_pipeline import prediction with st.sidebar: st.title("Predictive Maintenance Project") choice = st.radio("Choose from the below options:", ["Main","EDA","Monitoring Reports","Performance Measures","Prediction"]) if choice == "Main": with open("frontend/main/main_page.md", "r") as file: readme_contents = file.read() st.markdown(readme_contents) if choice == "EDA": st.title('Exploratory Data Analysis') st.header('Question 1') st.write("What is the frequency distribution of the target label 'machine failure' in the dataset? How many instances indicate a failure compared to those that do not??") st.image("reports/q1.png") st.write("**The success rate of the machine is 96.52% and the highest type of failure is HDF(Heat Dissipation Failure) with 1.15% failure rate**") st.header('Question 2') st.write("How is the 'productID' variable distributed across the dataset? Specifically, how many instances correspond to low, medium, and high-quality variants?") st.image("reports/q2.png") st.write("**Low quality varient makes up majority of the dataset with 60% of the data, followed by medium quality varient with 30% and high quality varient with 10%**") st.header('Question 3') st.write("What are the minimum, maximum, and typical values for 'air temperature', 'process temperature', 'rotational speed', 'torque', and 'tool wear'?") st.write("Are there any significant outliers in these variables?") st.image("reports/q3.png") st.write("**Rotational speed may or may not be actual outliers, therefore we'll keep them in the dataset for now.**") st.header('Question 4') st.write("Is there any correlation between the continuous variables and the 'machine failure' label? For example, does the tool wear increase the likelihood of machine failure?") st.image("reports/q4.png") st.write("**Null Hypothesis: There is no significant relationship between the different colums and Machine Failure**") st.write("**Alternate Hypothesis: There is a significant relationship between the tool wear and the machine failure label**") st.image("reports/h0.png") st.header('Question 5') st.write("Is there any correlation between the categorical variable 'productID' and the continuous variable? For example, is the 'rotational speed' higher for high-quality products than for low-quality products? ") st.image("reports/q5.png") st.write("**Process Temperature seems to have an effect on high quality varient machines. Therefore we can say that Process Temperature is correlated with machine type.**") st.header('Question 6') st.write("Are there any significant interactions or non-linear relationships between the variables that could be important for predictive maintenance? For example, does torque increase non-linearly with rotational speed?") st.image("reports/q5.png") st.write("**Process Temperature seems to have an effect on high quality varient machines. Therefore we can say that Process Temperature is correlated with machine type.**") st.header('Question 7') st.write("Are there any discernible patterns or anomalies in the timing of machine failures?How do machine failure rates change over time? ") st.image("reports/q5.png") st.write("**Process Temperature seems to have an effect on high quality varient machines. Therefore we can say that Process Temperature is correlated with machine type.**") st.header('Question 8') st.write("Do the distributions of continuous variables differ significantly across various product types?") st.image("reports/q5.png") # st.write("**Process Temperature seems to have an effect on high quality varient machines. Therefore we can say that Process Temperature is correlated with machine type.**") st.header('Question 9') st.write("How does machine failure frequency vary with different operating conditions, such as changes in air temperature and rotational speed?") st.image("reports/q5.png") st.write("**Process Temperature seems to have an effect on high quality varient machines. Therefore we can say that Process Temperature is correlated with machine type.**") if choice == "Performance Measures": st.title("Model 1") annotated_text(("Best Model 1", "Random Forest Classifier")) st.image("reports/model1n.png") st.title("Model 2") annotated_text(("Best Model 2", "Random Forest Classifier-registered")) st.image("reports/model2n.png") if choice == "Monitoring Reports": options = st.selectbox('Choose the reports: ',('Data Report', 'Model 1 report', 'Model 2 report')) if options=='Data Report': with open("reports/data_drift.html", "r",encoding="utf-8") as f: html_report = f.read() components.html(html_report, scrolling=True, height=700) if options=='Model 1 report': with open("reports/classification_performance_report.html", "r",encoding="utf-8") as f: html_report = f.read() components.html(html_report, height=750, scrolling=True) if options=='Model 2 report': with open("reports/classification_performance_report2.html", "r",encoding="utf-8") as f: html_report = f.read() components.html(html_report, height=750, scrolling=True) if choice == "Prediction": st.title('Predictive Maintenance') st.write("**Please enter the following parameters**") type = st.selectbox( 'Type',('Low', 'Medium', 'High')) st.write('You selected:', type) rpm = st.number_input('RPM', value=1500.0) st.write('The current rpm is ', rpm) torque = st.number_input('Torque', value=75) st.write('The current rpm is ', torque) tool_wear = st.number_input('Tool Wear', value=25.00) st.write('The current rpm is ', tool_wear) air_temp = st.number_input('Air Temperature', value=35.4) st.write('The current rpm is ', air_temp) process_temp = st.number_input('Process Temperature', value=46.65) st.write('The current rpm is ', process_temp) if st.button("Predict"): result1, result2 = prediction(type, rpm, torque, tool_wear, air_temp, process_temp) st.write("Machine Failure?: ", result1) st.write("Type of Failure: ", result2) #type, rpm, torque, tool_wear, air_temp, process_temp