Spaces:
Build error
Build error
import pandas as pd | |
import numpy as np | |
import matplotlib.pyplot as plt | |
import seaborn as sns | |
from datetime import datetime | |
from datetime import timedelta | |
from sklearn.model_selection import RandomizedSearchCV, GridSearchCV, train_test_split | |
from sklearn.ensemble import RandomForestRegressor | |
from sklearn.metrics import r2_score | |
from sklearn.preprocessing import LabelEncoder | |
from sklearn.preprocessing import StandardScaler | |
import streamlit as st | |
st.title("Next Failure Prediction") | |
# Loading Dataset | |
df1 = pd.read_csv(r'Final_Next_failure_Dataset.csv') | |
# replace values in the Manufacturer column with company names | |
replace_dict1 = {1: 'ABC Company', 2: 'DEF Company', 3: 'GHI Company', 4: 'JKL Company', 5: 'XYZ Company'} | |
df1['Manufacturer'] = df1['Manufacturer'].replace(replace_dict1) | |
# replace values in the Last_Maintenance_Type column again | |
replace_dict2 = {1: 'Corrective', 2: 'Preventive'} | |
df1['Last_Maintenance_Type'] = df1['Last_Maintenance_Type'].replace(replace_dict2) | |
# replace values in the Prior_Maintenance column again | |
replace_dict3 = {1: 'Irregular', 2: 'Regular'} | |
df1['Prior_Maintenance'] = df1['Prior_Maintenance'].replace(replace_dict3) | |
# replace values in the Repair_Type column again | |
replace_dict4 = {1: 'Hardware', 2: 'Software'} | |
df1['Repair_Type'] = df1['Repair_Type'].replace(replace_dict4) | |
df = df1.copy() | |
# For Manufacturer | |
le_manu = LabelEncoder() | |
df['Manufacturer'] = le_manu.fit_transform(df['Manufacturer']) | |
# For Last_Maintenance_Type | |
le_last = LabelEncoder() | |
df['Last_Maintenance_Type'] = le_last.fit_transform(df['Last_Maintenance_Type']) | |
# For Prior_Maintenance | |
le_prior = LabelEncoder() | |
df['Prior_Maintenance'] = le_prior.fit_transform(df['Prior_Maintenance']) | |
# For Repair_Type | |
le_repair = LabelEncoder() | |
df['Repair_Type'] = le_repair.fit_transform(df['Repair_Type']) | |
#Splitting the data train ans test data | |
X = df.drop('Time_to_Failure_(hours)', axis = 1) | |
y = df['Time_to_Failure_(hours)'] | |
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state = 0) | |
# Train Random Forest Regression model | |
model = RandomForestRegressor(random_state = 0) | |
model.fit(X_train, y_train) | |
# Make predictions on train data | |
y_pred_train = model.predict(X_train) | |
# DATA from user | |
def user_report(): | |
manufacturer = st.sidebar.selectbox("Manufacturer", | |
("JKL Company", "GHI Company","DEF Company","ABC Company","XYZ Company" )) | |
if manufacturer=='JKL Company': | |
manufacturer=3 | |
elif manufacturer=="GHI Company": | |
manufacturer=2 | |
elif manufacturer=="DEF Company": | |
manufacturer=1 | |
elif manufacturer=="ABC Company": | |
manufacturer =0 | |
else: | |
manufacturer=4 | |
total_operating_hours = st.sidebar.slider('Total Operating Hours)', 1000,2500, 1500 ) | |
Usage_Intensity = st.sidebar.slider("Usage_Intensity(hous/day)",1,10,4) | |
Last_Maintenance_Type = st.sidebar.selectbox("Last Maintainece Type",("Corrective","Preventive")) | |
if Last_Maintenance_Type =='Corrective': | |
Last_Maintenance_Type=0 | |
else: | |
Last_Maintenance_Type=1 | |
Prior_Maintenance = st.sidebar.selectbox("Prior Maintainece",("Regular","Irregular")) | |
if Prior_Maintenance =='Regular': | |
Prior_Maintenance=1 | |
else: | |
Prior_Maintenance=0 | |
Average_Temperature= st.sidebar.slider('Average Temperature', 20,40, 35 ) | |
humidity = st.sidebar.slider('Humidity', 52,70, 55 ) | |
Vibration_Level = st.sidebar.slider('Vibration Level', 2,4, 2 ) | |
Pressure = st.sidebar.slider('Pressure', 28,32, 30 ) | |
Power_Input_Voltage= st.sidebar.slider('Power Input Voltage (V)',105,120,115) | |
Repair_Type = st.sidebar.selectbox("Repair Type",("Hardware","Software")) | |
if Repair_Type =='Software': | |
Repair_Type=1 | |
else: | |
Repair_Type=0 | |
load_factor = st.sidebar.number_input('Enter the Load Factor (any number between 0 to 1 )',min_value=0.0,max_value=1.0,step=0.1) | |
engine_speed=st.sidebar.slider('Engine Speed',7000,8000,7800) | |
Oil_Temperature=st.sidebar.slider('Oil Temperature',170,185,172) | |
user_report_data = { | |
'Manufacturer': manufacturer, | |
'Total_Operating_Hours': total_operating_hours, | |
'Usage_Intensity_(hours/day)': Usage_Intensity , | |
'Last_Maintenance_Type': Last_Maintenance_Type, | |
"Prior_Maintenance":Prior_Maintenance, | |
'Average_Temperature':Average_Temperature, | |
'Humidity': humidity, | |
'Vibration_Level': Vibration_Level, | |
'Pressure': Pressure, | |
'Power_Input_Voltage': Power_Input_Voltage, | |
'Repair_Type': Repair_Type , | |
'Load_Factor': load_factor, | |
'Engine_Speed': engine_speed, | |
'Oil_Temperature':Oil_Temperature | |
} | |
report_data = pd.DataFrame(user_report_data, index=[0]) | |
return report_data | |
#Customer Data | |
user_data = user_report() | |
st.subheader("Component Details") | |
st.write(user_data) | |
# define the prediction function | |
def prediction(user_data): | |
predicted_max_number_of_repairs = model.predict(user_data) | |
# return the predicted max number of repairs as output | |
return np.round(predicted_max_number_of_repairs[0]) | |
# Function calling | |
y_pred = prediction(user_data) | |
st.write("Click here to see the Predictions") | |
if st.button("Predict"): | |
st.subheader(f"Next Failure is {y_pred} hours ") |