Spaces:
Build error
Build error
import tensorflow as tf | |
from tensorflow import keras | |
import numpy as np | |
import matplotlib.pyplot as plt | |
import pandas as pd | |
from sklearn.model_selection import train_test_split | |
from sklearn import preprocessing | |
import seaborn as sns | |
from sklearn.preprocessing import LabelEncoder | |
import pickle | |
import streamlit as st | |
st.title('Repair Time Prediction') | |
#DLoading the ataset | |
#df = pd.read_csv('repair_time_sample_50k_modified2.csv') | |
new_data = df | |
#df.drop(['SRU serial number','Date of Manufacture', 'Snag Description'], axis = 1, inplace=True) | |
# DATA from user | |
def user_report(): | |
Aircraft_Type = st.sidebar.selectbox('Aircraft Type',("AH-64","UH-60","UH-63","UH-62","UH-61","AH-65")) | |
if Aircraft_Type=="AH-64": | |
Aircraft_Type=0 | |
elif Aircraft_Type=="UH-60": | |
Aircraft_Type=2 | |
elif Aircraft_Type=="UH-63": | |
Aircraft_Type=5 | |
elif Aircraft_Type=="UH-62": | |
Aircraft_Type=4 | |
elif Aircraft_Type=="UH-61": | |
Aircraft_Type=3 | |
else: | |
Aircraft_Type=1 | |
manufacturer = st.sidebar.selectbox("Manufacturer", | |
("JKL Company", "GHI Company","AGS Company","ABC Company","ABC Company","XYZ Company" )) | |
if manufacturer=='JKL Company': | |
manufacturer=3 | |
elif manufacturer=="GHI Company": | |
manufacturer=2 | |
elif manufacturer=="AGS Company": | |
manufacturer=1 | |
elif manufacturer=="ABC Company": | |
manufacturer =0 | |
else: | |
manufacturer=4 | |
component_age = st.sidebar.slider('Component Age (in hours)', 500,2000, 600 ) | |
Issue_category= st.sidebar.selectbox("Issue Category", | |
("Display", "Unservicable","Bootup Problem","Engine Failure","Electrical Fault" )) | |
if Issue_category=='Display': | |
Issue_category=1 | |
elif Issue_category=="Unservicable": | |
Issue_category=4 | |
elif Issue_category=="Bootup Problem": | |
Issue_category=0 | |
elif Issue_category=="Engine Failure": | |
Issue_category=3 | |
else: | |
Issue_category=2 | |
Snag Severity = st.sidebar.selectbox("Snag Severity", | |
("Low", "Medium","High" )) | |
if Snag Severity =='Low': | |
Snag Severity=1 | |
elif Snag Severity=="Medium": | |
Snag Severity =2 | |
else: | |
Snag Severity=0 | |
Customer= st.sidebar.selectbox("Customer", | |
("IAF", "ARMY","NAVY" )) | |
if Customer =='IAF': | |
Customer=1 | |
elif Customer=="ARMY": | |
Customer =0 | |
else: | |
Customer=2 | |
Technician_Skill_level= st.sidebar.selectbox("Technician Skill level", | |
("Expert", "Intermediate","Novice" )) | |
if Technician_Skill_level =='Expert': | |
Technician_Skill_level=0 | |
elif Technician_Skill_level=="Intermediate": | |
Technician_Skill_level =1 | |
else: | |
Technician_Skill_level=2 | |
prior_maintainence = st.sidebar.selectbox('Prior Maintainence',("Regular","Irregular")) | |
if prior_maintainence =='Regular': | |
prior_maintainence=1 | |
else: | |
prior_maintainence=0 | |
Logistics_Time = st.sidebar.slider('Logistics Time (hr)', 2,21, 5 ) | |
total_operating_hours = st.sidebar.slider('Total Operating Hours)', 50,2000, 500 ) | |
operating_temperature = st.sidebar.slider('Operating Temperature', 10,25, 15 ) | |
previous_number_of_repairs = st.sidebar.number_input('Enter the Previous Number of Repairs Undergone 0 to 3 )',min_value=0,max_value=3,step=1) | |
Power_Input_Voltage= st.sidebar.slider('Power Input Voltage (V)',100,133,115) | |
user_report_data = { | |
'Aircraft Type':Aircraft_Type, | |
'Manufacturer':manufacturer, | |
'Component_Age':component_age, | |
'Issue_category':Issue_category, | |
'Snag Severity': Snag Severity, | |
'Customer':Customer, | |
'Technician Skill level':Technician_Skill_level, | |
'Prior Maintenance': prior_maintainence, | |
'Logistics Time (hr)':Logistics_Time, | |
'total_operating_hours':total_operating_hour, | |
'operating_temperature':operating_temperature, | |
'previous_number_of_repairs':previous_number_of_repairs, , | |
'Power_Input_Voltage':Power_Input_Voltage | |
} | |
report_data = pd.DataFrame(user_report_data, index=[0]) | |
return report_data | |
#Customer Data | |
user_data = user_report() | |
st.header("Component Details") | |
st.write(user_data) | |
def preprocess_dataset(X): | |
x = X.values #returns a numpy array | |
min_max_scaler = preprocessing.MinMaxScaler() | |
x_scaled = min_max_scaler.fit_transform(x) | |
X_df = pd.DataFrame(x_scaled) | |
return X_df | |
def label_encoding(data): | |
le = LabelEncoder() | |
cat = data.select_dtypes(include='O').keys() | |
categ = list(cat) | |
data[categ] = data[categ].apply(le.fit_transform) | |
# X = data.loc[:,data.columns!= "Time required for repair (in hours)"] | |
# y = data['Time required for repair (in hours)'] | |
# return X,y | |
return data | |
def prediction(df): | |
#X = df.loc[:,df.columns!= "Time required for repair (in hours)"] | |
#y = df['Time required for repair (in hours)'] | |
#X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.1, random_state=42) | |
#print(X_train.shape) | |
#print(X_test.shape) | |
X_test_encoded = label_encoding(df) | |
X_test_df = preprocess_dataset(X_test_encoded) | |
x_model = pickle.load(open('repair_time_model.pkl','rb')) | |
pred = x_model.predict(X_test_df) | |
#X_test['Actual_time_to_repair'] = y_test | |
#X_test['Predicted_time_to_repair'] = pred | |
#X_test.to_csv(r'/content/drive/MyDrive/Colab Notebooks/HAL/repair_time_prediction_results.csv') | |
#print(X_test.head()) | |
return pred | |
y_pred = prediction(user_data) | |
if st.button("Predict"): | |
st.subheader(f"Time required to Repairs the Component is {y_pred} in hours") |