|
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") |
|
|
|
df1 = pd.read_csv(r'Final_Next_failure_Dataset.csv') |
|
|
|
|
|
|
|
|
|
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_dict2 = {1: 'Corrective', 2: 'Preventive'} |
|
df1['Last_Maintenance_Type'] = df1['Last_Maintenance_Type'].replace(replace_dict2) |
|
|
|
|
|
|
|
replace_dict3 = {1: 'Irregular', 2: 'Regular'} |
|
df1['Prior_Maintenance'] = df1['Prior_Maintenance'].replace(replace_dict3) |
|
|
|
|
|
|
|
replace_dict4 = {1: 'Hardware', 2: 'Software'} |
|
df1['Repair_Type'] = df1['Repair_Type'].replace(replace_dict4) |
|
|
|
df = df1.copy() |
|
|
|
|
|
|
|
le_manu = LabelEncoder() |
|
df['Manufacturer'] = le_manu.fit_transform(df['Manufacturer']) |
|
|
|
|
|
|
|
|
|
le_last = LabelEncoder() |
|
df['Last_Maintenance_Type'] = le_last.fit_transform(df['Last_Maintenance_Type']) |
|
|
|
|
|
|
|
le_prior = LabelEncoder() |
|
df['Prior_Maintenance'] = le_prior.fit_transform(df['Prior_Maintenance']) |
|
|
|
|
|
|
|
le_repair = LabelEncoder() |
|
df['Repair_Type'] = le_repair.fit_transform(df['Repair_Type']) |
|
|
|
|
|
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) |
|
|
|
|
|
|
|
model = RandomForestRegressor(random_state = 0) |
|
model.fit(X_train, y_train) |
|
|
|
|
|
|
|
|
|
y_pred_train = model.predict(X_train) |
|
|
|
|
|
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 |
|
|
|
|
|
user_data = user_report() |
|
st.subheader("Component Details") |
|
st.write(user_data) |
|
|
|
|
|
|
|
def prediction(user_data): |
|
|
|
predicted_max_number_of_repairs = model.predict(user_data) |
|
|
|
|
|
return np.round(predicted_max_number_of_repairs[0]) |
|
|
|
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 ") |